我有一个简单的PowerShell脚本来停止进程:
$p = get-process $args
if ( $p -ne $null )
{
$p | stop-process
$p | select ProcessName, ID, HasExited, CPU, Handles
}
else { "No such process" }
Run Code Online (Sandbox Code Playgroud)
如果我尝试停止当前用户未启动的进程; 它适用于Windows Server 2003.但是,在Windows Server 2008(和其他带有用户帐户控制的Windows风格)上,我收到以下错误:
Stop-Process : Cannot stop process "w3wp (5312)" because of the following error: Access is denied
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,而无需使用提升权限运行PowerShell?如果用户在尝试执行需要提升的操作时,只是出现了UAC提示,那就没问题.
Jar*_*Par 18
AFAIK,在你似乎想要的意义上没有办法做到这一点.这是运行指定的.exe并期望立即出现提示.
我所做的是我知道必须使用管理权限运行的命令,我使用我称之为Invoke-Admin的函数运行它们.它确保我以管理员身份运行,并且如果我在运行命令之前没有提示,则会提示用户使用UAC对话框.
这里是
function Invoke-Admin() {
param ( [string]$program = $(throw "Please specify a program" ),
[string]$argumentString = "",
[switch]$waitForExit )
$psi = new-object "Diagnostics.ProcessStartInfo"
$psi.FileName = $program
$psi.Arguments = $argumentString
$psi.Verb = "runas"
$proc = [Diagnostics.Process]::Start($psi)
if ( $waitForExit ) {
$proc.WaitForExit();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21453 次 |
| 最近记录: |