Avant de plonger dans la question, j'ai trouvé plusieurs autres questions qui semblent similaires aux miennes, mais elles n'ont pas pu résoudre mon problème. Voici des liens vers eux:
Exécutez à distance un script appelant «Exécuter en tant qu'administrateur»
/programming/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell
Passons maintenant à la question: je dois exécuter un script Windows Update sur une machine distante via Powershell. Si je me connecte à distance à la machine via mstsc, exécute Powershell en tant qu'administrateur et exécute le script Windows Update, cela fonctionne très bien. Si je me connecte à distance à la machine via mstsc, exécute Powershell SANS choisir l'exécution en tant qu'administrateur et exécute le script, j'obtiendrai un tas d'erreurs le long de cette ligne: "Exception appelant" Download "avec" 0 "argument (s):" Exception de HRESULT: 0x80240044 ""
Cela ne se produit que si je l'exécute SANS privilèges d'administrateur.
Le script que j'exécute est le suivant: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html
Maintenant, lorsque je me connecte à distance à la machine en utilisant Enter-PSSession et que j'essaie d'exécuter le script, j'obtiens des erreurs, mais elles sont un peu différentes. Ils sont le long de cette ligne: "Exception appelant" CreateUpdateDownloader "avec" 0 "argument (s):" L'accès est refusé. (Exception de HRESULT: 0x80070005 (E_ACCESSDENIED)) ""
Je suis ouvert aux suggestions sur ce qui pourrait être à l'origine de ce problème, mais je pense l'avoir compris. Je crois que la session Powershell doit être exécutée avec des privilèges élevés. Je sais comment faire cela lors de l'accès à distance via mstsc, mais je n'ai pas pu trouver un moyen de le faire via Enter-PSSession. J'ai googlé et googlé, mais je n'ai rien trouvé. Si quelqu'un pouvait aider à faire la lumière sur ce point, ce serait grandement apprécié.
Réponses:
Lorsque vous exécutez des commandes à distance, elles sont exécutées avec des privilèges administratifs car seuls les administrateurs sont autorisés à exécuter des commandes à distance dans powershell. L'erreur "Exception appelant" CreateUpdateDownloader "avec" 0 "argument (s):" L'accès est refusé. (Exception de HRESULT: 0x80070005 (E_ACCESSDENIED)) "" n'est pas une erreur de PowerShell native, cela indique que cette ligne échoue: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), cette ligne tente de créer l'objet de mise à jour à l'aide de $ UpdateSession = New-Object -ComObject objet Microsoft.Update.Session.
Sans savoir OERE le téléchargeur essaie de tendre la main, je ne peux que supposer le vaisseau mère, cela peut indiquer que les informations d'identification que vous avez en étant connecté à distance à un serveur pourraient faire l'objet d'un proxy. Il s'agit d'une pratique de sécurité courante, les utilisateurs connectés à distance à des machines ne peuvent pas télécharger des éléments directement depuis Internet (quelle que soit la fiabilité de la source).
J'espère que cela vous aide, Chris
la source
http://msdn.microsoft.com/en-us/library/windows/desktop/aa387288(v=vs.85).aspx
Il ne vous permet pas de l'appeler à distance.
C'est la raison. Vous pouvez le faire via une tâche planifiée.
la source
Pour exécuter des commandes Powershell à distance, vous DEVEZ exécuter en tant qu'administrateur sur la machine à partir de laquelle vous lancez les commandes, au moins dans la configuration prête à l'emploi. Il s'agit d'une limitation documentée de la communication à distance PowerShell, bien qu'il soit possible de détendre les valeurs par défaut si vous êtes déterminé, mais cela impliquera d'apporter des modifications à la configuration de PowerShell.
Pour l'exécution à distance, transmettez-vous des informations d'identification à l'aide du paramètre -credentials? par exemple
la source
Concernant les mises à jour Windows sur les serveurs distants, j'ai pu le faire fonctionner en configurant un point de terminaison JEA sur le serveur distant pour qu'il s'exécute en tant que compte virtuel local.
Depuis https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/jea/session-configurations :
Quickfix¹:
(1.) Créez une nouvelle configuration de session illimitée (et persistante!) Sur ComputerB (serveur distant):
(2.) Depuis ComputerA (client local), connectez-vous à notre configuration de session sans restriction sur ComputerB:
¹ copié depuis /programming//a/60046097/1322112
la source