与Terminate part of powershell script and continue相关。
部分与Powershell Job Always Shows Complete相关。
我的脚本在本地运行并访问远程 PC 的注册表配置单元。我需要将注册表项的值写入$RegHive
变量。而且我想将其作为一项工作进行监控,以防某些 PC 死机,我可以终止命令并转移到另一台 PC。
我的原始代码是:
$global:RegHive = $null
$job = Start-Job -ScriptBlock {
$RegHive = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("SomeKeyName", "SomePCName")
}
但无论我做什么,变量$RegHive
都是空的。
如果我在一侧$RegHive = (Get-Job | Receive-Job)
分配了一些值$RegHive
,看起来就像我会在没有作业/脚本块的情况下正常运行它一样,即:
$RegHive = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("SomeKeyName", "SomePCName")
甚至有相同的$RegHive.SubKeyCount
但是“正常”的人有$RegHive.GetSubKeyName()
方法,而工作的人没有。
如何逃避分配变量Receive-Job
并直接在作为作业运行的脚本块内进行分配?
简单来说:
$job = Start-Job -ScriptBlock {$a = 1 + 2}
如何在$a
没有 的情况下等于 3 $a = (Get-job | Receive-job)
?