Запуск кода от имени другого пользователя для получения повышенных привилегий

#powershell #credentials

#powershell #учетные данные

Вопрос:

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

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

Мой вопрос, как я могу запустить этот код от имени другого пользователя, я попробовал это

 $usuario = "myuser@mydomain"
$pass = get-content C:credential.txt`
$spass = $pass | Convertto-SecureString`
pass = "securepass"`
spass = $pass | ConvertTo-SecureString -AsPlainText -Force`
write-host $pass 
$cred = new-object System.Management.Automation.PSCredential -argumentlist $usuario, $spass

$UpdateSession = New-Object -ComObject Microsoft.Update.Session
$UpdateSearcher = ($UpdateSession.CreateupdateSearcher())
$Updates = $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0").updates
$total = $Updates | measure
$total.count
  

Тогда как я могу передать учетные данные переменным? Проблема отказано в доступе исходит из этой строки

 $Updates = $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0").updates
  

Ответ №1:

 $args = ' -file path-to-script.ps1'
Start-Process -FilePath powershell.exe -Credential $creds -ArgumentList $args -Verb RunAs
  

В Powershell также есть -Command, которую вы можете использовать для вызова функции или командлета вместо другого скрипта.