因此,显然没有简单的方法可以通过双击直接以管理员身份运行 .ps1 脚本;您可以编辑注册表来运行它,但为了使其以管理员身份运行,显然您必须告诉它在已经运行的 PowerShell 中打开一个新的提升的 PowerShell。不幸的是,据我所知,每次这样做时,提升的提示都会在与原始脚本不同的目录中打开!因此,例如,如果我有以下脚本:
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
.\mylocalscript.ps1
Write-Host "Just an example!"
}
else
{
Start-Process -FilePath "powershell" -ArgumentList "-NoExit $('-File ""')$(Get-Location)$('\')$($MyInvocation.MyCommand.Path)$('""')" -Verb runAs
}
它失败了,因为以管理员身份打开后,曾经是原始脚本本地的本地脚本不再是本地脚本,然后它找不到它。本质上,我需要一种方法来告诉打开的新提升的 PowerShell 窗口自动更改回原始脚本的目录。
做到这一点的最好方法是什么?