1

Mon scénario: Connectez-vous à la machine distante via la connexion Bureau à distance et ouvrez l'invite de commande en tant qu'administrateur et exécutez certaines commandes d'administration dans l'invite de commande. J'essaye d'automatiser le scénario ci-dessus par powershell à partir de ma machine locale.PowerShell: Comment exécuter les commandes d'invite de commande à distance en tant qu'administrateur à partir de PowerShell?

Voici les étapes que je l'ai fait:

  1. Pour vérifier le bon fonctionnement de mon script Powershell, je me suis connecté manuellement dans la machine distante (Admin Cred) et exécuté cette commande Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas. Cela fonctionne comme prévu dans la machine distante car j'obtiens la sortie désirée.
  2. Maintenant, j'ai essayé d'exécuter cette commande à partir du script PowerShell local via Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas} -Credentials $cred. Je n'ai pas de sortie.
  3. Mais, quand j'essaye d'exécuter la commande ci-dessus sans le paramètre runas, j'obtiens la sortie disant que cette commande particulière a besoin d'informations d'identification d'administrateur qui sont attendues. Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt} -Credentials $cred.

Est-ce qu'il me manque quelque chose ici?

Répondre

0

Execute:

Enable-PSRemoting -Force 

Dans une invite élevée sur votre PC cible. Puis Restart-Service WinRM

Enter-PSSession -ComputerName $rpc -Credential (Get-Credential) 
+0

Merci pour le commentaire. J'ai d'abord invoqué la session windows.powershell pour la communication à distance et avec cette session, j'ai pu exécuter les commandes à distance en tant qu'administrateur depuis mon ordinateur client. –

0

Si vous êtes en mesure de distance par défaut à point final Microsoft.PoweShell, cela signifie que l'utilisateur d'exécution est un administrateur dans la machine de destination.

Mais ici, je soupçonne que le cmdcommand que vous avez spécifié est en train de faire une certaine exécution qui cible une ressource distante, d'où le problème de double espoir.

si oui, l'article ci-dessous sera une solution pour votre problème.

Tout à propos de Credential Delegation

+0

Merci @Prasoon pour le commentaire. J'ai modifié un peu mon script '$ session = New-PSSession -ComputerName $ remoteComputer -ConfigurationName Windows.PowerShell' et l'utilisation de cette session dans la commande invoke a résolu mon problème. Ma compréhension était que, si nous n'utilisons pas explicitement la session, la session par défaut serait windows.powershell. Je n'ai aucune idée de comment cela a fonctionné. Une explication pour cela? –

+0

Le point de terminaison par défaut est 'Microsoft.PowerShell'. Probablement dans votre environnement, vous pouvez avoir un point de terminaison nommé' Windows.PowerShell'. Pour afficher les points de terminaison disponibles, connectez-vous à la machine cible et consultez le résultat de la cmdlet Get-PSSessionConfiguration. –