좋아, 당신이 Invoke-Command
를 통해 원격 실행에 지역 변수를 참조하는 방법을 알고 싶은 모양을 위해 그들이 작동하지 않았다. 완전히 $using:
컨텍스트로 수행 할 수있는 작업입니다. 예를 들어, 메모장 컴퓨터에서 실행중인 경우 스크립트의 모습은 볼 수 있도록하고, 당신이 할 수있는 원격 시스템에 그 결과 참조 : 당신이 메모장이 실행되고 있는지 확인하려면, 마찬가지로
$Procname = 'notepad'
$chk = (Get-Process | Where-Object {$_.Name -eq $Procname})
Invoke-Command -ComputerName sandbox -ScriptBlock {
if ($using:chk -eq $null) {
Write-Host 'null' -ForegroundColor Red
} else {
Write-Host 'running' -ForegroundColor Green
}
}
을 원격 서버에서이 작업을 수행 할 수 있습니다 :
$Procname = 'notepad'
Invoke-Command -ComputerName sandbox -ScriptBlock {
if ((Get-Process | Where-Object {$_.Name -eq $using:Procname}) -eq $null) {
Write-Host 'null' -ForegroundColor Red
} else {
Write-Host 'running' -ForegroundColor Green
}
}
을하지만 개인적으로 나는이 알아보기 힘들 생각, 나는 그것을 반대하고 할 거라고 :
$Procname = 'notepad'
Invoke-Command -ComputerName sandbox -ScriptBlock {
if (Get-Process | Where-Object {$_.Name -eq $using:Procname}) {
Write-Host 'running' -ForegroundColor Green
} else {
Write-Host 'null' -ForegroundColor Red
}
}
을 또는 REM에 아무것도 실행하지 않고 직접 서버 :
$Procname = 'notepad'
$chk = Get-Process -Computer sandbox | ?{$_.Name -eq $Procname}
If($chk){
Write-Host 'Running' -ForegroundColor Green
}else{
Write-Host 'Null' -ForegroundColor Red
}
'$ ProcName'이 원격 서버에서 실행되고 있는지 확인하려고합니까? 아니면 원격 서버에서 실행되는 스크립트 블록 내에서'$ chk' (로컬 서버에서 실행)의 결과를 참조하려고합니까? – TheMadTechnician
또한,'$ Procname'을 전달하지 않으므로, 실제로 생각한 것처럼 그 문자열에 실제로 액세스 할 수 없습니다. 당신이하고있는 일은 이름을 '$ null'과 동등한 프로세스를 찾는 것입니다 (즉, $ null). 그래서 항상 $ true -eq $ null이 맞는지 물어볼 것입니다. – TheMadTechnician
원격 서버에서 $ Procname이 실행되고 있는지 확인하려고합니다. $ chk는 로컬 측이 아닌 원격 측에서 실행해야합니다. – madman