Homepage » come » Geek School che impara a utilizzare i cmdlet in PowerShell

    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.