Відповіді:
Ось один із способів зробити це за допомогою додаткової іконки на робочому столі. Я думаю, ви могли б перемістити сценарій ще когось, якби хотіли мати лише один значок на робочому столі.
Тепер ви можете запустити скрипт піднятим простим подвійним клацанням нової ярлика на робочому столі.
script.ps1
роботи, як і ярлик powershell.exe -f script.ps1
, але останній може бути встановлений для запуску адміністратором (див powershell.exe /?
. Пояснення -f
або -File
переключення)
У системах з підтримкою UAC, щоб переконатися, що сценарій працює з повними правами адміністратора, додайте цей код на початку вашого сценарію:
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'
при запуску вашого сценарію за допомогою перемикача -eleva, він спробує підвищити привілеї перед запуском.
param(...)
вгорі та перешліть їх прямо раніше -elevated
, вам потрібно буде бути розумним щодо того, як ви будуєте ArgumentList
, ймовірно, захочете використовувати String[]
форму.
якщо ви перебуваєте в одній і тій же силі, ви можете це зробити:
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 як адміністратора, безпосередньо з контекстного меню Explorer, дивіться розділ 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
перед сценарієм, щоб "виконати" команду ...