ⓟrogramming/PowerShell
PowerShell Script - 변수
뚱땡이 우주인
2018. 6. 26. 22:58
파워셸에서는 변수를 VARIABLE: 이라는 PSDrive에 저장하고 관리한다.
PSDrive는 디스크 드라이브처럼 다루는 데이터 저장소로 이 드라이브에서 변경하거나 확인, 제거할 수 있다.
변수를 관리하는 별도의 명령 집합도 제공한다.
PS > Get-Command -Noun Variable CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Clear-Variable 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet Get-Variable 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet New-Variable 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet Remove-Variable 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet Set-Variable 3.1.0.0 Microsoft.PowerShell.Utility파워셸에서는 새로운 파워셸 세션을 열 때마다 고유한 VARIABLE: 드라이브를 갖는다.
이 드라이브에서는 셸 동작을 제어하는 내장변수 몇 가지가 포함된다.
이들 내장 변수 중의 일부는 읽기만 가능하고 수정이 불가능한 상수다.
예를들어, $ShellId는 일기 전용 변수지만, $Verbose Preference는 변경할 수 있다.
변수이름
중괄호({})를 사용해 감싸면 중간에 공백이 있는 다른 문자나 단어를 사용할 수 있다.
다음과 같은 예는 모두 정상적인 변수이다.
- X
- UserName
- Number5
- Moved_Svr
- {System Path}
변수를 선언할때 $를 변수명 앞에 붙인다.
$ 표시는 파워셀 엔진에 변수 자체가 아니라 변수의 내용을 액세스하고자 한다는 의도를 알리는 것이다.
# var 변수에 daily 저장 PS > $var = 'daily' # var dp 700에 들어갈 것 같지만 실제는 daily라는 새로운 변수가 만들어지고 여기에 700 값이 들어간다. PS > Set-Variable -Name $var -Value 700 PS > $var daily PS > $daily 700 # var 변수의 값을 바꾸기 원한 것이라면 다음과 같이 고쳐야 한다. PS > Set-Variable -Name var -Value 700 PS > $var 700
변수의 형식
PS > $a = Get-Process PS > $a | Get-Member TypeName: System.Diagnostics.Process
기본적으로 파워셸의 처리 단위는 개체(PSObject)이므로 굳이 특정 형식을 지정할 필요가 없다.
그렇지만 변수에 형색을 꼭 지정해야 할 경우 다음과 같다.
[데이터 형식] $변수명
예) [int]$Num=42
[CmdletBinding()] Param( # Parameter help description [Parameter(Mandatory = $false)] [string]$From = "김도균", [Parameter(Mandatory = $true)] [string] $To, [Parameter(Mandatory = $false)] [string] $Cc = "steelflea@outlook.com", [Parameter(Mandatory = $true)] [string] $Subject, [Parameter(Mandatory = $false)] [string] $Body = "Sent from PowerShell", [Parameter(Mandatory = $true)] [pscredential] $Cred = (Get-Credential) ) $SmtpSvr = "smtp.live.com" $SmtpPort = "587" Send-MailMessage -From $From -To $To -Cc $Cc ` -Subject $Subject -Body $Body -SmtpServer $SmtpSvr ` -Port $SmtpPort -UseSsl -Credential $Cred -Encoding utf8 # 사용자 지정 매개변수를 정할 때 스크립트에서 사용될 파워셀 명령의 매개변수와 일관성을 갖도록 만드는 것이 좋다.