Start-Process 在 Invoke-Command 中不起作用

问题描述 投票:0回答:1
$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 标准版。

powershell virtual-machine invoke-command start-process
1个回答
0
投票

“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 版本

© www.soinside.com 2019 - 2024. All rights reserved.