- PowerShell
- 도움말
- 기본 정보
- 별칭
- 변수
- Command Line Argument
- 기본 문법
- 함수
- 모듈
- 스크립트 모듈
- 동적 모듈
- 유용한 명령어
- 참고 문헌
PowerShell
PowerShell 7.4.3
pwsh ~.ps1
PowerShell Script의 확장자는 ps1을 사용 한다.
PowserShell은 .NET에서 구축된 명령줄 shell 및 script 언어 입니다.
cmdlet : Native PowerShell 명령
PowerShell 7.4 version
PSHOME : C:/Program Files/PowerShell/7
실행 파일 : pwsh.exe
$PSHOME/profile.ps1
C:/Users/User/Documents/PowerShell/profile.ps1
PowerShell 5.1 version
PSHOME : C:/Windows/System32/WindowsPowerShell/v1.0
실행 파일 : powershell.exe
$PSHOME/profile.ps1
C:/Users/User/Documents/WindowsPowerShell/profile.ps1
도움말
#--- 도움말 정보
Get-Help -Name Get-Help
Get-Help -Category Cmdlet
Get-Help -Name Get-Service
Get-Help -Name Get-Service -Full
Get-Help -Name Get-Service -Detailed
Get-Help -Name Get-Service -Examples
Get-Help -Name Get-Service -Online
Get-Help -Name Get-Service -Parameter Noun
Get-Help -Name Get-Service -Parameter *
Get-Help -Name Get-Service -ShowWindow
man Get-Service
help Get-Service -Full
help Get-Command -Full | Out-GridView
Get-Help -Name Get-Command -Full | Out-GridView
#--- 명령어 정보
Get-Command
Get-Command *-Service
Get-Command -Verb Get
Get-Command -Noun Service
Get-Command -CommandType Alias
Get-Command -CommandType Function
Get-Command -CommandType Script
Get-Command Get-Service -Syntax
Get-ChildItem -?
#--- 서비스 정보
Get-Service -Name w32time
Get-Service | Where-Object Name -eq w32time
Get-Service -Name w32time | Get-Member
Get-Command -ParameterType ServiceController
Get-Service -Name w32time | Select-Object -Property *
Get-Service -Name w32time | Get-Member -MemberType Method
(Get-Service -Name w32time).Stop()
Get-Service -Name w32time | Start-Service -PassThru
#--- Process 정보
Get-Process -Name PowerShell
Get-Process -Name PowerShell | Get-Member
#--- 모듈 정보
Find-Module -Name MrToolkit
Find-Module -Name MrToolkit | Install-Module
Update-Help #--- 도움말 업데이트
#--- cmdlet 명명 표준
Get-Verb
기본 정보
$PSVersionTable #--- Version
#--- 실행 정책
#--- Restricted : Script 파일 (~.ps)실행 불가
#--- RemoteSigned : Script 파일 (~.ps1) 실행 가능
#--- Unrestricted
Get-ExecutionPolicy
Get-ExecutionPolicy -List
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
별칭
#--- 별칭 관리
Get-Alias
Get-alias cls
Set-Alias -Name gi -Value Get-Item
변수
#--- 변수 관리
#--- $변수명
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap
Get-ChildItem variable:
Get-ChildItem env:
$env:SystemRoot
$env:LIB_PATH='/usr/local/lib'
Command Line Argument
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Write-Host $args[0]
기본 문법
#--- -eq, -ne, -gt, -lt
$now = Get-Date
# $day = $now.DayOfWeek
$day = Get-Date -UFormat "%A"
Write-Output $now
if (($day -eq '토요일') -Or ($day -eq '일요일')) {
./zztest01.ps1
}
if (~ -eq $True) { #--- If문
# if (-Not ~)
} elseif (~) {
} else {
}
switch (~) {
# switch -wildcard (~) {
# switch -regex (~) {
# switch (1, 2, 3, 4, 5) {
~ {}
{$_ -gt 3} {}
default {}
}
for ($i = 0; $i -lt 10; $i++) {
}
foreach ($arg in $args) {
}
while (~) {
}
함수
#--- 함수
function Get-Version {
# [CmdletBinding()]
# [CmdletBinding(SupportsShouldProcess)]
param (
# [ValidateNotNullOrEmpty()]
# [Parameter(Mandatory)] #--- 필수 입력
[string]$ComputerName = "Desktop"
# [string[]]$ComputerNames
)
$PSVersionTable.PSVersion
}
Get-Version
Get-Command -Name Get-Version -Syntax
(Get-Command -Name Get-Version).Parameters.Keys
Get-ChildItem -Path Function:G* #--- G로 시작하는 함수목록
Get-ChildItem -Path Function:Get-Version | Remove-Item
function Get-MrParameterCount {
param (
[string[]]$ParameterName
)
foreach ($Parameter in $ParameterName) {
$Results = Get-Command -ParameterName $Parameter -ErrorAction SilentlyContinue
[pscustomobject]@{
ParameterName = $Parameter
NumberOfCmdlets = $Results.Count
}
}
}
Get-MrParameterCount -ParameterName ComputerName, Computer, ServerName, Host, Machine
모듈
스크립트 모듈
~.psm1
#--- MyScriptModule.psm1 파일
function Get-MrPSVersion {
$PSVersionTable
}
function Get-MrComputerName {
$env:COMPUTERNAME
}
Export-ModuleMember -Function Get-MrComputerName
#--- 모듈의 함수 실행
#--- $env:PSModulePath
#--- $env:PSModulePath -split ';
Import-Module MyScriptModule.psm1
Get-Module -Name MyScriptModule
Get-MrComputerName
동적 모듈
New-Module 명령어로 만들어지는 모듈
New-Module -Name MyModule -ScriptBlock {
function Return-MrOsVersion {
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property @{label='OperatingSystem';expression={$_.Caption}}
}
Export-ModuleMember -Function Return-MrOsVersion
} | Import-Module
유용한 명령어
Get-Location #--- 현재 폴더
Get-Locaiton | Out-Host -Paging #--- 한 페이지식 정보 표시
Get-Location | Get-Member #--- 반환되는 개체의 정보 표시
(Get-Location).ToString()
Set-Location -Path ~ [-PassThru]
Push-Location -Path ~
Pop-Location
Write-Host "~" #--- 글씨 표시
참고 문헌
분류: [OS]
최종 수정일: 2024-09-30 12:26:18
이전글 :
다음글 :