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.

PowerShell ejecutar comando como usuario diferente cuando falta el parámetro de credencial.

Necesito ejecutar un comando común de PowerShell para activar la actualización de directivas de grupo “gpupdate” en un ordenador remoto fuera de un flujo de trabajo.
El flujo de trabajo se ejecuta en un contexto de usuario del sistema, que no tiene los permisos de administrador locales en los clientes para forzar una “gpupdate” remota.
Por esa razón, importo una cadena segura de credenciales de PowerShell con “Import-CliXml” para ejecutar esa declaración en el ámbito de un usuario que es administrador local en los clientes.

Pero, el comando que quiero usar no soporta el parámetro de credenciales nativo. Y necesito usar un parámetro para el cliente remoto.
Invoke-GPUpdate -Computer $client -RandomDelayInMinutes 0

He intentado muchos enfoques de Internet, pero no funcionan para mí:

Start-Process powershell.exe -Credential $credentials -ArgumentList $ProcessCommand -WorkingDirectory $env:windir -NoNewWindow -PassThru

Start-Process powershell.exe -wait -Credential $credentials -ArgumentList "-command &{Start-Process Powershell.exe -argumentlist '$($cmnd)' -verb runas -wait}"

Si pruebo a enviar la “gpupdate” remota fuera de una consola de PowerShell iniciada con un usuario que es administrador local en el cliente remoto, funciona.

¿Alguien tiene una solución para este problema?
¡Muchas gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar un comando de PowerShell común y activar una actualización de Directiva de Grupo “gpupdate” en un equipo remoto fuera de un flujo de trabajo, puede importar una secuencia de comandos segura de credenciales de PowerShell con “Import-CliXml” para ejecutar la instrucción en el ámbito de un usuario que es un administrador local en los clientes. Sin embargo, el comando que desea utilizar no admite el parámetro de credenciales nativo y necesita utilizar un parámetro para el cliente remoto. Diferentes enfoques de Internet no parecen funcionar.

    Una solución podría ser utilizar el cmdlet “Invoke-Command”, que permite ejecutar comandos en equipos remotos. Primero deberá establecer una sesión remota de PowerShell utilizando el cmdlet “New-PSSession” con el parámetro de credenciales. Luego, utilice el cmdlet “Invoke-Command” con los parámetros “Session” y “ScriptBlock” para ejecutar el comando “gpupdate” en el equipo remoto.

    $credential = Import-CliXml -Path "C:\ruta\al\archivo\de\credenciales.xml"
    $remoteSession = New-PSSession -ComputerName $cliente -Credential $credential
    Invoke-Command -Session $remoteSession -ScriptBlock {gpupdate /force}
    

    Esto debería permitir ejecutar el comando “gpupdate” en el equipo remoto utilizando las credenciales de un usuario administrador local.

Comments are closed.