2013-06-24 3 views
0

Powershell에서 데이터 유형과 관련하여 두 가지 초급 질문이 있습니다.Powershell에서 foreach에 대한 서로 다른 입력

  1. 왜 두 명령의 결과가 다른가요? 목록으로 포맷 된 경우 - -

    PS > $test = {"a", "b", "c"} 
    PS > foreach ($item in $test) { $item | Out-Host } 
    "a", "b", "c" 
    PS > $test = "a", "b", "c" 
    PS > foreach ($item in $test) { $item | Out-Host } 
    a 
    b 
    c 
    
  2. 한 명령 데이터를 반환, 다음과 같습니다

    Changes    : {Change instance 10406282 
             ChangeType: Edit 
             (...) 
    
             , Change instance 25906333 
             ChangeType: Edit 
             (...) 
             } 
    

    그것은 다음과 같습니다 항목 목록의 일종이다. 어떻게 그들을 통해 foreach 수 있습니까?

답변

2

첫 번째 질문 당신은 다음과 같은 경우 : $ 테스트 = { "A", "B", "C"} $ test.GetType()

$test = "a", "b", "c" 
$test.GetType() 

당신 것 첫 번째 목적은 알 ScriptBlock 번째 배열을

번째 질문 인

결과를 객체에 할당하고 위에서 반복 할 때 반복합니다.

간단한 예 :

$result = (Get-TfsItemHistory $/<projectName> -all -user $name -Recurse -server $tfs) 
$result | foreach {$item = $_; Write-Host $item; Write-Host $item.ChangeType;} 
+0

두 번째 대답에 간단한 예제를 제공해주십시오. 첫 번째 대답은 명확합니다. – Spook

+0

사용하는 명령을 제공 할 수 있습니까? –

+0

그럴 수도 있지만 그 명령은 tfs 유틸리티에서 나온 것이므로 그 결과를 쉽게 재생산하지 못할 수도 있습니다. 그것은'Get-TfsItemHistory $/ -all -user $ name -Recurse -server $ tfs'입니다. 비슷한 케이스를 제공 할 수 있습니다. 그만큼 절실합니다. – Spook

0

{...}, 당신은 루프가 3 회를 실행하지만, 그렇지 않은하는 스크립트 블록 생각 만듭니다는 (하나의 반복 만 해당), 그냥 스크립트 블록의 내용을 반환 .

쉼표로 구분 된 항목은 항목 (배열)의 모음을 만듭니다. 컬렉션을 반복 할 때 컬렉션의 각 항목을 반복합니다.

관련 문제