about_RemoteAbout Remote FAQ

Description courteShort description

Contient des questions et des réponses sur l’exécution des commandes distantes dans PowerShell.Contains questions and answers about running remote commands in PowerShell.

Description longueLong description

Lorsque vous travaillez à distance, vous tapez des commandes dans PowerShell sur un ordinateur (appelé « ordinateur local »), mais les commandes s’exécutent sur un autre ordinateur (appelé « ordinateur distant »).When you work remotely, you type commands in PowerShell on one computer (known as the "local computer"), but the commands run on another computer (known as the "remote computer"). L’expérience de travail à distance doit être aussi proche que possible de travailler directement sur l’ordinateur distant.The experience of working remotely should be as much like working directly at the remote computer as possible.

Remarque : pour utiliser la communication à distance PowerShell, l’ordinateur distant doit être configuré pour la communication à distance.Note: To use PowerShell remoting, the remote computer must be configured for remoting. Pour plus d'informations, consultez about_Remote_Requirements.For more information, see about_Remote_Requirements.

PowerShell doit-il être installé sur les deux ordinateurs ?Must both computers have PowerShell installed?

Oui.Yes. Pour travailler à distance, les ordinateurs locaux et distants doivent avoir PowerShell, l’infrastructure Microsoft .NET et le protocole WS-Management (Web Services for Management).To work remotely, the local and remote computers must have PowerShell, the Microsoft .NET Framework, and the Web Services for Management (WS-Management) protocol. Tous les fichiers et autres ressources nécessaires pour exécuter une commande particulière doivent se trouver sur l’ordinateur distant.Any files and other resources that are needed to execute a particular command must be on the remote computer.

Les ordinateurs exécutant Windows PowerShell 3,0 et les ordinateurs exécutant Windows PowerShell 2,0 peuvent se connecter les uns aux autres à distance et exécuter des commandes distantes.Computers running Windows PowerShell 3.0 and computers running Windows PowerShell 2.0 can connect to each other remotely and run remote commands. Toutefois, certaines fonctionnalités, telles que la possibilité de se déconnecter d’une session et de se reconnecter, fonctionnent uniquement lorsque les deux ordinateurs exécutent Windows PowerShell 3,0.However, some features, such as the ability to disconnect from a session and reconnect to it, work only when both computers are running Windows PowerShell 3.0.

Vous devez être autorisé à vous connecter à l’ordinateur distant, à exécuter PowerShell et à accéder aux magasins de données (tels que des fichiers et des dossiers) et au registre de l’ordinateur distant.You must have permission to connect to the remote computer, permission to run PowerShell, and permission to access data stores (such as files and folders), and the registry on the remote computer.

Pour plus d'informations, consultez about_Remote_Requirements.For more information, see about_Remote_Requirements.

Fonctionnement de la communication à distanceHow does remoting work?

Lorsque vous envoyez une commande à distance, la commande est transmise via le réseau vers le moteur PowerShell sur l’ordinateur distant, et elle s’exécute dans le client PowerShell sur l’ordinateur distant.When you submit a remote command, the command is transmitted across the network to the PowerShell engine on the remote computer, and it runs in the PowerShell client on the remote computer. Les résultats de la commande sont renvoyés à l’ordinateur local et s’affichent dans la session PowerShell sur l’ordinateur local.The command results are sent back to the local computer and appear in the PowerShell session on the local computer.

Pour transmettre les commandes et recevoir la sortie, PowerShell utilise le protocole WS-Management.To transmit the commands and receive the output, PowerShell uses the WS-Management protocol. Pour plus d’informations sur le protocole WS-Management, consultez protocole WS-Management dans la documentation de Windows.For information about the WS-Management protocol, see WS-Management Protocol in the Windows documentation.

À compter de Windows PowerShell 3,0, les sessions à distance sont stockées sur l’ordinateur distant.Beginning in Windows PowerShell 3.0, remote sessions are stored on the remote computer. Cela vous permet de vous déconnecter de la session et de vous reconnecter à partir d’une autre session ou d’un autre ordinateur sans interrompre les commandes ou perdre l’État.This enables you to disconnect from the session and reconnect from a different session or a different computer without interrupting the commands or losing state.

La communication à distance PowerShell est-elle sécurisée ?Is PowerShell remoting secure?

Lorsque vous vous connectez à un ordinateur distant, le système utilise les informations d’identification du nom d’utilisateur et du mot de passe sur l’ordinateur local ou les informations d’identification que vous fournissez dans la commande pour vous connecter à l’ordinateur distant.When you connect to a remote computer, the system uses the username and password credentials on the local computer or the credentials that you supply in the command to log you in to the remote computer. Les informations d’identification et le reste de la transmission sont chiffrés.The credentials and the rest of the transmission are encrypted.

Pour ajouter une protection supplémentaire, vous pouvez configurer l’ordinateur distant pour qu’il utilise protocole SSL (SSL) au lieu de HTTP pour écouter les demandes Windows Remote Management (WinRM).To add additional protection, you can configure the remote computer to use Secure Sockets Layer (SSL) instead of HTTP to listen for Windows Remote Management (WinRM) requests. Ensuite, les utilisateurs peuvent utiliser le paramètre UseSSL des Invoke-Command applets de commande, New-PSSession et lors de l' Enter-PSSession établissement d’une connexion.Then, users can use the UseSSL parameter of the Invoke-Command, New-PSSession, and Enter-PSSession cmdlets when establishing a connection. Cette option utilise le canal HTTPs plus sécurisé au lieu du protocole HTTP.This option uses the more secure HTTPS channel instead of HTTP.

Toutes les commandes distantes requièrent-elle la communication à distance PowerShell ?Do all remote commands require PowerShell remoting?

Non.No. Plusieurs applets de commande ont un paramètre ComputerName qui vous permet d’obtenir des objets de l’ordinateur distant.Several cmdlets have a ComputerName parameter that lets you get objects from the remote computer.

Ces applets de commande n’utilisent pas la communication à distance PowerShell.These cmdlets do not use PowerShell remoting. Vous pouvez donc les utiliser sur n’importe quel ordinateur exécutant PowerShell, même si l’ordinateur n’est pas configuré pour la communication à distance PowerShell ou si l’ordinateur ne remplit pas les conditions requises pour la communication à distance PowerShell.So, you can use them on any computer that is running PowerShell, even if the computer is not configured for PowerShell remoting or if the computer does not meet the requirements for PowerShell remoting.

Ces applets de commande sont les suivantes :These cmdlets include the following:

  • Get-Process
  • Get-Service
  • Get-WinEvent
  • Get-EventLog
  • Test-Connection

Pour rechercher toutes les applets de commande avec un paramètre ComputerName , tapez :To find all the cmdlets with a ComputerName parameter, type:

Get-Help * -Parameter ComputerName
# or
Get-Command -ParameterName ComputerName

Pour déterminer si le paramètre ComputerName d’une applet de commande particulière requiert la communication à distance PowerShell, consultez la description du paramètre.To determine whether the ComputerName parameter of a particular cmdlet requires PowerShell remoting, see the parameter description. Pour afficher la description du paramètre, tapez :To display the parameter description, type:

Get-Help <cmdlet-name> -Parameter ComputerName

Par exemple :For example:

Get-Help Get-Process -Parameter ComputerName

Pour toutes les autres commandes, utilisez l’applet de commande Invoke-Command .For all other commands, use the Invoke-Command cmdlet.

Comment faire exécuter une commande sur un ordinateur distant ?How do I run a command on a remote computer?

Pour exécuter une commande sur un ordinateur distant, utilisez l' Invoke-Command applet de commande.To run a command on a remote computer, use the Invoke-Command cmdlet.

Placez votre commande entre accolades ( {} ) pour en faire un bloc de script.Enclose your command in braces ({}) to make it a script block. Utilisez le paramètre scriptblock de Invoke-Command pour spécifier la commande.Use the ScriptBlock parameter of Invoke-Command to specify the command.

Vous pouvez utiliser le paramètre ComputerName de Invoke-Command pour spécifier un ordinateur distant.You can use the ComputerName parameter of Invoke-Command to specify a remote computer. Ou bien, vous pouvez créer une connexion permanente à un ordinateur distant (une session), puis utiliser le paramètre de session de Invoke-Command pour exécuter la commande dans la session.Or, you can create a persistent connection to a remote computer (a session) and then use the Session parameter of Invoke-Command to run the command in the session.

Par exemple, les commandes suivantes exécutent une Get-Process commande à distance.For example, the following commands run a Get-Process command remotely.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-Process}

#  - OR -

Invoke-Command -Session $s -ScriptBlock {Get-Process}

Pour interrompre une commande distante, tapez CTRL + C.To interrupt a remote command, type CTRL+C. La demande d’interruption est transmise à l’ordinateur distant, où elle met fin à la commande à distance.The interruption request is passed to the remote computer, where it terminates the remote command.

Pour plus d’informations sur les commandes distantes, consultez about_Remote et les rubriques d’aide pour les applets de commande qui prennent en charge la communication à distance.For more information about remote commands, see about_Remote and the Help topics for the cmdlets that support remoting.

Puis-je simplement faire appel à Telnet sur un ordinateur distant ?Can I just telnet into a remote computer?

Vous pouvez utiliser l' Enter-PSSession applet de commande pour démarrer une session interactive avec un ordinateur distant.You can use the Enter-PSSession cmdlet to start an interactive session with a remote computer.

À l’invite PowerShell, tapez :At the PowerShell prompt, type:

Enter-PSSession <ComputerName>

L’invite de commandes change pour indiquer que vous êtes connecté à l’ordinateur distant.The command prompt changes to show that you are connected to the remote computer.

<ComputerName>\C:>

À présent, les commandes que vous tapez s’exécutent sur l’ordinateur distant comme si vous les tapiez directement sur l’ordinateur distant.Now, the commands that you type run on the remote computer just as though you typed them directly on the remote computer.

Pour terminer la session interactive, tapez :To end the interactive session, type:

Exit-PSSession

Une session interactive est une session persistante qui utilise le protocole WS-Management.An interactive session is a persistent session that uses the WS-Management protocol. Elle n’est pas identique à l’utilisation de Telnet, mais elle offre une expérience similaire.It is not the same as using Telnet, but it provides a similar experience.

Pour plus d'informations, consultez Enter-PSSession.For more information, see Enter-PSSession.

Puis-je créer une connexion permanente ?Can I create a persistent connection?

Oui.Yes. Vous pouvez exécuter des commandes distantes en spécifiant le nom de l’ordinateur distant, son nom NetBIOS ou son adresse IP.You can run remote commands by specifying the name of the remote computer, its NetBIOS name, or its IP address. Ou bien, vous pouvez exécuter des commandes distantes en spécifiant une session PowerShell (PSSession) qui est connectée à l’ordinateur distant.Or, you can run remote commands by specifying a PowerShell session (PSSession) that is connected to the remote computer.

Quand vous utilisez le paramètre ComputerName de Invoke-Command ou Enter-PSSession , PowerShell établit une connexion temporaire.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, PowerShell establishes a temporary connection. PowerShell utilise la connexion pour exécuter uniquement la commande actuelle, puis ferme la connexion.PowerShell uses the connection to run only the current command, and then it closes the connection. Il s’agit d’une méthode très efficace pour exécuter une seule commande ou plusieurs commandes sans rapport, même sur de nombreux ordinateurs distants.This is a very efficient method for running a single command or several unrelated commands, even on many remote computers.

Lorsque vous utilisez l' New-PSSession applet de commande pour créer une session PSSession, PowerShell établit une connexion permanente pour la session PSSession.When you use the New-PSSession cmdlet to create a PSSession, PowerShell establishes a persistent connection for the PSSession. Ensuite, vous pouvez exécuter plusieurs commandes dans la session PSSession, y compris les commandes qui partagent des données.Then, you can run multiple commands in the PSSession, including commands that share data.

En général, vous créez une session PSSession pour exécuter une série de commandes associées qui partagent des données.Typically, you create a PSSession to run a series of related commands that share data. Dans le cas contraire, la connexion temporaire créée par le paramètre ComputerName est suffisante pour la plupart des commandes.Otherwise, the temporary connection created by the ComputerName parameter is sufficient for most commands.

Pour plus d’informations sur les sessions, consultez about_PSSessions.For more information about sessions, see about_PSSessions.

Puis-je exécuter des commandes sur plusieurs ordinateurs à la fois ?Can I run commands on more than one computer at a time?

Oui.Yes. Le paramètre ComputerName de l' Invoke-Command applet de commande accepte plusieurs noms d’ordinateur, et le paramètre de session accepte plusieurs sessions PSSession.The ComputerName parameter of the Invoke-Command cmdlet accepts multiple computer names, and the Session parameter accepts multiple PSSessions.

Quand vous exécutez une Invoke-Command commande, PowerShell exécute les commandes sur tous les ordinateurs spécifiés ou dans tous les sessions PSSession spécifiés.When you run an Invoke-Command command, PowerShell runs the commands on all of the specified computers or in all of the specified PSSessions.

PowerShell peut gérer des centaines de connexions à distance simultanées.PowerShell can manage hundreds of concurrent remote connections. Toutefois, le nombre de commandes distantes que vous pouvez envoyer peut être limité par les ressources de votre ordinateur et sa capacité à établir et à gérer plusieurs connexions réseau.However, the number of remote commands that you can send might be limited by the resources of your computer and its capacity to establish and maintain multiple network connections.

Pour plus d’informations, consultez l’exemple de la Invoke-Command rubrique d’aide.For more information, see the example in the Invoke-Command Help topic.

Où sont mes profils ?Where are my profiles?

Les profils PowerShell ne sont pas exécutés automatiquement dans les sessions à distance. par conséquent, les commandes ajoutées par le profil ne sont pas présentes dans la session.PowerShell profiles are not run automatically in remote sessions, so the commands that the profile adds are not present in the session. En outre, la $profile variable automatique n’est pas remplie dans les sessions à distance.In addition, the $profile automatic variable is not populated in remote sessions.

Pour exécuter un profil dans une session, utilisez l' Invoke-Command applet de commande.To run a profile in a session, use the Invoke-Command cmdlet.

Par exemple, la commande suivante exécute le profil CurrentUserCurrentHost à partir de l’ordinateur local dans la session dans $s .For example, the following command runs the CurrentUserCurrentHost profile from the local computer in the session in $s.

Invoke-Command -Session $s -FilePath $profile

La commande suivante exécute le profil CurrentUserCurrentHost à partir de l’ordinateur distant dans la session dans $s .The following command runs the CurrentUserCurrentHost profile from the remote computer in the session in $s. Étant donné que la $profile variable n’est pas remplie, la commande utilise le chemin d’accès explicite au profil.Because the $profile variable is not populated, the command uses the explicit path to the profile.

Invoke-Command -Session $s {
  . "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Après l’exécution de cette commande, les commandes ajoutées par le profil à la session sont disponibles dans $s .After running this command, the commands that the profile adds to the session are available in $s.

Vous pouvez également utiliser un script de démarrage dans une configuration de session pour exécuter un profil dans chaque session à distance qui utilise la configuration de session.You can also use a startup script in a session configuration to run a profile in every remote session that uses the session configuration.

Pour plus d’informations sur les profils PowerShell, voir about_Profiles.For more information about PowerShell profiles, see about_Profiles. Pour plus d’informations sur les configurations de session, consultez Register-PSSessionConfiguration .For more information about session configurations, see Register-PSSessionConfiguration.

Comment la limitation fonctionne-t-elle sur les commandes distantes ?How does throttling work on remote commands?

Pour vous aider à gérer les ressources sur votre ordinateur local, PowerShell intègre une fonctionnalité de limitation par commande qui vous permet de limiter le nombre de connexions à distance simultanées établies pour chaque commande.To help you manage the resources on your local computer, PowerShell includes a per-command throttling feature that lets you limit the number of concurrent remote connections that are established for each command.

La valeur par défaut est 32 connexions simultanées, mais vous pouvez utiliser le paramètre ThrottleLimit des applets de commande pour définir une limite de limitation personnalisée pour des commandes particulières.The default is 32 concurrent connections, but you can use the ThrottleLimit parameter of the cmdlets to set a custom throttle limit for particular commands.

Lorsque vous utilisez la fonctionnalité de limitation, n’oubliez pas qu’elle est appliquée à chaque commande, et non à l’ensemble de la session ou à l’ordinateur.When you use the throttling feature, remember that it is applied to each command, not to the entire session or to the computer. Si vous exécutez des commandes simultanément dans plusieurs sessions ou sessions PSSession, le nombre de connexions simultanées est la somme des connexions simultanées dans toutes les sessions.If you are running commands concurrently in several sessions or PSSessions, the number of concurrent connections is the sum of the concurrent connections in all the sessions.

Pour rechercher des applets de commande avec un paramètre ThrottleLimit , tapez :To find cmdlets with a ThrottleLimit parameter, type:

Get-Help * -Parameter ThrottleLimit
-or-
Get-Command -ParameterName ThrottleLimit

La sortie des commandes à distance est-elle différente de la sortie locale ?Is the output of remote commands different from local output?

Lorsque vous utilisez PowerShell localement, vous envoyez et recevez des objets « Live » .NET Framework. les objets « actifs » sont des objets qui sont associés à des programmes ou des composants système réels.When you use PowerShell locally, you send and receive "live" .NET Framework objects; "live" objects are objects that are associated with actual programs or system components. Lorsque vous appelez les méthodes ou modifiez les propriétés d’objets actifs, les modifications affectent le programme ou le composant réel.When you invoke the methods or change the properties of live objects, the changes affect the actual program or component. Et, lorsque les propriétés d’un programme ou d’un composant changent, les propriétés de l’objet qui les représentent sont également modifiées.And, when the properties of a program or component change, the properties of the object that represent them also change.

Toutefois, étant donné que la plupart des objets en ligne ne peuvent pas être transmis sur le réseau, PowerShell « sérialise » la plupart des objets envoyés dans les commandes distantes, autrement dit, il convertit chaque objet en une série de éléments de données XML (contrainte Language dans XML [CLiXML]) pour la transmission.However, because most live objects cannot be transmitted over the network, PowerShell "serializes" most of the objects sent in remote commands, that is, it converts each object into a series of XML (Constraint Language in XML [CLiXML]) data elements for transmission.

Lorsque PowerShell reçoit un objet sérialisé, il convertit le XML en un type d’objet désérialisé.When PowerShell receives a serialized object, it converts the XML into a deserialized object type. L’objet désérialisé est un enregistrement précis des propriétés du programme ou du composant à un moment précédent, mais il n’est plus « en temps réel », c’est-à-dire qu’il n’est plus directement associé au composant.The deserialized object is an accurate record of the properties of the program or component at a previous time, but it is no longer "live", that is, it is no longer directly associated with the component. Et, les méthodes sont supprimées, car elles ne sont plus efficaces.And, the methods are removed because they are no longer effective.

En règle générale, vous pouvez utiliser des objets désérialisés de la même façon que vous utilisez des objets actifs, mais vous devez être conscient de leurs limitations.Typically, you can use deserialized objects just as you would use live objects, but you must be aware of their limitations. En outre, les objets retournés par l' Invoke-Command applet de commande ont des propriétés supplémentaires qui vous aident à déterminer l’origine de la commande.Also, the objects that are returned by the Invoke-Command cmdlet have additional properties that help you to determine the origin of the command.

Certains types d’objets, tels que les objets DirectoryInfo et les GUID, sont reconvertis en objets dynamiques lorsqu’ils sont reçus.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Ces objets n’ont pas besoin d’une gestion ou d’une mise en forme spéciale.These objects do not need any special handling or formatting.

Pour plus d’informations sur l’interprétation et la mise en forme de la sortie à distance, consultez about_Remote_Output.For information about interpreting and formatting remote output, see about_Remote_Output.

Puis-je exécuter des tâches en arrière-plan à distance ?Can I run background jobs remotely?

Oui.Yes. Une tâche en arrière-plan PowerShell est une commande PowerShell qui s’exécute de façon asynchrone sans interagir avec la session.A PowerShell background job is a PowerShell command that runs asynchronously without interacting with the session. Lorsque vous démarrez une tâche en arrière-plan, l’invite de commandes est immédiatement retournée, et vous pouvez continuer à travailler dans la session pendant l’exécution de la tâche, même si elle s’exécute pendant une période prolongée.When you start a background job, the command prompt returns immediately, and you can continue to work in the session while the job runs even if it runs for an extended period of time.

Vous pouvez démarrer un travail en arrière-plan même si d’autres commandes sont en cours d’exécution, car les travaux en arrière-plan s’exécutent toujours de façon asynchrone dans une session temporaire.You can start a background job even while other commands are running because background jobs always run asynchronously in a temporary session.

Vous pouvez exécuter des tâches en arrière-plan sur un ordinateur local ou distant.You can run background jobs on a local or remote computer. Par défaut, une tâche en arrière-plan s’exécute sur l’ordinateur local.By default, a background job runs on the local computer. Toutefois, vous pouvez utiliser le paramètre AsJob de l' Invoke-Command applet de commande pour exécuter une commande à distance en tant que tâche en arrière-plan.However, you can use the AsJob parameter of the Invoke-Command cmdlet to run any remote command as a background job. Et, vous pouvez utiliser Invoke-Command pour exécuter une Start-Job commande à distance.And, you can use Invoke-Command to run a Start-Job command remotely.

Pour plus d’informations sur les tâches en arrière-plan dans PowerShell, consultez [about_Jobs (about_Jobs. MD)] et [about_Remote_Jobs (about_Remote_Jobs. MD)].For more information about background jobs in PowerShell , see [about_Jobs(about_Jobs.md)] and [about_Remote_Jobs(about_Remote_Jobs.md)].

Puis-je exécuter des programmes Windows sur un ordinateur distant ?Can I run windows programs on a remote computer?

Vous pouvez utiliser les commandes à distance PowerShell pour exécuter des programmes Windows sur des ordinateurs distants.You can use PowerShell remote commands to run Windows-based programs on remote computers. Par exemple, vous pouvez exécuter Shutdown.exe ou Ipconfig.exe sur un ordinateur distant.For example, you can run Shutdown.exe or Ipconfig.exe on a remote computer.

Toutefois, vous ne pouvez pas utiliser de commandes PowerShell pour ouvrir l’interface utilisateur d’un programme sur un ordinateur distant.However, you cannot use PowerShell commands to open the user interface for any program on a remote computer.

Lorsque vous démarrez un programme Windows sur un ordinateur distant, la commande n’est pas terminée et l’invite de commandes PowerShell ne retourne pas, jusqu’à ce que le programme soit terminé ou que vous appuyiez sur CTRL + C pour interrompre la commande.When you start a Windows program on a remote computer, the command is not completed, and the PowerShell command prompt does not return, until the program is finished or until you press CTRL+C to interrupt the command. Par exemple, si vous exécutez le Ipconfig.exe programme sur un ordinateur distant, l’invite de commandes n’est pas renvoyée tant que Ipconfig.exe n’est pas terminé.For example, if you run the Ipconfig.exe program on a remote computer, the command prompt does not return until Ipconfig.exe is completed.

Si vous utilisez des commandes à distance pour démarrer un programme avec une interface utilisateur, le processus de programme démarre, mais l’interface utilisateur n’apparaît pas.If you use remote commands to start a program that has a user interface, the program process starts, but the user interface does not appear. La commande PowerShell n’est pas terminée, et l’invite de commandes ne retourne pas tant que vous n’arrêtez pas le processus du programme ou que vous n’appuyez pas sur CTRL + C, ce qui interrompt la commande et arrête le processus.The PowerShell command is not completed, and the command prompt does not return until you stop the program process or until you press CTRL+C, which interrupts the command and stops the process.

Par exemple, si vous utilisez une commande PowerShell pour l’exécuter Notepad sur un ordinateur distant, le processus du bloc-notes démarre sur l’ordinateur distant, mais l’interface utilisateur du bloc-notes n’apparaît pas.For example, if you use a PowerShell command to run Notepad on a remote computer, the Notepad process starts on the remote computer, but the Notepad user interface does not appear. Pour interrompre la commande et restaurer l’invite de commandes, appuyez sur CTRL + C.To interrupt the command and restore the command prompt, press CTRL+C.

Puis-je limiter les commandes que les utilisateurs peuvent exécuter à distance sur mon ordinateur ?Can I limit the commands that users can run remotely on my computer?

Oui.Yes. Chaque session à distance doit utiliser l’une des configurations de session sur l’ordinateur distant.Every remote session must use one of the session configurations on the remote computer. Vous pouvez gérer les configurations de session sur votre ordinateur (et les autorisations sur ces configurations de session) pour déterminer qui peut exécuter des commandes à distance sur votre ordinateur et les commandes qu’ils peuvent exécuter.You can manage the session configurations on your computer (and the permissions to those session configurations) to determine who can run commands remotely on your computer and which commands they can run.

Une configuration de session configure l’environnement pour la session.A session configuration configures the environment for the session. Vous pouvez définir la configuration à l’aide d’un assembly qui implémente une nouvelle classe de configuration ou à l’aide d’un script qui s’exécute dans la session.You can define the configuration by using an assembly that implements a new configuration class or by using a script that runs in the session. La configuration peut déterminer les commandes qui sont disponibles dans la session.The configuration can determine the commands that are available in the session. De plus, la configuration peut inclure des paramètres qui protègent l’ordinateur, tels que des paramètres qui limitent la quantité de données que la session peut recevoir à distance dans un objet ou une commande unique.And, the configuration can include settings that protect the computer, such as settings that limit the amount of data that the session can receive remotely in a single object or command. Vous pouvez également spécifier un descripteur de sécurité qui détermine les autorisations requises pour utiliser la configuration.You can also specify a security descriptor that determines the permissions that are required to use the configuration.

L' Enable-PSRemoting applet de commande crée les configurations de session par défaut sur votre ordinateur : Microsoft. PowerShell, Microsoft. PowerShell. Workflow et Microsoft. powershell32 (systèmes d’exploitation 64 bits uniquement).The Enable-PSRemoting cmdlet creates the default session configurations on your computer: Microsoft.PowerShell, Microsoft.PowerShell.Workflow, and Microsoft.PowerShell32 (64-bit operating systems only). Enable-PSRemoting définit le descripteur de sécurité pour la configuration afin d’autoriser uniquement les membres du groupe Administrateurs sur votre ordinateur à les utiliser.Enable-PSRemoting sets the security descriptor for the configuration to allow only members of the Administrators group on your computer to use them.

Vous pouvez utiliser les applets de commande de configuration de session pour modifier les configurations de session par défaut, pour créer de nouvelles configurations de session et pour modifier les descripteurs de sécurité de toutes les configurations de session.You can use the session configuration cmdlets to edit the default session configurations, to create new session configurations, and to change the security descriptors of all the session configurations.

À compter de Windows PowerShell 3,0, l’applet de commande New-PSSessionConfigurationFile vous permet de créer des configurations de session personnalisées à l’aide d’un fichier texte.Beginning in Windows PowerShell 3.0, the New-PSSessionConfigurationFile cmdlet lets you create custom session configurations by using a text file. Le fichier comprend des options permettant de définir le mode de langage et de spécifier les applets de commande et les modules disponibles dans les sessions qui utilisent la configuration de session.The file includes options for setting the language mode and for specifying the cmdlets and modules that are available in sessions that use the session configuration.

Quand les utilisateurs utilisent Invoke-Command les New-PSSession applets de commande, ou, Enter-PSSession ils peuvent utiliser le paramètre ConfigurationName pour indiquer la configuration de session utilisée pour la session.When users use the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets, they can use the ConfigurationName parameter to indicate the session configuration that is used for the session. Ils peuvent modifier la configuration par défaut utilisée par leurs sessions en modifiant la valeur de la $PSSessionConfigurationName variable de préférence dans la session.And, they can change the default configuration that their sessions use by changing the value of the $PSSessionConfigurationName preference variable in the session.

Pour plus d’informations sur les configurations de session, consultez l’aide sur les applets de commande de configuration de session.For more information about session configurations, see the Help for the session configuration cmdlets. Pour rechercher les applets de commande de configuration de session, tapez :To find the session configuration cmdlets, type:

Get-Command *PSSessionConfiguration

Que sont les configurations de ventilateur et de ventilateur ?What are fan in and fan out configurations?

Le scénario de communication à distance PowerShell le plus courant impliquant plusieurs ordinateurs est la configuration un-à-plusieurs, dans laquelle un ordinateur local (l’ordinateur de l’administrateur) exécute des commandes PowerShell sur de nombreux ordinateurs distants.The most common PowerShell remoting scenario involving multiple computers is the one-to-many configuration, in which one local computer (the administrator's computer) runs PowerShell commands on numerous remote computers. C’est ce que l’on appelle le scénario de « Fanout ».This is known as the "fan-out" scenario.

Toutefois, dans certaines entreprises, la configuration est de type plusieurs-à-un, où de nombreux ordinateurs clients se connectent à un ordinateur distant unique exécutant PowerShell, tel qu’un serveur de fichiers ou une borne.However, in some enterprises, the configuration is many-to-one, where many client computers connect to a single remote computer that is running PowerShell, such as a file server or a kiosk. C’est ce que l’on appelle la configuration « fan-in ».This is known as the "fan-in" configuration.

La communication à distance PowerShell prend en charge les configurations de ventilateur et de ventilateur.PowerShell remoting supports both fan-out and fan-in configurations.

Pour la configuration de Fanout, PowerShell utilise le protocole WS-Management (Web Services for Management) et le service WinRM qui prend en charge l’implémentation Microsoft de WS-Management.For the fan-out configuration, PowerShell uses the Web Services for Management (WS-Management) protocol and the WinRM service that supports the Microsoft implementation of WS-Management. Lorsqu’un ordinateur local se connecte à un ordinateur distant, WS-Management établit une connexion et utilise un plug-in pour PowerShell pour démarrer le processus hôte PowerShell (Wsmprovhost.exe) sur l’ordinateur distant.When a local computer connects to a remote computer, WS-Management establishes a connection and uses a plug-in for PowerShell to start the PowerShell host process (Wsmprovhost.exe) on the remote computer. L’utilisateur peut spécifier un autre port, une autre configuration de session et d’autres fonctionnalités pour personnaliser la connexion à distance.The user can specify an alternate port, an alternate session configuration, and other features to customize the remote connection.

Pour prendre en charge la configuration « fan-in », PowerShell utilise Internet Information Services (IIS) pour héberger WS-Management, charger le plug-in PowerShell et Démarrer PowerShell.To support the "fan-in" configuration, PowerShell uses internet Information Services (IIS) to host WS-Management, to load the PowerShell plug-in, and to start PowerShell. Dans ce scénario, au lieu de démarrer chaque session PowerShell dans un processus distinct, toutes les sessions PowerShell s’exécutent dans le même processus hôte.In this scenario, instead of starting each PowerShell session in a separate process, all PowerShell sessions run in the same host process.

L’hébergement IIS et la gestion à distance du fan-in ne sont pas pris en charge dans Windows XP ou Windows Server 2003.IIS hosting and fan-in remote management is not supported in Windows XP or in Windows Server 2003.

Dans une configuration de fan-in, l’utilisateur peut spécifier un URI de connexion et un point de terminaison HTTP, y compris le transport, le nom de l’ordinateur, le port et le nom de l’application.In a fan-in configuration, the user can specify a connection URI and an HTTP endpoint, including the transport, computer name, port, and application name. IIS transfère toutes les demandes avec un nom d’application spécifié à l’application.IIS forwards all the requests with a specified application name to the application. La valeur par défaut est WS-Management, qui peut héberger PowerShell.The default is WS-Management, which can host PowerShell.

Vous pouvez également spécifier un mécanisme d’authentification et interdire ou autoriser la redirection à partir de points de terminaison HTTP et HTTPs.You can also specify an authentication mechanism and prohibit or allow redirection from HTTP and HTTPS endpoints.

Puis-je tester la communication à distance sur un seul ordinateur qui n’est pas dans un domaine ?Can I test remoting on a single computer not in a domain?

Oui.Yes. La communication à distance PowerShell est disponible même lorsque l’ordinateur local n’est pas dans un domaine.PowerShell remoting is available even when the local computer is not in a domain. Vous pouvez utiliser les fonctionnalités de communication à distance pour vous connecter à des sessions et créer des sessions sur le même ordinateur.You can use the remoting features to connect to sessions and to create sessions on the same computer. Les fonctionnalités fonctionnent de la même façon que lorsque vous vous connectez à un ordinateur distant.The features work the same as they do when you connect to a remote computer.

Pour exécuter des commandes à distance sur un ordinateur dans un groupe de travail, modifiez les paramètres Windows suivants sur l’ordinateur.To run remote commands on a computer in a workgroup, change the following Windows settings on the computer.

ATTENTION : ces paramètres affectent tous les utilisateurs du système et peuvent rendre le système plus vulnérable à une attaque malveillante.Caution: These settings affect all users on the system and they can make the system more vulnerable to a malicious attack. Soyez prudent lorsque vous apportez ces modifications.Use caution when making these changes.

  • Windows Vista, Windows 7, Windows 8 :Windows Vista, Windows 7, Windows 8:

    Créez l’entrée de Registre suivante, puis définissez sa valeur sur 1 : LocalAccountTokenFilterPolicy dans HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\SystemCreate the following registry entry, and then set its value to 1: LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

    Vous pouvez utiliser la commande PowerShell suivante pour ajouter cette entrée :You can use the following PowerShell command to add this entry:

    $parameters = @{
      Path='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
      Name='LocalAccountTokenFilterPolicy'
      propertyType='DWord'
      Value=1
    }
    New-ItemProperty @parameters
    
  • Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2 :Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:

    Aucune modification n’est nécessaire, car le paramètre par défaut de la stratégie « accès réseau : modèle de partage et de sécurité pour les comptes locaux » est « classique ».No changes are needed because the default setting of the "Network Access: Sharing and security model for local accounts" policy is "Classic". Vérifiez le paramètre en cas de modification de celui-ci.Verify the setting in case it has changed.

Puis-je exécuter des commandes à distance sur un ordinateur dans un autre domaine ?Can I run remote commands on a computer in another domain?

Oui.Yes. En règle générale, les commandes s’exécutent sans erreur, même si vous devrez peut-être utiliser le paramètre Credential des Invoke-Command applets de commande, New-PSSession ou Enter-PSSession pour fournir les informations d’identification d’un membre du groupe Administrateurs sur l’ordinateur distant.Typically, the commands run without error, although you might need to use the Credential parameter of the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets to provide the credentials of a member of the Administrators group on the remote computer. Cela est parfois nécessaire même lorsque l’utilisateur actuel est membre du groupe Administrateurs sur les ordinateurs locaux et distants.This is sometimes required even when the current user is a member of the Administrators group on the local and remote computers.

Toutefois, si l’ordinateur distant n’est pas dans un domaine approuvé par l’ordinateur local, l’ordinateur distant peut ne pas être en mesure d’authentifier les informations d’identification de l’utilisateur.However, if the remote computer is not in a domain that the local computer trusts, the remote computer might not be able to authenticate the user's credentials.

Pour activer l’authentification, utilisez la commande suivante pour ajouter l’ordinateur distant à la liste des hôtes approuvés pour l’ordinateur local dans WinRM.To enable authentication, use the following command to add the remote computer to the list of trusted hosts for the local computer in WinRM. Tapez la commande à l’invite PowerShell.Type the command at the PowerShell prompt.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <Remote-computer-name>

Par exemple, pour ajouter l’ordinateur SERVEUR01 à la liste des hôtes approuvés sur l’ordinateur local, tapez la commande suivante à l’invite de commandes PowerShell :For example, to add the Server01 computer to the list of trusted hosts on the local computer, type the following command at the PowerShell prompt:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value Server01

PowerShell prend-il en charge la communication à distance via SSH ?Does PowerShell support remoting over SSH?

Oui.Yes. Pour plus d’informations, consultez communication à distance PowerShell via SSH.For more information, see PowerShell remoting over SSH.

Voir aussiSee also

about_Remoteabout_Remote

about_Profilesabout_Profiles

about_PSSessionsabout_PSSessions

about_Remote_Jobsabout_Remote_Jobs

about_Remote_Variablesabout_Remote_Variables

Invoke-CommandInvoke-Command

New-PSSessionNew-PSSession