双击 ps1 文件时以管理员身份启动 powershell

MyD*_*ons 5 powershell windows-10

我已阅读如何在管理员模式下打开文件进行编辑?

我有一个 .ps1 文件,需要以管理员身份运行。我很高兴看到,当我双击任何 .ps1 文件时,powershell 都会以管理员身份运行。

我已经将C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell两个 PowerShell 快捷方式设置为以管理员身份运行

如果我从开始菜单打开 Powershell,系统会询问我是否允许应用程序进行更改...这表明它正在以管理员身份运行,并且当 Powershell 运行时,它会在“标题”栏中显示管理员

但是,当我双击 .ps1 文件时,它会以普通用户(而不是管理员)身份打开。

我还需要做什么?

iTe*_*mer 5

当您双击该脚本时,这不会执行该脚本,但当您运行该脚本时,它将以提升的方式自行执行。你可以试试这个:

$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # code here...
}
else {
    Start-Process -FilePath "powershell" -ArgumentList "$('-File ""')$(Get-Location)$('\')$($MyInvocation.MyCommand.Name)$('""')" -Verb runAs
}
Run Code Online (Sandbox Code Playgroud)

这样,非提升控制台将退出。


小智 1

将 powershell 快捷方式复制/粘贴到您想要启动脚本的位置。右键单击新快捷方式,单击属性,然后单击高级并确保将其设置为以管理员身份运行。然后,在目标框中键入 powershell.exe 之后脚本的路径和名称

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\myscripts\my-awesome-script.ps1
Run Code Online (Sandbox Code Playgroud)

如果路径或文件名中有空格,请确保在添加内容周围使用“引号”,例如:

"c:\my scripts\some script with spaces.ps1"
Run Code Online (Sandbox Code Playgroud)

这将以管理员身份启动新的 powershell,并在新 shell 中自动启动脚本。

您可能还想重命名该快捷方式以表明它用于特定脚本,而不是常规的 powershell 会话。右键单击,重命名。