通过具有管理员权限的Start-Process启动时关闭PowerShell窗口的延迟

时间:2012-11-10 15:03:07

标签: powershell admin uac privileges

代码(不是我的实际代码,但它也会产生相同的行为):

If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
    [Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Warning "The script tries to re-run itself using Administrator privileges.";
    try {
        Start-Process powershell -ArgumentList ($MyInvocation.MyCommand.Path) -Verb runAs;
    }
    catch [InvalidOperationException] {
        Write-Warning "You canceled the privilege request. This script WON'T WORK, please re-run it!";
        Read-Host;
        Exit;
    }
    Exit;
}

# Here comes the code which will be run if started with Admin rights
Read-Host;

当我接受Windows UAC并通过[X]关闭显示的PS窗口时,窗口会在3-5秒后消失,而不是直接关闭!

我正在使用 Windows 8 Pro 64位。

1 个答案:

答案 0 :(得分:1)

这是一个Read-Host问题。它不仅影响64位操作系统,我只是在x86和x64 Windows 7 Pro上验证过。要重现,只需在任何PowerShell控制台上运行Read-Host并关闭窗口。

更新:

我刚刚测试了各种版本的Windows和bit-ness,我发现结果并不一致。 Read-Host有时在不同的运行中表现不同。