Windows PowerShell: Servizi remoti impliciti

Don Jones

In Windows PowerShell 2.0 che è possibile aggiungere facilmente una quantità incredibile di flessibilità nell'ambiente è presente una funzionalità poco nota. Si supponga che i computer client eseguono principalmente di Windows XP, ancora uno scenario comune sufficientemente. I controller di dominio utilizza Windows Server 2003.

È possibile ottenere Windows PowerShell 2.0 per entrambi questi sistemi operativi, ma potrebbe non essere in grado di utilizzare alcuni dei moduli di cmdlet Windows PowerShell di recenti, come il modulo di Active Directory incluso in Windows Server 2008 R2. Tali moduli non verranno eseguito su versioni precedenti di Windows.

Che non è Nessun problema. Installare Windows 7 o Windows Server 2008 R2 su un computer nel proprio ambiente (modulo Active Directory verrà eseguito su uno di essi). Ad esempio, è possibile installare un unico controller di dominio Windows Server 2008 R2, dato che consentirà al modulo di Active Directory e il servizio gateway di gestione Active Directory con cui comunica il modulo. Scaricare il servizio gateway e installato in Windows Server 2008 e Windows Server 2003.

Attivare i servizi remoti e WinRM nel nuovo controller di dominio eseguendo Attiva PSRemoting in Windows PowerShell. Quindi avviare Windows PowerShell 2.0 nel computer client Windows XP e prepararsi a rendere alcuni magia.

Creazione di un modulo

Avviare, stabilendo una sessione remota sul nuovo controller di dominio:

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

Specificare il nome corretto del computer anziché “ personale-nuovo-dc, ” naturalmente. È possibile specificare parametri aggiuntivi, ad esempio credenziali alternative o porte alternative di WinRM. Consentono nuovi pssession per i dettagli di esecuzione.

Quindi, indicare tale istanza remota di Windows PowerShell per caricare i cmdlet di Active Directory:

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

Ecco la parte interessante: Stato dell'istanza locale di Windows PowerShell Esporta i cmdlet di Active Directory dalla sessione remota in un modulo nel computer client locale:

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

Questo comando crea un nuovo modulo di Windows PowerShell, memorizzato nella cartella documenti in WindowsPowerShell\Modules\RemAD. Solo i cmdlet i cui nomi corrispondono al pattern “ *-Active Directory * ” verrà incluso. Questo è uno dei motivi principali nella maggior parte dei cmdlet aggiuntivo utilizzare qualche tipo di prefisso come “ AD ” come parte del nome del cmdlet. In questo modo facile catturare solo i cmdlet.

Il cmdlet non sono effettivamente copiato nel computer locale. Invece, nel modulo creato localmente funge da un tipo di collegamento. I cmdlet sempre verranno eseguiti sul controller di dominio remoto, ma i cmdlet sembrano di essere eseguito localmente.

Utilizzare il cmdlet

Iniziare a rimuovere tale sessione al controller di dominio remoto:

Remove-PSSession -session $session

Carica ora il nuovo modulo:

Import-Module RemAD -prefix Rem

Questo comando carica nel nuovo modulo in memoria e aggiunge un prefisso “ REM ” al nome di ogni cmdlet in tale modulo. Il prefisso è un buon metodo per ricordare che questi cmdlet verranno eseguito in modalità remota. È possibile scegliere qualsiasi prefisso desiderato, ma in genere utilizzare qualcosa come “ R ” o “ REM ” per attivare “ remoto. ”

Provare a chiedere aiuto su un cmdlet remoto:

Help New-RemADUser

Verrà visualizzato un errore perché non è stabilita una sessione remota corrente tra il computer e il controller di dominio in cui vivono i cmdlet. Non è necessario avviare in modo esplicito tale sessione. È possibile implicitamente farlo provando a eseguire uno dei cmdlet remoti:

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

Verrà re-instantiate la connessione remota al controller di dominio, invia il comando per l'esecuzione e il comando sul controller di dominio. Quindi ogni utente il cui nome inizia con “ D ” verrà serializzato in XML e trasmesso attraverso la rete al computer. Vi sono sarà de-serialized in oggetti che è possibile lavorare nella pipeline di Windows PowerShell. Ora è possibile chiedere aiuto perché la sessione remota è attiva:

Help New-RemADUser

La sessione rimane attiva fino a quando non si chiude l'istanza della shell o rimuovere il modulo:

Remove-Module RemAD

Raggiungere indietro e amministrare qualcosa

Remoting implicita consente di utilizzare i cmdlet sono disponibili solo su un computer remoto. I cmdlet in modo implicito remoti funzionano praticamente allo stesso modo che farebbero se sono stati installati localmente. Questo li rende disponibili quando necessario. La sessione remota richiede un overhead minimo sul computer o nel computer remoto in modo che si tratta di un metodo particolarmente utile per distribuire l'elaborazione.

Don Jones *is a founder of Concentrated Technology, and answers questions about Windows PowerShell and other technologies at ConcentratedTech.com.*È anche autore di Nexus.Realtimepublishers.com , che rende molti dei suoi libri disponibili come libero edizioni elettroniche.

Contenuto correlato