2013-07-10 5 views
5

나는 이것을 알아 내려고 노력하고 있습니다. 나는 다른 기사를 보았고 모든 것을 시도했지만 아무데도 못 가고있다. 다른 PS 스크립트에 인수로 배열을 전달하려고합니다. 여기에 내가 뭘하려고하는지 :Invoke-Command를 사용하여 배열을 다른 스크립트에 전달

$IPArray = Get-Content C:\ListofIps.txt 
Invoke-Command -Computername $server -Credential $cred -FilePath "C:\script.ps1" -ArgumentList (,$IPArray) 

5 개의 값은 내가 호출하는 스크립트로 전달되지 않습니다. 사전에

고마워, 얘들 아, 난 정말 당신이 줄 수있는 모든 도움을 ... 감사

+0

왜 $ IPArray 앞에 쉼표가 있고 괄호 안에 넣는 이유가 무엇입니까? $ IPArray를 인수 목록으로 전달하려면'-ArgumentList $ IPArray'를 사용하십시오. –

+0

빠른 답장을 보내 주셔서 감사합니다, Adi. [this thread] (http://stackoverflow.com/questions/7152740/how-to-pass-an-array-as-a-parameter-to-another-script)에 따르면 괄호와 쉼표는 - 인수를 배열로 보려면 ArgumentList입니다. 나는 두 가지 방법으로 시도했지만 어느 것도 효과가 없었다. – Sameer

+1

script.ps1에 인수를 허용하는 param() 문이 있습니까? $ server의 test.ps1 파일에 다음을 입력하여 테스트 해보십시오. param ([string [] $ IPs) $ IPS | Write-Output 적어도 인수가 전달되고 대상 스크립트에 의해 적절히 수락되는지 여부는 알 수 있어야합니다. – jbsmith

답변

11

사용 : ArgumentList 매개 변수는 정확하게 당신이 필요 주목 한 배열을 기대

... -ArgumentList (,$IPArray) 

때문에 배열을 다른 배열로 래핑하십시오. 그러나이 시나리오의 올바른 구문 (매개 변수 값 지정)은 그룹화 식 ()을 사용하여 중첩 배열을 만드는 것입니다.

+1

'@ ($ IPArray)'를 사용하면 첫 번째 쉼표는 필요하지 않습니다. – ashes999

+2

'@()'은 배열에 아무런 영향을주지 않습니다.즉,'@()'의 내용이 스칼라이면 해당 스칼라가 배열에 저장되지만 내용이 이미 배열 인 경우 해당 배열은 추가 배열로 래핑되지 않습니다. –

+0

흥미 롭다, 나는 그것을 몰랐다. 감사. – ashes999

0

이 질문은 오래된 질문이지만, @ keith-hill을 다시 시도 할 것입니다. 배열 선언의 시작 부분에 쉼표를 추가하십시오 (기존 배열을 포함 할 때조차도).

어리 석었지만 모든 대안을 시도했기 때문에 다시 대답하고 있습니다. 그것이 PowerShell 3.0 이상에서도 작동합니다. #require을 적어도 v3.0 +에서 사용할 수 있지만, @ keith-hill이 제안하는 것을하지 않으면 아무 것도 작동하지 않습니다. 배열이고 매개 변수가 배열이더라도 PS는이 경우에 (그리고 저는 ... -ArgumentList (,$IPArray)

그것은 아무 의미 \,하지만 작동합니다) PS 사랑 ... 그는 (게시 작업 답변이 더 나은 미안하지만, 작동하지 않았다) 말을 할. 이 팀에 폭탄을 떨어 뜨린 PS 팀에게 손을 뻗친다.하지만 내가하지 않았다면 스크립트는 무효가 될 것이다. 그리고 나는 "스크립팅 녀석"이되었습니다 ... 그래서 여기 있습니다.

+0

정말로 편집하고 싶었지만 모든 정직함에서 수정 사항이 작동하지 않습니다 ... 어쩌면 당신에게는 좋지만 다른 사람들에게는 그렇지 않을 수 있습니다. 나는 당신의 문제에 대해 듣고 싶습니다 ... – areyling