10Aug

Geek School: imparare a utilizzare i cmdlet in PowerShell

Se hai usato ipconfig o ping attraverso il prompt dei comandi, sei a metà strada per diventare un ninja di PowerShell. Quindi vieni e unisciti a noi mentre scopriamo i cmdlet in questa installazione di Geek School.

Assicuratevi di dare un'occhiata al nostro primo articolo che introduce PowerShell e rimanete sintonizzati per il resto della nostra serie per tutta la settimana.

Anatomy of a Cmdlet

Nella prima parte della serie abbiamo visto un cmdlet simile a questo:

Update-Help I cmdlet di PowerShell

hanno una sintassi Verb-Noun, che può essere visualizzata sopra. La cosa importante da notare è che il nome è sempre singolare anche se il cmdlet potrebbe restituire più di un risultato. Per visualizzare un elenco di verbi legali in PowerShell è possibile utilizzare il cmdlet Get-Verb.

Conoscere i verbi legali e ricordare la regola del nome singolare aiuta davvero a indovinare i nomi dei cmdlet. Ad esempio, supponiamo di voler ottenere un elenco di servizi e il loro stato - è giusto, è facile come Get-Service. Come pensi che

possa ottenere un elenco di processi in esecuzione - è vero, Get-Process farà il trucco.

Get-Process

Questo rende davvero facile lavorare con qualsiasi tecnologia. Ad esempio, se i cmdlet di Exchange sono stati caricati, è possibile ottenere facilmente un elenco di cassette postali sul server utilizzando:

Get-Mailbox

Tuttavia, esiste un'eccezione. Scambio a parte, tutti gli altri comandi specifici della tecnologia richiedono un prefisso. Ad esempio, se volessimo ottenere gli utenti attualmente connessi tramite Desktop remoto, digitare:

Get-RDUserSession

che può essere visto nello screenshot qui sotto.

Nota: questa schermata è stata acquisita in una finestra di Server 2012 in quanto è dove si troveranno la maggior parte dei moduli specifici della tecnologia.

Qualche tempo fa, ho letto un articolo di Don Jones, il padrino di PowerShell, in cui spiegava che Exchange veniva spedito prima che questo prefisso fosse aggiunto ai cmdlet, quindi non li ha mai implementati e mai lo faranno. Alias ​​

Alias ​​

Un'altra funzionalità di PowerShell è la possibilità di avere più modi di eseguire lo stesso comando - alias, se vuoi. La cosa fantastica di loro è che includevano molti comandi che potevi usare nel prompt dei comandi, così come alcuni alias di Linux. Ad esempio, in PowerShell è possibile ottenere un elenco di directory utilizzando:

Get-ChildItem

Utilizzato per utilizzare il prompt dei comandi? Non preoccuparti, loro ti hanno coperto.

Hai uno sfondo Linux? Loro hanno coperto anche lì.

Quando si scrive da un paio di anni, si tende a diventare pigri e si inizia a usare molto gli alias, ma questo non aiuta i nuovi arrivati ​​a leggere il nostro codice. Per vedere quale comando un alias è in esecuzione sotto il cofano, puoi usare quanto segue:

Get-Alias ​​-Name ls

D'altra parte, se senti che è il momento di fare il tuo gioco, puoi usare il parametro definition per otteneretutti gli alias per un cmdlet:

Get-ChildItem -Definition Get-ChildItem

Se provieni da un altro background, puoi aggiungere i tuoi alias procedendo come segue:

New-Alias ​​-Nome icanhazfilez -Value Get-ChildItem

Ovviamente,sarà necessario sostituire "icanhazfilez" con il nome del nuovo alias e Get-ChildItem con il cmdlet che si desidera venga eseguito sotto il cofano.

Una cosa da notare è che perdi tutti gli alias che hai definito quando chiudi la shell. Puoi aggirare questo aggiungendo la loro definizione allo script del tuo profilo.

Parametri di troncamento

Windows PowerShell consente inoltre di troncare i nomi dei parametri fino al punto in cui diventano ambigui, ovvero fino al punto in cui PowerShell non è più in grado di determinare quale parametro si sta parlando. Ad esempio:

Get-Service -Nome 'Apple Mobile Device' -ComputerName localhost

È lo stesso di:

Get-Service -Na 'Apple Mobile Device' -Com localhost

Se per caso si rendono i nomi dei parametri troppo ambigui siotterrà un errore. Comandi legacy

Infine, i comandi che conosci e ami funzioneranno ancora in PowerShell.

ping www.google.com

Basta ricordare che le applicazioni legacy come ping emettono una stringa, e spesso c'è un modo migliore di fare la stessa cosa usando un cmdlet di PowerShell.

Invece di emettere una lunga stringa di testo, ora ci rimane un oggetto, che daremo un'occhiata all'edizione di domani di Geek School.