2013-09-16 5 views
0
$hostList = cat C:\hostfile.csv 

foreach($_ in $hostList){ 
    Invoke-Command -ComputerName $_ -ScriptBlock { 
    ... 
    } 
hostfile.csv의 내용은

(테스트 용) :원격 연결

localhost,127.0.0.1 

이 .csv 파일은 헤더 않고, 하나의 라인입니다.

Invoke-Command : One or more computer names is not valid. If you are trying to pass a UR 
I, use the -ConnectionUri parameter or pass URI objects instead of strings. 

것은 내가 foreach 잘못을 정의하는 건가요하거나 $_에서 .CSV의 값을 기입하지 않을 수 있습니다 : 문제는 내가 다음과 같은 오류가 있다는 것입니다?

EDIT : 결국 실제 IP 주소와 호스트 이름으로 .csv를 확장하고 싶습니다.

답변

0

$hostList = cat C:\hostfile.csv을 호출 한 후에 배열에 문자열이 없으므로 문제가 발생합니다.

쉼표로 문자열을 분할해야합니다. 에 구성되지 않은 WinRM이 어쩌면

$hostList = (cat C:\hostfile.csv).Split(','); 

foreach($_ in $hostList){ 
    Invoke-Command -ComputerName $_ -ScriptBlock { 
    ... 
    } 
+0

, 모든 값이 한 줄에 있음을 언급하는 것을 잊었다. IP 또는 호스트 이름에 연결하려고합니다. 입력 해 주셔서 감사합니다! –

+1

@SiemHermans는 업데이트를 살펴보고 감사 할 필요가 없습니다. 답변을 올리거나 답장으로 표시 할 때 (두 가지 모두 수행 할 수 있음) –

+0

좋아요, ','로 나누면됩니다. 별도의 값. 이러한 별도의 값을 추가하면 .csv를 가져 오는 것만으로는 $ hostList가 배열이됩니다. 옳은? –

0

: 모든 값이 한 줄에 위의 COE 아래로 변경해야하기 때문에

$hostList = cat C:\hostfile.csv 

foreach($_ in $hostList){ 
    $line = $_.Split(','); 
    $host = $line[0]; 
    $ip = $line[1]; 
    Invoke-Command -ComputerName $host -ScriptBlock { 
    ... 
    } 

UPDATE

: SO 코드는 다음과 같은 수 IP 주소로 연결 허용 invoke-command를 사용하기 전에 주소를 호스트 이름으로 해결할 수 있습니까?

은 BTW 당신은 ​​호스트를 얻을 수 있도록 행을 분리해야합니다 :

죄송합니다
$hostList | |% { 
    $_ -split ',' | % { 
     Invoke-Command -ComputerName [System.Net.Dns]::GetHostEntry($_).hostname -ScriptBlock { 
      ... 
     } 
    } 
} 
+0

IP 주소 나 호스트 이름을 채울 때 작동합니다. 내가 더 많은 값을 연속적으로하려고 할 때 물건이 미친다. –

+0

@SiemHermans ok 수정보기 –