약 3 일 전부터 powershell을 사용하기 시작했습니다. 원격 컴퓨터의 레지스트리에 액세스하고 특정 키를 찾아 출력을 파일에 저장하는 스크립트를 만들려고했습니다.Powershell 작업 항상 완료
나는 그것이 작동시킬 수 있었다하지만 난 그래서 난에 넣고는 레지스트리에 도달하지 못할 경우는 에러 출력하고 스크립트를 계속 약 15 초 걸릴 것으로 나타났습니다 :
$Server = "test.contesto.net"
$Job = Start-Job ScriptBlock{[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Server)
Start-Sleep 2
If ($Job.State -EQ "Completed"){
write-host "made it"
}
Else {
write-host "failed"
}
와 나는 항상 "그것을"얻을 것이다. 심지어 내가 그 서버 레지스트리에 도달 할 수 없다는 것을 알고 있습니다.
$Job = Start-Job ScriptBlock {[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine","test.contesto.net")
가 그럼 난 전체 (15)은 "실행"을 얻을 해당 작업
$Job.State
의 상태를 보면 :이 같은 파워 쉘 프롬프트에 수동으로 모든 것을 입력하면 이상한 일이있다 실패하는 데 걸리는 시간. 나는 ScriptBlock {}
에 Get-Variable
을 추가하려고 시도했지만 그 중 하나도 작동하지 않았습니다. 아직 완성 된 것으로 나타납니다. 그래서 나는 그것이 구문과 같은 오류로 인해 작업과 관련이 있다고 생각하고 있습니다. 그래서 언제든지 작업이 완료됩니다.
적어도 작업 내용으로 설명 할 부분은 아닙니다. 그렇다면 왜 복잡성 계층을 추가해야할까요? – alroc
이 복잡성 계층을 추가하려는 이유는 [Microsoft.Win32.RegistryKey] :: OpenRemoteBaseKey ("LocalMachine", "test.contesto.")에 걸리는 기본 15 초를 기다리지 않기 때문입니다. net ") 명령을 완료하십시오. 대신 1 초 또는 1 초 미만 만 기다리고 싶습니다. 이 일을하는 다른 방법이 확실하지 않습니다. 나는 당신이 이것을 성취하는 방법을 가지고 있다면 다른 아이디어를 얻고 싶어합니다. 저는 이것을 여러 대의 기계에서 실행할 예정이며, 실패 할 것이라는 것을 알기 위해 15 초가 필요하지 않습니다. – Ivory