about_Remote_Troubleshooting

Description courte

Décrit comment résoudre les problèmes liés aux opérations à distance dans PowerShell.

Description longue

Cette section décrit certains des problèmes que vous pouvez rencontrer lors de l’utilisation des fonctionnalités de communication à distance de PowerShell basées sur WS-Management technologie et suggère des solutions à ces problèmes.

Avant d’utiliser la communication à distance PowerShell, consultez about_Remote et about_Remote_Requirements pour obtenir des conseils sur la configuration et l’utilisation de base. En outre, les rubriques d’aide pour chacune des applets de commande de communication à distance, en particulier les descriptions de paramètres, ont des informations utiles qui sont conçues pour vous aider à éviter les problèmes.

Notes

Pour afficher ou modifier les paramètres de l’ordinateur local dans le lecteur WSMan : y compris les modifications apportées aux configurations de session, aux hôtes approuvés, aux ports ou aux écouteurs, démarrez PowerShell avec l’option Exécuter en tant qu’administrateur .

Résolution des problèmes d’autorisation et d’authentification

Cette section décrit les problèmes de communication à distance liés aux autorisations utilisateur et ordinateur et aux exigences de communication à distance.

Comment s’exécuter en tant qu’administrateur

ERROR: Access is denied. You need to run this cmdlet from an elevated
process.

Pour démarrer une session à distance sur l’ordinateur local, ou pour afficher ou modifier les paramètres de l’ordinateur local dans le lecteur WSMan : y compris les modifications apportées aux configurations de session, aux hôtes approuvés, aux ports ou aux écouteurs, démarrez Windows PowerShell avec l’option Exécuter en tant qu’administrateur.

Pour démarrer Windows PowerShell avec l’option Exécuter en tant qu’administrateur :

  • Cliquez avec le bouton droit sur une icône Windows PowerShell (ou Windows PowerShell ISE), puis cliquez sur Exécuter en tant qu’administrateur.

    Pour démarrer Windows PowerShell avec l’option Exécuter en tant qu’administrateur dans Windows 7 et Windows Server 2008 R2.

  • Dans la barre des tâches Windows, cliquez avec le bouton droit sur l’icône Windows PowerShell, puis cliquez sur Exécuter en tant qu’administrateur.

    Dans Windows Server 2008 R2, l’icône Windows PowerShell est épinglée à la barre des tâches par défaut.

Comment activer la communication à distance

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to
listen for requests on the correct port and HTTP URL.

Aucune configuration n’est requise pour permettre à un ordinateur d’envoyer des commandes à distance. Toutefois, pour recevoir des commandes à distance, la communication à distance PowerShell doit être activée sur l’ordinateur. L’activation inclut le démarrage du service WinRM, la définition du type de démarrage du service WinRM sur Automatique, la création d’écouteurs pour les connexions HTTP et HTTPS et la création de configurations de session par défaut.

Windows PowerShell communication à distance est activée sur Windows Server 2012 et versions plus récentes de Windows Server par défaut. Sur tous les autres systèmes, exécutez l’applet de commande pour activer la Enable-PSRemoting communication à distance. Vous pouvez également exécuter l’applet de commande pour réactiver la Enable-PSRemoting communication à distance sur Windows Server 2012 et les versions plus récentes de Windows Server si la communication à distance est désactivée.

Pour configurer un ordinateur pour recevoir des commandes à distance, utilisez l’applet de Enable-PSRemoting commande. La commande suivante active tous les paramètres distants requis, active les configurations de session et redémarre le service WinRM pour apporter les modifications effectives.

Enable-PSRemoting

Pour supprimer toutes les invites utilisateur, tapez :

Enable-PSRemoting -Force

Pour plus d’informations, consultez Enable-PSRemoting.

Comment activer la communication à distance dans une entreprise

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Pour permettre à un seul ordinateur de recevoir des commandes PowerShell distantes et d’accepter des connexions, utilisez l’applet de Enable-PSRemoting commande.

Pour activer la communication à distance pour plusieurs ordinateurs d’une entreprise, vous pouvez utiliser les options mises à l’échelle suivantes.

  • Pour configurer les écouteurs pour la communication à distance, activez la configuration automatique des écouteurs de stratégie de groupe.

  • Pour définir le type de démarrage de Windows Remote Management (WinRM) sur Automatique sur plusieurs ordinateurs, utilisez l’applet Set-Service de commande.

  • Pour activer une exception de pare-feu, utilisez le Pare-feu Windows : Autoriser la stratégie de groupe Exceptions de port local.

Comment activer les écouteurs à l’aide d’une stratégie de groupe

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Pour configurer les écouteurs pour tous les ordinateurs d’un domaine, activez la configuration automatique d’écouteurs dans le chemin d’accès stratégie de groupe suivant :

Computer Configuration\Administrative Templates\Windows Components
    \Windows Remote Management (WinRM)\WinRM service

Activez la stratégie et spécifiez les filtres IPv4 et IPv6. Les caractères génériques (*) sont autorisés.

Comment activer la communication à distance sur les réseaux publics

ERROR:  Unable to check the status of the firewall

L’applet Enable-PSRemoting de commande retourne cette erreur lorsque le réseau local est public et que le paramètre SkipNetworkProfileCheck n’est pas utilisé dans la commande.

Sur les versions serveur de Windows, Enable-PSRemoting réussit sur tous les types d’emplacements réseau. Il crée des règles de pare-feu qui autorisent l’accès à distance aux réseaux privés et de domaine (« Famille » et « Travail »). Pour les réseaux publics, il crée des règles de pare-feu qui autorisent l’accès à distance à partir du même sous-réseau local.

Sur les versions clientes de Windows, Enable-PSRemoting réussit sur les réseaux privés et de domaine. Par défaut, elle échoue sur les réseaux publics, mais si vous utilisez le paramètre SkipNetworkProfileCheck , Enable-PSRemoting réussit et crée une règle de pare-feu qui autorise le trafic à partir du même sous-réseau local.

Pour supprimer la restriction de sous-réseau local sur les réseaux publics et autoriser l’accès à distance à partir de n’importe quel emplacement, exécutez la commande suivante :

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

L’applet Set-NetFirewallRule de commande est exportée par le module NetSecurity.

Notes

Le nom de la règle de pare-feu peut être différent pour différentes versions de Windows. Permet Get-NetFirewallRule d’afficher une liste de règles. Avant d’activer la règle de pare-feu, affichez les paramètres de sécurité de la règle pour vérifier que la configuration est appropriée pour votre environnement.

Notes

Dans Windows PowerShell 2.0, sur les ordinateurs exécutant des versions de serveur de Windows, Enable-PSRemoting crée des règles de pare-feu qui autorisent l’accès à distance sur des réseaux privés, de domaine et publics. Sur les ordinateurs exécutant des versions clientes de Windows, Enable-PSRemoting crée des règles de pare-feu qui autorisent l’accès à distance uniquement sur les réseaux privés et de domaine.

Comment activer une exception de pare-feu à l’aide d’une stratégie de groupe

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Pour activer une exception de pare-feu pour tous les ordinateurs d’un domaine, activez le Pare-feu Windows : autoriser la stratégie d’exceptions de port local dans le chemin d’accès stratégie de groupe suivant :

Computer Configuration\Administrative Templates\Network
    \Network Connections\Windows Firewall\Domain Profile

Cette stratégie permet aux membres du groupe Administrateurs sur l’ordinateur d’utiliser le Pare-feu Windows dans Panneau de configuration de créer une exception de pare-feu pour le service de gestion à distance Windows.

Si la configuration de la stratégie est incorrecte, vous pouvez recevoir l’erreur suivante :

The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.

Une erreur de configuration dans la stratégie entraîne une valeur vide pour la propriété ListeningOn . Utilisez la commande suivante pour vérifier la valeur.

PS> Get-WSManInstance winrm/config/listener -Enumerate

cfg                   : http://schemas.microsoft.com/wbem/wsman/1/config/listener
xsi                   : http://www.w3.org/2001/XMLSchema-instance
Source                : GPO
lang                  : en-US
Address               : *
Transport             : HTTP
Port                  : 5985
Hostname              :
Enabled               : true
URLPrefix             : wsman
CertificateThumbprint :
ListeningOn           : {}

Comment définir le type de démarrage du service WinRM

ERROR:  ACCESS IS DENIED

La communication à distance PowerShell dépend du service Windows Remote Management (WinRM). Le service doit être en cours d’exécution pour prendre en charge les commandes à distance.

Sur les versions serveur de Windows, le type de démarrage du service Windows Remote Management (WinRM) est automatique.

Toutefois, sur les versions clientes de Windows, le service WinRM est désactivé par défaut.

Pour définir le type de démarrage d’un service sur un ordinateur distant, utilisez l’applet Set-Service de commande.

Pour exécuter la commande sur plusieurs ordinateurs, vous pouvez créer un fichier texte ou un fichier CSV des noms d’ordinateurs.

Par exemple, les commandes suivantes obtiennent une liste de noms d’ordinateurs à partir du Servers.txt fichier, puis définissent le type de démarrage du service WinRM sur tous les ordinateurs sur Automatique.

$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic

Pour afficher les résultats, utilisez l’applet Get-WMIObject de commande avec l’objet Win32_Service . Pour plus d’informations, consultez Set-Service.

Comment recréer les configurations de session par défaut

ERROR:  ACCESS IS DENIED

Pour vous connecter à l’ordinateur local et exécuter des commandes à distance, l’ordinateur local doit inclure des configurations de session pour les commandes à distance.

Lorsque vous utilisez Enable-PSRemoting, il crée des configurations de session par défaut sur l’ordinateur local. Les utilisateurs distants utilisent ces configurations de session chaque fois qu’une commande distante n’inclut pas le paramètre ConfigurationName .

Si les configurations par défaut sur un ordinateur ne sont pas inscrites ou supprimées, utilisez l’applet Enable-PSRemoting de commande pour les recréer. Vous pouvez utiliser cette applet de commande à plusieurs reprises. Elle ne génère pas d’erreurs si une fonctionnalité est déjà configurée.

Si vous modifiez les configurations de session par défaut et souhaitez restaurer les configurations de session par défaut d’origine, utilisez l’applet Unregister-PSSessionConfiguration de commande pour supprimer les configurations de session modifiées, puis utilisez l’applet de Enable-PSRemoting commande pour les restaurer. Enable-PSRemoting ne modifie pas les configurations de session existantes.

Notes

Lorsque vous Enable-PSRemoting restaurez la configuration de session par défaut, elle ne crée pas de descripteurs de sécurité explicites pour les configurations. Au lieu de cela, les configurations héritent du descripteur de sécurité du RootSDDL, qui est sécurisé par défaut.

Pour voir le descripteur de sécurité RootSDDL, tapez :

Get-Item wsman:\localhost\Service\RootSDDL

Pour modifier rootSDDL, utilisez l’applet Set-Item de commande dans le lecteur WSMan: . Pour modifier le descripteur de sécurité d’une configuration de session, utilisez l’applet Set-PSSessionConfiguration de commande avec les paramètres SecurityDescriptorSDDL ou ShowSecurityDescriptorUI .

Pour plus d’informations sur WSMan : lecteur, consultez la rubrique d’aide pour le fournisseur WSMan (« Get-Help wsman »).

Comment fournir des informations d’identification d’administrateur

ERROR:  ACCESS IS DENIED

Pour créer une session PSSession ou exécuter des commandes sur un ordinateur distant, par défaut, l’utilisateur actuel doit être membre du groupe Administrateurs sur l’ordinateur distant. Les informations d’identification sont parfois requises même lorsque l’utilisateur actuel est connecté à un compte membre du groupe Administrateurs.

Si l’utilisateur actuel est membre du groupe Administrateurs sur l’ordinateur distant ou peut fournir les informations d’identification d’un membre du groupe Administrateurs, utilisez le paramètre Credential du New-PSSessionou Enter-PSSessionInvoke-Command des applets de commande pour vous connecter à distance.

Par exemple, la commande suivante fournit les informations d’identification d’un administrateur.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Pour plus d’informations sur le paramètre Credential , consultez New-PSSession, Enter-PSSession ou Invoke-Command.

Comment activer la communication à distance pour les utilisateurs non administratifs

ERROR:  ACCESS IS DENIED

Pour établir une session PSSession ou exécuter une commande sur un ordinateur distant, l’utilisateur doit avoir l’autorisation d’utiliser les configurations de session sur l’ordinateur distant.

Par défaut, seuls les membres du groupe Administrateurs sur un ordinateur sont autorisés à utiliser les configurations de session par défaut. Par conséquent, seuls les membres du groupe Administrateurs peuvent se connecter à distance à l’ordinateur.

Pour permettre à d’autres utilisateurs de se connecter à l’ordinateur local, accordez à l’utilisateur des autorisations d’exécution aux configurations de session par défaut sur l’ordinateur local.

La commande suivante ouvre une feuille de propriétés qui vous permet de modifier le descripteur de sécurité de la configuration de session Microsoft.PowerShell par défaut sur l’ordinateur local.

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

Pour plus d’informations, consultez about_Session_Configurations.

Comment activer la communication à distance pour les administrateurs dans d’autres domaines

ERROR:  ACCESS IS DENIED

Lorsqu’un utilisateur d’un autre domaine est membre du groupe Administrateurs sur l’ordinateur local, l’utilisateur ne peut pas se connecter à distance à l’ordinateur local avec des privilèges d’administrateur. Par défaut, les connexions distantes à partir d’autres domaines s’exécutent uniquement avec des jetons de privilège utilisateur standard.

Toutefois, vous pouvez utiliser l’entrée de Registre LocalAccountTokenFilterPolicy pour modifier le comportement par défaut et autoriser les utilisateurs distants membres du groupe Administrateurs à s’exécuter avec des privilèges d’administrateur.

Attention

L’entrée LocalAccountTokenFilterPolicy désactive les restrictions distantes de contrôle de compte d’utilisateur (UAC) pour tous les utilisateurs de tous les ordinateurs affectés. Examinez attentivement les implications de ce paramètre avant de modifier la stratégie.

Pour modifier la stratégie, utilisez la commande suivante pour définir la valeur de l’entrée de Registre LocalAccountTokenFilterPolicy sur 1.

New-ItemProperty -Name LocalAccountTokenFilterPolicy `
  -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
  -PropertyType DWord -Value 1

Comment utiliser une adresse IP dans une commande distante

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

Le paramètre ComputerName du , Enter-PSSession et Invoke-Command les applets de New-PSSessioncommande acceptent une adresse IP comme valeur valide. Toutefois, étant donné que l’authentification Kerberos ne prend pas en charge les adresses IP, l’authentification NTLM est utilisée par défaut chaque fois que vous spécifiez une adresse IP.

Lorsque vous utilisez l’authentification NTLM, la procédure suivante est requise pour la communication à distance.

  1. Configurez l’ordinateur pour le transport HTTPS ou ajoutez les adresses IP des ordinateurs distants à la liste TrustedHosts sur l’ordinateur local.

  2. Utilisez le paramètre Credential dans toutes les commandes distantes.

    Cela est nécessaire même lorsque vous soumettez les informations d’identification de l’utilisateur actuel.

Comment se connecter à distance à partir d’un ordinateur basé sur un groupe de travail

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

Lorsque l’ordinateur local n’est pas dans un domaine, la procédure suivante est requise pour la communication à distance.

  1. Configurez l’ordinateur pour le transport HTTPS ou ajoutez les noms des ordinateurs distants à la liste TrustedHosts sur l’ordinateur local.

  2. Vérifiez qu’un mot de passe est défini sur l’ordinateur basé sur un groupe de travail. Si un mot de passe n’est pas défini ou si la valeur du mot de passe est vide, vous ne pouvez pas exécuter de commandes à distance.

    Pour définir le mot de passe de votre compte d’utilisateur, utilisez les comptes d’utilisateur dans Panneau de configuration.

  3. Utilisez le paramètre Credential dans toutes les commandes distantes.

    Cela est nécessaire même lorsque vous soumettez les informations d’identification de l’utilisateur actuel.

Comment ajouter un ordinateur à la liste des hôtes approuvés

L’élément TrustedHosts peut contenir une liste séparée par des virgules de noms d’ordinateurs, d’adresses IP et de noms de domaine complets. Les caractères génériques sont autorisés.

Pour afficher ou modifier la liste des hôtes approuvés, utilisez le lecteur WSMan: . L’élément TrustedHost se trouve dans le WSMan:\localhost\Client nœud.

Seuls les membres du groupe Administrateurs sur l’ordinateur sont autorisés à modifier la liste des hôtes approuvés sur l’ordinateur.

Attention : La valeur que vous définissez pour l’élément TrustedHosts affecte tous les utilisateurs de l’ordinateur.

Pour afficher la liste des hôtes approuvés, utilisez la commande suivante :

Get-Item wsman:\localhost\Client\TrustedHosts

Vous pouvez également utiliser l’applet Set-Location de commande (alias = cd) pour parcourir le lecteur WSMan : vers l’emplacement. Par exemple :

cd WSMan:\localhost\Client; dir

Pour ajouter tous les ordinateurs à la liste des hôtes approuvés, utilisez la commande suivante, qui place la valeur * (all) dans ComputerName

Set-Item wsman:localhost\client\trustedhosts -Value *

Vous pouvez également utiliser un caractère générique (*) pour ajouter tous les ordinateurs d’un domaine particulier à la liste des hôtes approuvés. Par exemple, la commande suivante ajoute tous les ordinateurs du domaine Fabrikam à la liste des hôtes approuvés.

Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

Pour ajouter les noms d’ordinateurs particuliers à la liste des hôtes approuvés, utilisez le format de commande suivant :

Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>

où chaque valeur <ComputerName> doit avoir le format suivant :

<Computer>.<Domain>.<Company>.<top-level-domain>

Par exemple :

$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server

Pour ajouter un nom d'ordinateur à une liste existante d'hôtes approuvés, enregistrez d'abord la valeur actuelle dans une variable, puis affectez-lui une liste séparée par des virgules qui inclut les valeurs actuelles et nouvelles.

Par exemple, pour ajouter l'ordinateur Serveur01 à une liste existante d'hôtes approuvés, utilisez la commande suivante :

$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value

Set-Item wsman:\localhost\Client\TrustedHosts -Value `
  "$curValue, Server01.Domain01.Fabrikam.com"

Pour ajouter les adresses IP d’ordinateurs particuliers à la liste des hôtes approuvés, utilisez le format de commande suivant :

Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>

Par exemple :

Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

Pour ajouter un ordinateur à la liste TrustedHosts d’un ordinateur distant, utilisez l’applet Connect-WSMan de commande pour ajouter un nœud pour l’ordinateur distant au lecteur WSMan : sur l’ordinateur local. Utilisez ensuite une Set-Item commande pour ajouter l’ordinateur.

Pour plus d’informations sur l’applet Connect-WSMan de commande, consultez Connect-WSMan.

Résolution des problèmes de configuration de l’ordinateur

Cette section décrit les problèmes de communication à distance liés à des configurations particulières d’un ordinateur, d’un domaine ou d’une entreprise.

Comment configurer la communication à distance sur d’autres ports

ERROR: The connection to the specified remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

La communication à distance PowerShell utilise le port 80 pour le transport HTTP par défaut. Le port par défaut est utilisé chaque fois que l’utilisateur ne spécifie pas les paramètres ConnectionURI ou Port dans une commande distante.

Pour modifier le port par défaut utilisé par PowerShell, utilisez Set-Item l’applet de commande dans le lecteur WSMan : pour modifier la valeur de port dans le nœud feuille de l’écouteur.

Par exemple, la commande suivante remplace le port par défaut par 8080.

Set-Item wsman:\localhost\listener\listener*\port -Value 8080

Comment configurer la communication à distance avec un serveur proxy

ERROR: The client cannot connect to the destination specified in the request.
Verify that the service on the destination is running and is accepting
requests.

Étant donné que la communication à distance PowerShell utilise le protocole HTTP, elle est affectée par les paramètres de proxy HTTP. Dans les entreprises disposant de serveurs proxy, les utilisateurs ne peuvent pas accéder directement à un ordinateur distant PowerShell.

Pour résoudre ce problème, utilisez les options de paramètre de proxy dans votre commande à distance. Les options suivantes sont disponibles :

  • ProxyAccessType
  • ProxyAuthentication
  • ProxyCredential

Pour définir ces options pour une commande particulière, utilisez la procédure suivante :

  1. Utilisez les paramètres ProxyAccessType, ProxyAuthentication et ProxyCredential de l’applet New-PSSessionOption de commande pour créer un objet d’option de session avec les paramètres proxy de votre entreprise. Enregistrer l’objet d’option est une variable.

  2. Utilisez la variable qui contient l’objet d’option comme valeur du paramètre SessionOption d’un , Enter-PSSessionou Invoke-Command d’une New-PSSessioncommande.

Par exemple, la commande suivante crée un objet d’option de session avec des options de session proxy, puis utilise l’objet pour créer une session distante.

$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

New-PSSession -ConnectionURI https://www.fabrikam.com

Pour plus d’informations sur l’applet New-PSSessionOption de commande, consultez New-PSSessionOption.

Pour définir ces options pour toutes les commandes distantes de la session active, utilisez l’objet d’option qui New-PSSessionOption crée dans la valeur de la $PSSessionOption variable de préférence. Pour plus d’informations, consultez about_Preference_Variables.

Pour définir ces options pour toutes les commandes distantes, toutes les sessions PowerShell sur l’ordinateur local, ajoutez la $PSSessionOption variable de préférence à votre profil PowerShell. Pour plus d’informations sur les profils PowerShell, consultez about_Profiles.

Comment détecter une session 32 bits sur un ordinateur 64 bits

ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.

Si l’ordinateur distant exécute une version 64 bits de Windows et que la commande à distance utilise une configuration de session 32 bits, telle que Microsoft.PowerShell32, Windows Remote Management (WinRM) charge un processus WOW64 et Windows redirige automatiquement toutes les références au répertoire vers le $env:Windir\System32$env:Windir\SysWOW64 répertoire.

Par conséquent, si vous essayez d’utiliser des outils dans le répertoire System32 qui n’ont pas d’équivalents dans le répertoire SysWow64, par Defrag.exeexemple, les outils sont introuvables dans le répertoire.

Pour rechercher l’architecture du processeur utilisée dans la session, utilisez la valeur de la variable d’environnement PROCESSOR_ARCHITECTURE . La commande suivante recherche l’architecture du processeur de la session dans la $s variable.

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86

Pour plus d’informations sur les configurations de session, consultez about_Session_Configurations.

Résolution des problèmes de stratégie et de préférence

Cette section décrit les problèmes de communication à distance liés aux stratégies et aux préférences définies sur les ordinateurs locaux et distants.

Comment modifier la stratégie d’exécution pour Import-PSSession et Import-Module

ERROR: Import-Module: File <filename> cannot be loaded because the
execution of scripts is disabled on this system.

Les Import-PSSession applets de commande et Export-PSSession les applets de commande créent des modules qui contiennent des fichiers de script non signés et des fichiers de mise en forme.

Pour importer les modules créés par ces applets de commande, l’utilisation Import-PSSession ou Import-Modulela stratégie d’exécution dans la session active ne peut pas être Restreinte ou AllSigned. Pour plus d’informations sur les stratégies d’exécution de PowerShell, consultez about_Execution_Policies.

Pour importer les modules sans modifier la stratégie d’exécution de l’ordinateur local défini dans le Registre, utilisez le paramètre Scope de Set-ExecutionPolicy pour définir une stratégie d’exécution moins restrictive pour un seul processus.

Par exemple, la commande suivante démarre un processus avec la stratégie d’exécution RemoteSigned . La modification de la stratégie d’exécution affecte uniquement le processus actuel et ne modifie pas le paramètre de Registre PowerShell ExecutionPolicy .

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

Vous pouvez également utiliser le paramètre ExecutionPolicy pour PowerShell.exe démarrer une seule session avec une stratégie d’exécution moins restrictive.

PowerShell.exe -ExecutionPolicy RemoteSigned

Pour plus d’informations sur les stratégies d’exécution, consultez about_Execution_Policies. Pour plus d'informations, voir PowerShell.exe -?.

Comment définir et modifier des quotas

ERROR: The total data received from the remote client exceeded allowed
maximum.

Vous pouvez utiliser des quotas pour protéger l’ordinateur local et l’ordinateur distant contre une utilisation excessive des ressources, à la fois accidentelle et malveillante.

Les quotas suivants sont disponibles dans la configuration de base.

  • Fournisseur WSMan (WSMan :) fournit plusieurs paramètres de quota, tels que les paramètres MaxEnvelopeSizeKB et MaxProviderRequests dans le WSMan:<ComputerName> nœud et les paramètres MaxConcurrentOperations, MaxConcurrentOperationsPerUser et MaxConnections dans le WSMan:<ComputerName>\Service nœud.

  • Vous pouvez protéger l’ordinateur local à l’aide des paramètres MaximumReceivedDataSizePerCommand et MaximumReceivedObjectSize de l’applet New-PSSessionOption de commande et de la $PSSessionOption variable de préférence.

  • Vous pouvez protéger l’ordinateur distant en ajoutant des restrictions aux configurations de session, telles que l’utilisation des paramètres MaximumReceivedDataSizePerCommandMB et MaximumReceivedObjectSizeMB de l’applet Register-PSSessionConfiguration de commande.

Lorsque les quotas entrent en conflit avec une commande, PowerShell génère une erreur.

Pour résoudre l’erreur, modifiez la commande distante pour vous conformer au quota. Vous pouvez également déterminer la source du quota, puis augmenter le quota pour permettre à la commande de se terminer.

Par exemple, la commande suivante augmente le quota de taille d’objet dans la configuration de session Microsoft.PowerShell sur l’ordinateur distant de 10 Mo (valeur par défaut) à 11 Mo.

Set-PSSessionConfiguration -Name microsoft.PowerShell `
  -MaximumReceivedObjectSizeMB 11 -Force

Pour plus d’informations sur l’applet de New-PSSessionOption commande, consultez New-PSSessionOption.

Pour plus d’informations sur les quotas WS-Management, consultez about_WSMan_Provider.

Comment résoudre les erreurs de délai d’expiration

ERROR: The WS-Management service cannot complete the operation within
the time specified in OperationTimeout.

Vous pouvez utiliser des délais d’expiration pour protéger l’ordinateur local et l’ordinateur distant contre une utilisation excessive des ressources, à la fois accidentelle et malveillante. Lorsque les délais d’expiration sont définis sur l’ordinateur local et distant, PowerShell utilise les paramètres de délai d’expiration les plus courts.

Les délais d’expiration suivants sont disponibles dans la configuration de base.

  • Fournisseur WSMan (WSMan :) fournit plusieurs paramètres de délai d’expiration côté client et côté service, tels que le paramètre MaxTimeoutms dans le WSMan:<ComputerName> nœud et les paramètres EnumerationTimeoutms et MaxPacketRetrievalTimeSeconds dans le WSMan:<ComputerName>\Service nœud.

  • Vous pouvez protéger l’ordinateur local à l’aide des paramètres CancelTimeout, IdleTimeout, OpenTimeout et OperationTimeout de l’applet New-PSSessionOption de commande et de la $PSSessionOption variable de préférence.

  • Vous pouvez également protéger l’ordinateur distant en définissant des valeurs de délai d’expiration par programmation dans la configuration de session pour la session.

Lorsqu’une valeur de délai d’expiration n’autorise pas l’exécution d’une opération, PowerShell met fin à l’opération et génère une erreur.

Pour résoudre l’erreur, modifiez la commande pour qu’elle se termine dans l’intervalle de délai d’attente ou déterminez la source de la limite de délai d’expiration et augmentez l’intervalle de délai d’attente pour permettre à la commande de se terminer.

Par exemple, les commandes suivantes utilisent l’applet New-PSSessionOption de commande pour créer un objet d’option de session avec une valeur OperationTimeout de 4 minutes (en MS), puis utilisez l’objet d’option de session pour créer une session distante.

$pso = New-PSSessionoption -OperationTimeout 240000

New-PSSession -ComputerName Server01 -sessionOption $pso

Pour plus d’informations sur les délais d’expiration WS-Management, consultez la rubrique d’aide pour le fournisseur WSMan (type Get-Help WSMan).

Pour plus d’informations sur l’applet New-PSSessionOption de commande, consultez New-PSSessionOption.

Résolution des problèmes de comportement de non réponse

Cette section décrit les problèmes de communication à distance qui empêchent la fin d’une commande et empêchent ou retardent le retour de l’invite PowerShell.

Comment interrompre une commande

Certains programmes Windows natifs, tels que les programmes avec une interface utilisateur, les applications console qui demandent une entrée et les applications console qui utilisent l’API de console Win32, ne fonctionnent pas correctement dans l’hôte distant PowerShell.

Lorsque vous utilisez ces programmes, vous pouvez voir un comportement inattendu, tel qu’aucune sortie, sortie partielle ou une commande distante qui ne se termine pas.

Pour mettre fin à un programme qui ne répond pas, tapez Ctrl+C. Pour afficher les erreurs qui ont pu être signalées, tapez $error l’hôte local et la session à distance.

Comment récupérer à partir d’une défaillance d’opération

ERROR: The I/O operation has been aborted because of either a thread exit
or an  application request.

Cette erreur est retournée lorsqu’une opération est terminée avant sa fin. En règle générale, il se produit lorsque le service WinRM s’arrête ou redémarre pendant que d’autres opérations WinRM sont en cours.

Pour résoudre ce problème, vérifiez que le service WinRM est en cours d’exécution et réessayez la commande.

  1. Démarrez PowerShell avec l’option Exécuter en tant qu’administrateur .

  2. Exécutez la commande suivante :

    Start-Service WinRM

  3. Réexécutez la commande qui a généré l’erreur.

Limitations de Linux et macOS

Authentification

Seule l’authentification de base fonctionne sur macOS et tente d’utiliser d’autres schémas d’authentification peut entraîner un blocage du processus.

Consultez les instructions d’authentification OMI .

Voir aussi