Так что, очевидно, нет простого способа запустить скрипт .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 с повышенными правами, чтобы автоматически вернуться в каталог исходного сценария.
Какой лучший способ сделать это?