2

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

Какой лучший способ сделать это?

1 ответ1

2

Вы можете использовать set-location с -Path $PSScriptRoot чтобы перейти в каталог, в котором находится сценарий, содержащий эти команды, и затем вы можете запустить оставшуюся логику после этой команды, чтобы убедиться, что она установлена обратно в нужный каталог перед любым команды запускаются.

Set-Location -Path $PSScriptRoot

Дополнительные ресурсы

  • Set-Location
  • Автоматические переменные

    • $PSScriptRoot

      Содержит каталог, из которого выполняется модуль скрипта. Эта переменная позволяет сценариям использовать путь к модулю для доступа к другим ресурсам. В PowerShell 3.0+ это доступно везде, а не только в модулях.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .