수색…


소개

변수는 값을 저장하는 데 사용됩니다. 값을 모든 유형으로 지정하면 콘솔 / 스크립트 전체에서 값을 사용할 수 있도록 어딘가에 값을 저장해야합니다. PowerShell의 변수 이름은 $ Variable1 에서와 같이 $로 시작하고 값은 $ Variable1 = "Value 1" 처럼 =를 사용하여 지정됩니다 .PowerShell은 많은 수의 변수 유형을 지원합니다. 정수, 십진수, 배열 및 버전 번호 또는 IP 주소와 같은 고급 유형조차도 포함 할 수 있습니다.

단순 변수

powershell의 모든 변수는 미국 달러 기호 ( $ )로 시작합니다. 가장 간단한 예는 다음과 같습니다.

$foo = "bar"

이 명령문은 foo 라는 변수에 문자열 값 "bar"를 할당합니다.

변수 제거

메모리에서 변수를 제거하려면 Remove-Item cmdlet을 사용하면됩니다. 참고 : 변수 이름에는 $ 포함되지 않습니다.

Remove-Item Variable:\foo

Variable 에는 대부분의 * -item cmdlet이 파일 시스템처럼 작동 할 수 있도록하는 공급자가 있습니다.

변수를 제거하는 또 다른 방법은 Remove-Variable cmdlet 및 해당 별칭 인 rv를 사용하는 것입니다.

$var = "Some Variable" #Define variable 'var' containing the string 'Some Variable'
$var #For test and show string 'Some Variable' on the console

Remove-Variable -Name var
$var 

#also can use alias 'rv'
rv var

범위

변수의 기본 범위 는 둘러싼 컨테이너입니다. 스크립트 외부 나 다른 컨테이너의 경우 범위는 Global 입니다. 스코프 를 지정하기 위해 변수 이름 $scope:varname 접두사가 붙습니다 $scope:varname like so :

$foo = "Global Scope"
function myFunc {
    $foo = "Function (local) scope"
    Write-Host $global:foo
    Write-Host $local:foo
    Write-Host $foo
}
myFunc
Write-Host $local:foo
Write-Host $foo

산출:

    Global Scope
    Function (local) scope
    Function (local) scope
    Global Scope
    Global Scope

CmdLet 출력 읽기

기본적으로 powershell은 출력을 호출하는 엔터티에 반환합니다. 아래 예를 고려해보십시오.

Get-Process -Name excel   

이것은 단순히 이름과 일치하는 실행중인 프로세스를 호출하는 엔터티에 반환합니다. 이 경우 PowerShell 호스트. 그것은 다음과 같은 것을 인쇄합니다.

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id  SI ProcessName                                                                                                                     
-------  ------    -----      ----- -----   ------     --  -- -----------                                                                                                                     
   1037      54    67632      62544   617     5.23   4544   1 EXCEL 

이제 출력에 변수를 지정하면 아무 것도 인쇄하지 않습니다. 물론 변수는 출력을 유지합니다. (그것은 문자열이됩니다, 객체 - 모든 유형의 문제)

$allExcel = Get-Process -Name excel

따라서 동적 이름으로 변수를 지정하려는 시나리오가 있다고 가정 해 -OutVariable 매개 변수를 사용할 수 있습니다.

Get-Process -Name excel -OutVariable AllRunningExcel

여기에 '$'이 누락되어 있습니다. 이 두 할당 간의 주요 차이점은 출력을 AllRunningExcel 변수에 할당하는 것과 별개로 출력한다는 것입니다. 다른 변수에 할당하도록 선택할 수도 있습니다.

$VarOne = Get-Process -Name excel -OutVariable VarTwo

위의 시나리오는 매우 드물지만 변수 $ VarOne과 $ VarTwo는 같은 값을 갖습니다.

이제 이것을 생각해보십시오.

Get-Process -Name EXCEL -OutVariable MSOFFICE
Get-Process -Name WINWORD -OutVariable +MSOFFICE

첫 번째 문은 단순히 Excel 프로세스를 처리하여 MSOFFICE 변수에 할당 한 다음 MS 워드 프로세스가 실행되고 MSOFFICE의 기존 값에 "추가"됩니다. 그것은 이와 같이 보일 것입니다.

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id  SI ProcessName                                                                                                                     
-------  ------    -----      ----- -----   ------     --  -- -----------                                                                                                                     
   1047      54    67720      64448   618     5.70   4544   1 EXCEL                                                                                                                           
   1172      70    50052      81780   584     1.83  14968   1 WINWORD     

여러 변수의 목록 할당

Powershell은 변수를 여러 번 할당 할 수 있으며 배열이나 목록과 같은 거의 모든 것을 처리합니다. 이것은 다음과 같이하는 대신에 :

$input = "foo.bar.baz"
$parts = $input.Split(".")
$foo = $parts[0]
$bar = $parts[1]
$baz = $parts[2]

다음과 같이하면됩니다.

$foo, $bar, $baz = $input.Split(".")

Powershell은리스트와 같은 방식으로 대입을 처리하기 때문에 목록에 더 많은 값이 있으면 할당 할 변수 목록의 값보다 더 많은 값이 있으면 마지막 변수는 나머지 값의 배열이됩니다. 즉, 다음과 같은 작업을 수행 할 수도 있습니다.

$foo, $leftover = $input.Split(".") #Sets $foo = "foo", $leftover = ["bar","baz"]
$bar = $leftover[0] # $bar = "bar"
$baz = $leftover[1] # $baz = "baz"

배열

Powershell의 배열 선언은 다른 변수를 인스턴스화하는 것과 거의 같습니다. 즉, $name = 구문을 사용합니다. 배열의 항목은 쉼표 ( , )로 구분하여 선언됩니다.

$myArrayOfInts = 1,2,3,4
$myArrayOfStrings = "1","2","3","4"

arry에 추가하기

배열에 추가하는 것은 + 연산자를 사용하는 것처럼 간단합니다.

$myArrayOfInts = $myArrayOfInts + 5
//now contains 1,2,3,4 & 5!

배열을 함께 결합하기

다시 이것은 + 연산자를 사용하는 것만 큼 간단합니다.

$myArrayOfInts = 1,2,3,4
$myOtherArrayOfInts = 5,6,7
$myArrayOfInts = $myArrayOfInts + $myOtherArrayOfInts
//now 1,2,3,4,5,6,7


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow