如何以管理员身份运行 powershell 脚本

如何以管理员身份运行 powershell 脚本

在我的 Windows 7 桌面上,我有 script.ps1,它需要管理员权限(它会启动一项服务)。我想单击此脚本并以管理员权限运行它。

实现这一目标最简单的方法是什么?

答案1

这里有一种方法可以做到这一点,借助桌面上的附加图标。我想,如果您只想在桌面上显示一个图标,您可以将脚本移到其他人那里。

  1. 在桌面上创建 Powershell 脚本的快捷方式
  2. 右键单击快捷方式,然后单击特性
  3. 点击捷径标签
  4. 点击先进的
  5. 选择以管理员身份运行

现在,您只需双击桌面上的新快捷方式即可运行提升的脚本。

答案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"

答案4

由于它位于您的桌面上,我认为最轻松的方法是将其拖到海拔小工具

否则你可以使用命令elevate在你的 ps1 脚本上。

或者,您可以elevate仅适用于服务启动位。

相关内容