Geek School che impara 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.
L'anatomia di un cmdlet
Nella prima parte della serie abbiamo visto un cmdlet simile a questo:
Update-Aiuto
I cmdlet di PowerShell hanno una sintassi Verb-Noun, che può essere vista 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, supponi di volerlo ottenere una lista di Servizi e il loro stato - è vero, è facile come Get-Service. Come pensi che lo faremmo ottenere un elenco di corsa processi - è 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, c'è 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: questo screenshot è stato eseguito su una casella Server 2012 in quanto è dove si troverà 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 era stato spedito prima che questo prefisso fosse aggiunto ai cmdlet, quindi non li ha mai implementati e mai lo faranno.
alias
Un'altra caratteristica 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 possiamo ottenere un elenco di directory usando:
Get-ChildItem
Utilizzato per usare il prompt dei comandi? Non preoccuparti, loro ti hanno coperto.
Hai uno sfondo Linux? Loro hanno coperto anche lì.
Quando scrivi script per un paio d'anni, tendi a diventare pigro e inizi a usare molto pseudonimi, ma questo non aiuta i nuovi arrivati a leggere il nostro codice. Per vedere cosa comando un alias è in esecuzione sotto il cofano, è possibile utilizzare il seguente:
Get-Alias -Name ls
D'altra parte, se ritieni che sia giunto il momento di fare il tuo gioco, puoi usare il parametro definition per ottenere tutti gli alias per un cmdlet:
Get-ChildItem -Definition Get-ChildItem
Se provieni da un altro background, puoi aggiungere i tuoi alias effettuando le seguenti operazioni:
New-Alias -Nome icanhazfilez -Value Get-ChildItem
Ovviamente, dovrai sostituire "icanhazfilez" con il nome del tuo nuovo alias e Get-ChildItem con il cmdlet che vuoi che 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.
Troncamento dei parametri
Windows PowerShell consente inoltre di troncare i nomi dei parametri fino al punto in cui diventano ambigui, vale a dire fino al punto in cui PowerShell non è più in grado di determinare il parametro di cui si sta parlando. Per esempio:
Get-Service -Nome 'Apple Mobile Device' -ComputerName localhost
Equivale a:
Get-Service -Na 'Dispositivo mobile Apple' -Com localhost
Se per caso si rendono i nomi dei parametri troppo ambigui si otterrà 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 per 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.