在我的 Windows 7 桌面上,我有 script.ps1,它需要管理员权限(它会启动一项服务)。我想单击此脚本并以管理员权限运行它。
实现这一目标最简单的方法是什么?
答案1
这里有一种方法可以做到这一点,借助桌面上的附加图标。我想,如果您只想在桌面上显示一个图标,您可以将脚本移到其他人那里。
- 在桌面上创建 Powershell 脚本的快捷方式
- 右键单击快捷方式,然后单击特性
- 点击捷径标签
- 点击先进的
- 选择以管理员身份运行
现在,您只需双击桌面上的新快捷方式即可运行提升的脚本。
答案2
在启用 UAC 的系统上,为了确保脚本以完全管理员权限运行,请在脚本开头添加以下代码:
param([switch]$Elevated)
function Test-Admin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((Test-Admin) -eq $false) {
if ($elevated) {
# tried to elevate, did not work, aborting
} else {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}
exit
}
'running with full privileges'
现在,在运行脚本时,它将再次调用自身并在运行前尝试提升权限。-elevated 开关可防止在出现故障时重复执行此操作。
-noexit
如果脚本完成时终端自动关闭,您可以删除该开关。
答案3
如果你在同一个 powershell 中,你可以这样做:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"