invoke-command
을 사용하여 원격 컴퓨터에서 코드를 실행하려고합니다. 그 방법의 일부는 ScriptBlock
매개 변수를 포함하고 있으며, 내가 올바르게하고 있지 않다는 느낌을받습니다.Powershell ScriptBlock Not Execution
param([string] $filename)
function ValidatePath($file, $fileType = "container")
{
$fileExist = $null
if(-not (test-path $file -PathType $fileType))
{
throw "The path $file does not exist!"
$fileExist = false
}
else
{
echo $filename found!
$fileExist = true
}
return $fileExist
}
$responseObject = Invoke-Command -ComputerName MININT-OU9K10R
-ScriptBlock{validatePath($filename)} -AsJob
$result = Receive-Job -id $responseObject.Id
echo $result
이 전화를 걸려면, 내가 .\myScriptName.ps1 -filename C:\file\to\test
할 것 :
그런 다음이 함수를 새 스크립트에 넣어야한다고 생각했습니다.
파일 1 : 2
$responseObject = Invoke-Command -ComputerName MININT-OU9K10R -ScriptBlock {
.\file2.ps1 -filename C:\something } -AsJob
$result = Receive-Job -id $responseObject.Id
echo $result
파일 :이처럼 보였다 어느 기능을 실행합니다 이러한 방식의
Param([string] $filename)
과 내가 왜 궁금하네요; 또는 그것이 작동하게하기 위해해야 할 일. 호출-명령은 원격 컴퓨터에서 스크립트 블록의 코드를 실행하기 때문이다
function ValidatePath($file, $fileType = "container")
{
$fileExist = $null
if(-not (test-path $file -PathType $fileType))
{
throw "The path $file does not exist!"
$fileExist = false
}
else
{
echo $filename found!
$fileExist = true
}
return $fileExist
}
스크립트 블록 내가 UNC 경로를 사용하는 경우처럼 보일 것입니다 무엇? – BlackHatSamurai
당신은 사용하십시오 스크립트를 파일에 넣으면 UNC 경로가되며,. \ file2.ps1 대신 원격 컴퓨터가 액세스 할 수없는 로컬 파일의 상대 경로 (자체 기본 작업 디렉토리에서 파일을 찾습니다), 컴퓨터에서 공유를 만들고 거기에 스크립트 파일을 넣은 다음 '\\ yourcomputer \ share \ file2.ps1'와 같은 경로를 사용하십시오.ValidatePath 함수를 호출하려는 ScriptBlock에 코드를 추가하는 것이 좋습니다. 코드가 원격 컴퓨터에 전달되기 때문입니다. 그것은 코멘트에 맞지 않을 것입니다, 나는 대답에 그것을 추가 할 것입니다. –
좋습니다! 고맙습니다! – BlackHatSamurai