Как запустить скрипт Powershell от имени текущего пользователя из повышенного контекста?

Как запустить скрипт Powershell от имени текущего пользователя из повышенного контекста?

У меня есть скрипт Powershell, который требует повышения прав администратора для настройки общего файлового ресурса Azure, среди прочего. Последняя команда скрипта использует New-PSDriveдля сопоставления общего файлового ресурса с буквой диска. Я ожидаю, что новая буква диска будет доступна из проводника Windows. Я знаю, что использование New-PSDriveиз повышенного контекста сопоставляет диск только в этом контексте, поэтому он недоступен для моей учетной записи пользователя.

Как выполнить скрипт/процесс Powershell от имени текущего пользователя из скрипта с повышенными привилегиями?

решение1

Вы не можете изменить контекст пользователя, не предоставив учетные данные пользователя. Вы можете получить вошедшего в систему пользователя достаточно легко, но вы никогда не получите его пароль, пока он его не введет.

Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential

Во-вторых, если вы запускаете приложение удаленно, пользователь никогда этого не увидит, поскольку оно может быть запущено только в исходном контексте, в котором вы находитесь.

PowerShell изначально не позволяет вам сделать это, поскольку это граница безопасности Windows. Если вам действительно нужно это сделать, попробуйте использовать MS SysInternals PSExec.

Или попробуйте выполнить что-то из запланированной задачи.

решение2

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

Связанный контент