Ответы:
Вот один из способов сделать это с помощью дополнительной иконки на вашем рабочем столе. Я думаю, вы могли бы переместить скрипт кому-то еще, если вы хотите, чтобы на рабочем столе была только одна иконка.
Теперь вы можете запустить сценарий с повышенными правами, просто дважды щелкнув новый ярлык на рабочем столе.
script.ps1
работает, как и ярлык powershell.exe -f script.ps1
, но последний может быть настроен на запуск от имени администратора (см. powershell.exe /?
Объяснение переключателя -f
или -File
)
В системах с включенным контролем учетных записей, чтобы убедиться, что сценарий выполняется с полными привилегиями администратора, добавьте этот код в начале сценария:
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 он попытается повысить привилегии перед запуском.
param(...)
сверху и перешлите их прямо перед этим -elevated
, вам нужно быть умным в том, как вы строите ArgumentList
, возможно, захотите использовать String[]
форму.
если вы находитесь в том же PowerShell, вы можете сделать это:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Альтернатива, которая сохраняет текущий каталог: stackoverflow.com/a/57033941/2441655
Поскольку он находится на вашем рабочем столе, я бы сказал, что самый простой способ сделать это - перетащить его на гаджет высот .
В противном случае вы могли бы сделать отдельный скрипт , используя в elevate
команду на вашем ps1 сценарий.
Или вы можете применить elevate
только к биту запуска сервиса.
PowerShell ISE находится по адресу% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Вы можете щелкнуть по нему правой кнопкой мыши, выбрать «Запуск от имени администратора» и запустить скрипт там.
Вы также можете найти его под логотипом Windows> Все программы> Стандартные> Windows PowerShell и сделать то же самое с этими ярлыками.
Если вы хотите запустить скрипт Powershell от имени администратора, прямо из контекстного меню Проводника, см. Раздел 2 моего ответа здесь: https://stackoverflow.com/a/57033941/2441655
Добавьте это в начало сценария:
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}
powershell -f
перед путем к сценарию, чтобы «завершить» команду…