2009-05-27 3 views
11

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

+3

Принадлежит на сервере Fault. – Richard

+0

См. SF @ http://serverfault.com/questions/12985/elevated-powershell-script – Richard

+2

да, если вы посмотрите на пользователя, который разместил этот вопрос ... вы увидите, что это я. Я разместил его там, потому что вы пытались загрузить мой вопрос ... –

ответ

8

Задача больше похожа Setuid чем Судо ... и, к счастью, УИП является возможно: вы можете просто создать запланированное задание (без установленного графика), и настроить его для запуска повышенной. Затем дайте вашим пользователям права выполнить эту задачу. Я кратко описал процесс in a blog post вместе с сценарием PowerShell, чтобы помочь создать задачи и ярлыки для их запуска.

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

+0

Похоже, это может сработать, знаете ли вы, будет ли он работать и с XP? –

+1

Мертвая ссылка. Интернет-архив * Активируйте! * Https://web.archive.org/web/20110821152558/http://huddledmasses.org/vista-setuid-how-to-elevate-without-prompting/ –

1

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

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

6

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

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

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

Если у вас нет V2, вы можете создать объект StartInfo и установить Verb для 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) 

} 

Я have a blog post, что говорит немного больше об использовании объекта System.Diagnostics.ProcessStartInfo.

+1

Это не помогает, если пользователи не являются администраторами;) – Jaykul

+0

Справедливо. Я слишком быстро взглянул на вопрос. –

1

первый 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 
Смежные вопросы