Windows PowerShellResta installata!

Don Jones

Contenuto

La soluzione
Vedere la sezione in azione
Remoting-molti
Inserire IT della relazione
Si tratta di gestione remota, stile di nuovo di scuola

È sempre stato sempre dal messaggio di doppio talvolta fornito all'esterno di Microsoft alla gestione di server: un canto, avevamo sta incluso detto per installare gli strumenti di gestione sui propri computer client e utilizzare tali strumenti per gestire i server.Non si dovrebbero per inserire il centro dati, e anche mediante desktop remoto è tecnicamente risolto perché di fondamentalmente solo al centro dati senza eseguire l'analisi.D'altra parte, tuttavia, esistono molte attività di server-gestione che non può essere eseguita facilmente utilizzando strumenti connessione remota esistenti, modifica di indirizzi IP o altro con configurazione di rete, ad esempio.

Domande e risposte di Windows PowerShell

QÈ possibile utilizzare uno script Windows PowerShell come uno script di accesso?

A Sì, ma potrebbe non essere qualsiasi punto in questo modo.Non è possibile semplicemente trascinare lo script in un oggetto Criteri di gruppo (GPO) in modo che è possibile che un file VBScript.Invece, è necessario creare sostanzialmente un file batch per l'esecuzione Powershell.exe, passando il parametro della riga di comando che indica gli script da eseguire.È difficile.È inoltre necessario installare Windows PowerShell in ogni computer in cui verrà eseguito lo script di accesso.Alla fine, tenere presente che Windows PowerShell è un po' più indipendente rispetto a VBScript o la shell cmd.exe.Ad esempio, mapping di un'unità utilizzando il cmdlet New-PSDrive avrà effetti non su Windows Explorer, è necessario eseguire il fallback sul comando NET USE effettivamente mappare un'unità in Windows, e se ha intenzione di farlo perché non è sufficiente utilizzare un file batch tradizionali, che è più facile da includere in un oggetto Criteri di gruppo?

QScript di Windows PowerShell possono essere pianificati?

A assoluta.È effettivamente verrà pianificare PowerShell.exe (situato nella cartella % systemroot %, in /WindowsPowerShell) e assegnargli un parametro della riga di comando che specifica lo script che si desidera eseguire.Assicurarsi che l'operazione pianificata è impostato per utilizzare un account di utente che disponga di autorizzazioni necessari eseguire qualsiasi lo script viene e assicurarsi che il criterio di esecuzione di shell è configurato per consentire l'esecuzione di script (È preferibile il criterio di AllSigned dall'utente, ovvero lo script dovrà essere firmato digitalmente, eseguire "Help about_signing" nella shell di per informazioni dettagliate su questo).

QÈ disponibile di lavorare con autorizzazioni di file e cartelle in Windows PowerShell in modo semplice?

A che.Sono disponibili i comandi Get-ACL e set-ACL, iniziare, Get-ACL è particolarmente utile se è necessario eseguire report sui autorizzazioni.L'utilizzo di questi comandi per modificare effettivamente autorizzazioni è poco pratico, autorizzazioni di Windows sono elementi piuttosto complesse e la programmazione è necessario effettuare per impostare gli elenchi di controllo (ACL) di accesso è ugualmente complessa.Ma che indica che è necessario utilizzare i cmdlet?La shell è molto utile all'esecuzione degli strumenti della riga di comando più tradizionali e le varie iterazioni di Cacls.exe, inclusi quelli come DSACLS per Active Directory, utilizzare grande da all'interno di Windows PowerShell.Utilizza sempre loro è necessario modificare o impostare autorizzazioni per file e cartelle.

L'impostazione di una nuova installazione di Server Core è un altro ottimo esempio.Aggiunta di ruoli, la configurazione della rete, anche attivazione di Windows deve tutti essere eseguito da una finestra di console locale o tramite desktop remoto, utilizzando gli strumenti della riga di comando.Gli strumenti attualmente esistono sono soluzioni punto personalizzato che gestiscono una sola attività oppure soluzioni che richiedono competenze con Strumentazione gestione Windows (WMI).Mi piace WMI, tuttavia, è troppo complessa per la maggior parte degli amministratori impiegano parecchio tempo formazione e così spesso passa inutilizzato.

Windows PowerShell ha promesso semplificare tutto questo, base semplificare WMI a gestire, ma ancora più importante, in base a ritorno a capo di attività amministrative in cmdlet più semplice da utilizzare che corrispondono approssimativamente con le utilità della riga di comando è stato utilizzato per anni.Problema della shell è che, oltre a WMI, è essenzialmente una shell locale.Molti relativo cmdlet di configurazione del sistema operativo di base non forniscono alcun supporto per contattare un computer remoto.La shell non risolve anche uno dei problemi più egregious di WMI: l'utilizzo di chiamate di procedura remota (RPC, Remote Procedure Call) per la connettività remota.RPC sono un problema in ambienti che utilizzano firewall locale (e che non questi giorni), rendendo spesso WMI inutilizzabile per qualsiasi tipo di gestione remota.

La soluzione

Microsoft è stato a conoscenza di questi difetti per un periodo di tempo, ma è eseguita tempo per tutte le necessarie correzioni per la riga un singolo prodotto.Tale prodotto è v2 di Windows PowerShell, che include una nuova versione di Windows remoto gestione (WRM).Sia verrà fornito per la prima volta in Windows 7 e Windows Server 2008 R2 ed entrambi saranno preinstallati in tali sistemi operativi per impostazione predefinita.

Le tecnologie inoltre saranno disponibili per le versioni precedenti di Windows, probabilmente secondo quanto Windows XP.Ma redazione di questo, non ufficiale annuncio è stato possibile su esattamente quali sistemi operativi precedenti saranno supportati (meno recente il sistema operativo, attività di Microsoft più difficile, perché le versioni precedenti è possibile che non dispone alcune delle necessarie principali tecnologie di supporto).

WinRM è realmente la tecnologia a chiave rende possibile tutto questo.È un'implementazione di Microsoft di WS-MAN o servizi Web per la gestione e suggerisce il nome, viene utilizzato HTTP e HTTPS per comunicare, che significa che è facile ottenere il traffico attraverso un firewall.A differenza di RPC, avviare su un singolo punto conosciuto e quindi spostare la conversazione a una porta scelta in modo casuale, HTTP e HTTPS utilizzare una singola porta, 80 e 443 per impostazione predefinita, ma configurabile se si desidera quelli.Gestione remota Windows consente di molte applicazioni diverse "Attendere" le gestione delle connessioni in ingresso e v2 di Windows PowerShell è in grado di in questo modo un'applicazione.(Personalmente, Ritengo che WMI infine potrebbero migrare utilizzare WinRM.)

In pratica, è posizionato sul computer client e chiedere per stabilire una connessione shell un computer remoto.Che attiva la gestione remota Windows sul computer remoto, che a sua volta Ruota di un'istanza di Windows PowerShell v2 sul computer remoto.Tale istanza della shell è in grado di esecuzione i comandi e il recapito i risultati al computer.

Vedere la sezione in azione

Le versioni beta pubblica di Windows 7 sono state la prima volta il mondo di grandi dimensioni in Impossibile effettuare questa operazione: aprire una sessione di Windows PowerShell sul server, o su più server, ed eseguire PSRemoting di attivazione per configurare WinRM e avviare il servizio di gestione remota Windows.Quindi, passare al computer client, in esecuzione anche Windows PowerShell v2, ed eseguita $ sessione = nomecomputer PSSession di nuovo, fornire il nome del server appena configurate per i servizi remoti.Il cmdlet New-PSSession può inoltre accettare credenziali alternative, se necessario e può essere indicato di utilizzare porte non standard se è stato configurato.

Se viene visualizzato un messaggio di errore di lunga durata simile a quello illustrato nella Figura 1 , la causa della modalità di gestione remota Windows autentica.Utilizza Kerberos per impostazione predefinita, ma in un ambiente non di dominio (simile a quello del computer di laboratorio raffigurato), Kerberos non è un'opzione.Se Kerberos non è disponibile, gestione remota Windows richiede l'utilizzo di HTTPS è necessario che un certificato SSL sia installato sul computer server.Questa operazione viene eseguita per l'autenticazione reciproca tra te e il server, in modo che si è connessi al computer che si desidera.Autenticazione anche specifica di base o digest nel parametro –auth non d'aiuto, poiché WinRM desidera utilizzare HTTPS per crittografare il traffico.La soluzione più semplice?Appartenere a un dominio di Active Directory!

fig01.gif

Nella figura 1 autentica un messaggio di errore di lunga durata come questo può verificarsi a causa del wayWinRM.

Con la sessione è attivata, è pronti per iniziare a utilizzarlo.Immettere-PSSession $ sessione verrà effettuata la connessione, live, al server remoto.Magico, digitazione nell'istanza di Windows PowerShell.I comandi eseguiti in modo interattivo e visualizzare immediatamente i risultati, non a differenza di SSH o tecnologie simili spesso utilizzate nei computer UNIX.

Windows PowerShell viene anche alcuni crittografia predefinita, in modo che se non si utilizza HTTPS, è comunque molto sicuro dall'ascolto e intercettazione non autorizzati.Eseguire PSSession di Exit per disconnettersi dalla console remota e tornare alla console locale.La shell è richiesto anche modifiche quando si è connessi a un computer remoto, per ricordare in cui ci si.

Remoting-molti

In grado di eseguire comandi su un computer è grande, ma la frequenza con cui è necessario eseguire un elemento in un server?Più comunemente, ritengo che è necessario eseguire un comando o un set di comandi, su un intero gruppo di computer.Che cosa è stato utilizzato finora in Windows PowerShell v1, viene chiamato uno a uno servizi remoti (1: 1), vale a dire un unico amministratore gestione di un singolo computer remoto.Ma la shell offre inoltre uno-a-molti servizi remoti di (1: n), in cui un unico amministratore può gestire più computer.Il trucco è nel parametro –computerName di PSSession di nuovo.

Consenti di ripetere il comando precedente, ma questa volta verrà effettivamente compitare il parametro anziché consentendo la shell si presuppone: nuovo-PSSession –computerName computer.Poiché –computerName è un parametro posizionale, non è necessario specificare il nome del parametro effettivo in precedenza, ma in questo modo ora agevola il trucco comprendere: $ sessioni = nuovo-PSSession –computerName (c:\names.txt Get-Content).Supponendo che il file C:\names.txt contiene un elenco di nomi di computer, uno nome computer per riga, la shell creerà una sessione remota per ciascuno di essi, memorizzazione dell'intero elenco di sessioni nella variabile $ sessioni.

Per impostazione predefinita, le sessioni vengono create la utilizzando le credenziali di Windows PowerShell è in esecuzione, pertanto, l'account di accesso o un account ho utilizzato con RunAs quando si avvia la shell.Una parola di attenzione: se si dispone di controllo account utente (UAC) attivata, è necessario per in modo esplicito la shell "come Administrator" facendo clic con il pulsante destro del mouse sull'icona corrispondente.In alternativa, è possibile specificare un nome utente diverso per le sessioni utilizzando il parametro credenziale del comando.

Dopo avere questo insieme di comandi, è possibile continuare a utilizzarli nel modo 1: 1: immettere-PSSession $ sessioni [0] si connetteranno è a della shell istanza del computer prima, ad esempio.Ma la vera potenza è in esecuzione in una sola volta di un comando su tutti i: comando di richiama –scriptblock {ipconfig} –session 0 $ sessioni.Che viene eseguito il comando Ipconfig in ogni computer a cui si è connessi a una sessione e riporta i risultati in computer in uso.Effettivamente si connetterà a computer in parallelo, fino a 32 in un momento; è possibile modificare tale velocità di esecuzione parallela utilizzando il parametro –throttlelimit.

Inserire IT della relazione

Naturalmente, a volte si sarà attiva disattivare comandi di richiedere del tempo per l'esecuzione, e il non si desidera seduti attorno a in attesa di tutti gli elementi per il completamento.In questi casi, perché non consentire la shell di continuare a lavorare in background?Aggiungere solo il parametro AsJob Invoke-Command e la shell verrà creato un processo di sfondo.

Tenere presente che la copia di shell non è realmente eseguendo che quantità di lavoro, vengono eseguiti i comandi che è stato specificato in istanze remote di Windows PowerShell.La shell solo è in attesa per tutti alla fine, e raccolta dei risultati inviati nuovamente.Tali risultati vengono archiviati come parte del processo.Eseguire il processo di lettura per visualizzare tutti i processi correnti e il relativo stato (se sono ancora esegue, ad esempio).Utilizzare il processo di ricezione per ottenere i risultati out of un processo completato.In modo che tutti i può apparire come questo:

$sessions = New-PSSession –computerName (Get-Content c:\names.txt)
$job = Invoke-Command –scriptblock { your command(s) } –AsJob
Get-Job (to check the status)
$results = Receive-Job $job

È possibile quindi visualizzare i risultati $, filtrarli, ordinarli e così via. Ogni risultato disporrà di informazioni che consentono di vedere quale computer proviene. Descriverò i processi di sfondo (che possono avere anche sottoprocessi che è necessario affrontare) in un prossimo articolo.

Si tratta di gestione remota, stile di nuovo di scuola

Dimenticare il modo di scuola precedente di gestione "remoto" coinvolti escursioni verso il centro dati o utilizzando un desktop remoto "irregolarità." Sono funzionalità di servizi remoti del Windows PowerShell v2 un potente e rappresentano semplice pratico per eseguire comandi, i comandi, su computer remoti. Sebbene l'obiettivo personale sia sulla gestione di server, queste stesse tecniche sono ideali per attività di gestione dei desktop, nonché, ovvero uno dei motivi perché Windows PowerShell v2 è preinstallato in Windows 7 e Windows Server 2008 R2.

Don Jones è un co-fondatore di Tecnologia concentrano, dove blog settimanale su App-V Windows PowerShell, SQL Server e altri argomenti. È possibile contattarlo tramite il suo sito Web.