Назад | Перейти на главную страницу

Как запускать команды на удаленном компьютере с правами администратора с помощью powershell

Как запускать команды на удаленном компьютере с правами администратора (пример: запуск от имени администратора) с помощью PowerShell.

Пока я пробовал

start-process powershell.exe -verb runas -argumentlists ".\test.ps1"

Это не удается.

Invoke-Command не может использоваться в случаях, когда требуется высота. Кроме того, я нашел принятый ответ немного неполным. Однако в моем случае я хотел запустить .exe файл вместо сценария, но я считаю, что мое решение можно адаптировать и для обработки сценариев.

Приведенный ниже сценарий:

  1. Начать сеанс PowerShell
  2. Выполните команду, указанную в $EXE переменная
  3. Подождите, пока он закончится
  4. Завершить сеанс

Не завершайте сеанс до завершения задания, иначе вы убьете запущенный процесс. Чтобы запустить это параллельно, удалите -Wait аргумент от Start-Process и наблюдайте за заданиями перед завершением сеансов.

# Enter or already have some administrative-level credentials here
$Cred=Get-Credential
$EXE='"<path to exe>"'
$Arguments=@(<array of arguments>)
$ScriptString="Start-Process -FilePath $EXE -ArgumentList @('$(Arguments -join "','")') -WindowStyle Hidden -Verb RunAs -Wait"
$ScriptBlock=[System.Management.Automation.ScriptBlock]::Create($ScriptString)
$Session=New-PSSession -ComputerName <target computer> -EnableNetworkAccess -Name <name of session> -Credential $Cred
$Job=Invoke-Command -Session $Session -ScriptBlock $ScriptBlock -AsJob
Wait-Job -Job $Job > $null
Remove-PSSession -Session $Session

Выполнение удаленной команды

Используйте командлет Invoke-Command для выполнения команды на удаленном компьютере. Синтаксис следующий:

Invoke-Command -ScriptBlock <COMMAND> -ComputerName <COMPUTER> -credential <USERNAME>

КОМАНДА - это команда, которую вы хотите запустить, КОМПЬЮТЕР - это имя хоста удаленного компьютера, а ИМЯ ПОЛЬЗОВАТЕЛЯ - это имя пользователя учетной записи, под которой вы хотите запустить команду. Вам будет предложено ввести пароль.

Запуск удаленного сеанса

Используйте командлет Enter-PSSession, чтобы запустить удаленный сеанс PowerShell, в котором вы можете запускать несколько команд с помощью параметра Session командлета Invoke-Command:

Enter-PSSession -ComputerName <COMPUTER> -Credential <USERNAME>

Источник: http://www.howtogeek.com/117192/how-to-run-powershell-commands-on-remote-computers/