es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecutando la Línea de Comando de Powershell como Usuario Administrador.

Tengo una automatización que inicia sesión en una máquina Windows Server 2019 como un usuario, pero luego necesita ejecutar un comando (Invoke-AdminCommand es específico de la aplicación, no un cmdlet integrado de Windows) como un usuario administrador (y no quiero agregar al usuario conectado como Administrador). He seguido respuestas de aquí (si piensas que esta es una pregunta duplicada) y ninguna ha funcionado. En el script hago un “whoami” para asegurarme de que la sesión sea del usuario correcto, y es así. Pero el comando devuelve un error específico de la aplicación que indica que el usuario no tiene los permisos correctos. Si me conecto a la misma máquina como usuario administrador y ejecuto el mismo comando a través de un CLI de Powershell, funciona bien.

$username = “dominio\adminUser”
$password = “**********” | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$password
$s = New-PSSession -credential $cred
$sc = {
whoami
Invoke-AdminCommand -Register -Verbose
}
Invoke-Command -Session $s -Scriptblock $sc
Remove-PSSession $s

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Intente lo siguiente:

    1. Cree un objeto PSCredential con las credenciales del usuario administrador:
      powershell
      $username = "dominio\usuarioAdmin"
      $password = "**********" | ConvertTo-SecureString -AsPlainText -Force
      $cred = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$password
    2. Cree una PSSession con las credenciales del usuario administrador:
      powershell
      $s = New-PSSession -credential $cred
    3. Cree un ScriptBlock con los comandos que desea ejecutar:
      powershell
      $sc = {
      whoami
      Invoke-AdminCommand -Register -Verbose
      }
    4. Ejecute el ScriptBlock en la PSSession:
      powershell
      Invoke-Command -Session $s -Scriptblock $sc
    5. Elimine la PSSession:
      powershell
      Remove-PSSession $s

Comments are closed.