Windows PowerShell : Communication à distance implicite

Don Jones

Il existe une fonctionnalité peu connue dans Windows PowerShell 2.0 peuvent facilement ajouter une quantité incroyable de flexibilité pour votre environnement. Imaginez que vos ordinateurs clients exécutent principalement Windows XP, quand même un scénario commun suffisamment. Vos contrôleurs de domaine sont à l'aide de Windows Server 2003.

Vous pouvez obtenir Windows PowerShell 2.0 pour les deux de ces systèmes d'exploitation, mais vous ne serez peut-être pas en mesure d'utiliser certains des nouveaux modules de cmdlet Windows PowerShell, telles que le module d'Active Directory inclus avec Windows Server 2008 R2. Ces modules ne s'exécutent pas sur des versions antérieures de Windows.

C'est sans problème. Installer uniquement Windows 7 ou Windows Server 2008 R2 sur un ordinateur dans votre environnement (le module de Active Directory s'exécute sur un de ceux). Par exemple, vous pouviez installer un seul contrôleur de domaine Windows Server 2008 R2, parce que vous fournira le module de Active Directory et le service de passerelle de gestion de Active Directory avec lesquels communique le module. Télécharger le service de passerelle et l'installer sur Windows Server 2008 et Windows Server 2003.

Activer l'accès distant et de WinRM sur ce nouveau contrôleur de domaine en exécutant le Activer PSRemoting dans Windows PowerShell. Ensuite, lancez Windows PowerShell 2.0 sur votre ordinateur de client Windows XP et se préparer à rendre certains magique.

Création d'un module

Commencez par établir une session d'accès distant sur le nouveau contrôleur de domaine :

$session = New-PSSession -computerName my-new-dc

Fournir le nom d'ordinateur correct à la place de “ my-nouvelle-dc, ” bien sûr. Vous pouvez spécifier des paramètres supplémentaires, tels que les autres informations d'identification ou d'autres ports de WinRM. Exécutez les aider à nouveau de pssession pour plus d'informations.

Ensuite, indiquez qu'une instance distante de Windows PowerShell pour charger les cmdlets de Active Directory :

Invoke-command { import-module activedirectory } -session $session

Voici la partie sympa : Avoir votre instance locale de Windows PowerShell d'exporter les cmdlets de Active Directory à partir de la session à distance dans un module local sur votre ordinateur client :

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

Cette commande crée un nouveau module de Windows PowerShell, stocké dans votre dossier documents sous WindowsPowerShell\Modules\RemAD. Seuls les applets de commande dont les noms correspondent au modèle “ *-AD * ” seront inclus. C'est une des raisons plus grands que la plupart des cmdlets de compléments utilisent un type de préfixe comme “ AD ” en tant que partie du nom de la cmdlet. Ainsi, plus facile récupérer uniquement les applets de commande.

Les applets de commande ne sont pas effectivement copiés sur votre ordinateur local. Au lieu de cela, le module créé en local est utilisé comme une sorte de raccourci. Les applets de commande sera toujours exécutée sur le contrôleur de domaine distant, mais les applets de commande sera semblent s'exécuter localement.

Utilisez les Cmdlets

Commencez par supprimer cette session pour le contrôleur de domaine distant :

Remove-PSSession -session $session

Chargez maintenant le nouveau module :

Import-Module RemAD -prefix Rem

Cette commande charge le nouveau module dans la mémoire et ajoute un préfixe “ REM ” au nom de chaque applet de commande dans ce module. Le préfixe est un bon moyen pour vous rappeler que ces applets de commande doit exécuter à distance. Vous pouvez choisir n'importe quel préfixe que vous le souhaitez, mais je généralement utiliser quelque chose comme “ R ” ou “ REM ” reposer “ Remote. ”

Essayez de demander de l'aide sur une cmdlet à distance :

Help New-RemADUser

Vous verrez une erreur, car une session d'accès distant en cours n'est pas établie entre votre ordinateur et le contrôleur de domaine dans lequel ces cmdlets en direct. Vous n'avez pas besoin de démarrer explicitement cette session. Vous pouvez implicitement la pour ce faire, essayez d'exécuter un des applets de commande accédés à distance :

Get-RemADUser -filter "Name -like 'D*'"

Cela re-instantiate la connexion à distance au contrôleur de domaine, la commande pour l'exécution d'envoi et exécutez la commande sur le contrôleur de domaine. Ensuite, tous les utilisateurs dont le nom commence par “ D ” seront sérialisées en XML et transmis sur le réseau sur votre ordinateur. Il leur sera désérialisé en objets, que vous pouvez travailler avec dans le pipeline Windows PowerShell. Maintenant, vous pouvez demander de l'aide car la session à distance est active :

Help New-RemADUser

La session reste active jusqu'à ce que vous fermez l'instance du shell ou de supprimez le module :

Remove-Module RemAD

Accéder à l'arrière et administrer quelque chose

Accès distant implicite rend plus facile à utiliser les cmdlets qui ne sont disponibles sur un ordinateur distant. Les applets de commande implicitement accédés à distance comportent à peu près la même façon que s'ils ont été installés localement. Ils sont disponibles chaque fois que vous en avez besoin. La session d'accès distant nécessitant peu de surcharge sur votre ordinateur ou sur l'ordinateur distant, il s'agit d'un moyen extrêmement pratique pour distribuer le calcul.

Don Jones *is a founder of Concentrated Technology, and answers questions about Windows PowerShell and other technologies at ConcentratedTech.com.*Il est également un auteur pour Nexus.Realtimepublishers.com , qui en fait un grand nombre de ses livres disponibles en tant que versions électronique gratuit.

Contenu associé