2013-08-07 5 views
0

저는 powershell에 익숙해 지도록 간단한 스크립트를 작성하고 있습니다.Powershell - 해시 값을 인쇄 할 수 없습니다.

이 스크립트 해시 명령 라인에

$states = @($args) 

$states 

write-host Color is $states.color 

에 입력 파라미터를 읽고 난 후 다음 명령

.\shapes_n_colors.ps1 $shape $size $color 
으로 프로그램을 호출
$shape = 'circle'; $color = 'pink'; $size = 'large' 

다음 값

세트

그리고 다음 출력을 얻습니다.

circle 
large 
pink 
Color is 

$ states.color가 비어있는 이유를 알아낼 수 없습니다. 나는

http://technet.microsoft.com/en-us/library/hh847780.aspx이 어디에서 잘못 가고, 나는이 artical를 따라하고

"컬러 핑크는"출력을 기대하고 있었다 ??? $ 인수가 이미 배열이며, @()가 아니라 : -

답변

1

은 어디서부터 시작 ... 모든

먼저 확실하지 당신이 어떤 시점에서 해시를 생성하지 않는 ... @($args) 아무것도하지 않습니다 표현식이 배열을 생성하는지 확인하는 데 유용합니다. 해시 문자는 @{}입니다.

다음 : 스크립트는 전달 된 변수에 어떤 이름을 사용했는지 전혀 알 수 없습니다. 그것은 세 개의 문자열을 볼 수 있습니다. 나는 (기본적으로도 위치되도록 호출하는 스크립트는 크게 변하지 않을 것이다) 이름 매개 변수를 얻을 수 param()을 사용하는 것이 좋습니다 것입니다 :

param (
    $Shape, 
    $Size, 
    $Color 
) 

Write-Host Color is $Color 

당신이 당신의 구문을 시도 할 때 예상되는 결과를 생성합니다. 그러나 더 기다려라. ;) 이것으로 매개 변수 순서를 기억할 필요없이 스크립트를 실행할 수 있습니다 :

.\shapes_n_colors.ps1 -Color White -Shape Circle -Size Small 

이 매개 변수는 매개 변수로 작성됩니다.

관련 문제