$upgradeInvoke = Invoke-Command -Session $session -ScriptBlock {
try {
Shutdown.exe /r /f /t 1200 /d p:4:2 /c "Triggerd Reboot Timer for 20 minitus"
$arguments = "/s", "/v`"/qn REBOOT=ReallySuppress`""
$process = Start-Process -FilePath $using:setupFullPath -ArgumentList $arguments -PassThru -Wait -Verb runas
Write-Output $process.ExitCode
}
catch {
Write-Output "An error occurred: $($_.Exception.Message)"
}
} -WarningAction SilentlyContinue -ErrorAction Stop
我尝试在禁用 UAC 后在远程计算机中安装 VMTools,调用正在运行,我可以看到 User32 事件记录在 EventViwer 中以进行重新启动。但启动进程没有被触发。当任何其他用户刚刚通过 RDP 或直接控制台登录时,相同的脚本即可运行。看起来很奇怪,不是吗?此外,它与 Windows Server 2012 R2、2016 和 2019 Standard 配合良好。它不适用于 Windows 2022 标准版。
“cmd /c”方法在 Windows Server 2012 R2 中不起作用,因此我将这两个命令合并在一起。
$arguments = "/s", "/v", "/qn", "REBOOT=ReallySuppress" $process = Start-Process -FilePath "cmd.exe" -ArgumentList "/c "$using:setupFullPath" $arguments" -Wait Write-Output $LASTEXITCODE
这适用于所有 Windows 版本