Поднять скрипты Powershell - PullRequest
11 голосов
/ 27 мая 2009

Можно ли повысить разрешения сценария powershell, чтобы пользователь без прав администратора мог запускать сценарий? Наши сетевые администраторы пытаются найти более эффективные по времени способы выполнения определенных задач, для которых им сейчас нужно использовать удаленный рабочий стол для ... автоматизации их с помощью сценариев PS, но пользователи не имеют прав администратора.

Ответы [ 5 ]

8 голосов
/ 27 мая 2009

Задача больше похожа на setuid, чем на sudo ... и, к счастью, setuid возможна : вы можете просто создать запланированное задание ( без установленного расписания ) и установить его запустить повышенных . Затем дайте своим пользователям права на выполнение этой задачи. Я описал процесс в своем блоге некоторое время назад вместе со скриптом PowerShell, чтобы помочь создать задачи и ярлыки для их запуска.

Проблема (как предложил JaredPar) заключается в том, что вы должны убедиться, что приложения, которые вы запланировали запускать с повышенными правами или «как администратор», защищены, и это особенно верно, если вы запустите сценарий. Убедитесь, что никто, кроме администратора (ов), не может редактировать или заменять этот сценарий, или вы отдаете пресловутые ключи королевству.

6 голосов
/ 27 мая 2009

если вы используете V2, вы можете использовать следующее, которое включено в Блог команды PowerShell

Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"'

Это приведет к запуску «Get-Process» от имени администратора.

Если у вас нет V2, вы можете создать объект StartInfo и установить для глагола Runas следующим образом.

function Start-Proc  {   
     param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)       

     # Build Startinfo and set options according to parameters  
     $startinfo = new-object System.Diagnostics.ProcessStartInfo   
     $startinfo.FileName = $exe  
     $startinfo.Arguments = $arguments  
     $startinfo.verb = "RunAs"  
     $process = [System.Diagnostics.Process]::Start($startinfo)  

}

У меня есть запись в блоге , в которой немного больше говорится об использовании объекта System.Diagnostics.ProcessStartInfo.

4 голосов
/ 08 июня 2009

Расширения сообщества Powershell включают командлет для этого, псевдоним 'su'. http://www.codeplex.com/Pscx

1 голос
/ 19 февраля 2015

сначала choco install pscx через http://chocolatey.org/ (может потребоваться перезапустить среду оболочки)

затем включите psxc

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx

Тогда используйте Invoke-Elevated

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR
1 голос
/ 27 мая 2009

Звучит так, будто вы ищете sudo эквивалент в Windows. Sudo не присущ Windows, как и большинству сред стиля Unix. Но есть несколько доступных инструментов, которые являются близкими эквивалентами.

Будьте осторожны при использовании этих типов инструментов, хотя. Незащищенный скрипт + sudo представляет угрозу безопасности.

...