Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于重新启动计算机的Powershell工作流_Powershell - Fatal编程技术网

用于重新启动计算机的Powershell工作流

用于重新启动计算机的Powershell工作流,powershell,Powershell,代码: 问题: 这是我在powershell中构建的相当长的工作流的一个小摘录。对于所有人来说,这应该是可行的,但我得到了以下错误(即使在单独运行此脚本时): Microsoft.PowerShell.Utility\Write错误:正在运行的命令已停止,因为首选项变量“ErrorActionPreference”或公共参数已设置为Stop:计算机SP2正在运行 跳过。无法通过WMI服务检索其上次启动时间,错误消息如下:RPC服务器不可用。(HRESULT的异常:0x800706BA)。 第43

代码:

问题: 这是我在powershell中构建的相当长的工作流的一个小摘录。对于所有人来说,这应该是可行的,但我得到了以下错误(即使在单独运行此脚本时):

Microsoft.PowerShell.Utility\Write错误:正在运行的命令已停止,因为首选项变量“ErrorActionPreference”或公共参数已设置为Stop:计算机SP2正在运行 跳过。无法通过WMI服务检索其上次启动时间,错误消息如下:RPC服务器不可用。(HRESULT的异常:0x800706BA)。 第433行字符:25 + ... 接收作业-Job$Job-Wait-Verbose-Debug-ErrorAction。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(:)[Write Error],ActionPreferenceStopException +FullyQualifiedErrorId:System.Management.Automation.ActionPreferenceStopException,Microsoft.PowerShell.Commands.WriteErrorCommand +PSComputerName:[本地主机]

我调查了RPC服务器不可用的问题。防火墙已关闭,RPC服务正在运行,服务器位于域上,工作流以域管理员的身份从域成员计算机运行。我可以成功地进入机器并做任何事情。我甚至可以做到:

workflow Test-RemoteReboot{
    param ([string[]]$serverNames)
    foreach -parallel($server in $serverNames){
        Restart-Computer -PSComputerName $server -Wait -Force
    }
}

Test-RemoteReboot SP,SP2

问题是,我需要一个返回值来确定是否需要重新启动并处理远程计算机之外的其他逻辑。我注意到在出错之前有一个不正常的停顿。那么可能是超时了?任何人都有类似的问题?

您可以使用
-Protocol WSMan
参数而不是默认的DCOM over RPC协议(
-Protocol DCOM
)尝试
重新启动计算机
cmdlet


这将确认您的RPC网络数据包在某个位置被阻止。

默认显示的版本7不再具有此属性。您必须查看它。@Stoinov是的,PowerShell 7不再使用DCOM。因此,如果是防火墙问题,则无法运行任何远程cmdlet。
workflow Test-LocalRebootRemotely{
param ([string[]]$serverNames)
    foreach -parallel($server in $serverNames){
        InlineScript { Restart-Computer -Force } -PSComputerName $server
    }
}

Test-LocalRebootRemotely SP,SP2