5 cmdlet per iniziare con PowerShell
PowerShell sta rapidamente diventando il linguaggio di scripting preferito e la CLI di Power Users e dei professionisti IT. Vale la pena imparare alcuni comandi per iniziare, quindi abbiamo 5 utili cmdlet da imparare oggi.
Get-Command
Get-Command è uno dei cmdlet più utili dell'intero PowerShell, poiché ti aiuterà a familiarizzare con PowerShell consentendo la ricerca di determinati cmdlet. L'uso di Get-Command da solo non è molto utile in quanto sputerà ogni comando di PowerShell.
Ma da questo possiamo vedere che gli oggetti che gli output di PowerShell hanno sia un nome che una proprietà ModuleName. Usando queste informazioni possiamo raffinare la nostra ricerca, cercando i cmdlet che contengono determinati termini. Per esempio se volessi trovare tutti i cmdlet che contengono la parola "IP", potrei fare questo:
Get-Command -Name * IP *
Come puoi vedere, otteniamo ancora un bel po 'di risultati, la nostra prossima opzione è quella di cercare all'interno di un modulo specifico. Nel nostro caso sceglierò il modulo NetTCPIP.
Get-Command -Module NetTCPIP -Name * IP *
Ottenere aiuto
Una volta trovato il cmdlet che si sta cercando usando Get-Command, si vorrà conoscere la sintassi e come utilizzare quel cmdlet specifico. È qui che arriva Get-Help, se hai mai usato la riga di comando in Windows probabilmente hai fatto qualcosa del genere:
ipconfig /?
Bene, questo non funziona in PowerShell, questo perché in PowerShell viene usato uno spazio per separare un comando dai suoi parametri. Quindi, invece, usiamo Get-Help e passiamo il nome di un cmdlet a Get-Help come parametro.
Get-Help Get-Process
Get-Member
Get-Member ci consente di ottenere informazioni sugli oggetti restituiti da un cmdlet. Il problema con get-member, è che si basa sulla funzionalità di pipeline di PowerShell, per dimostrarlo, potremo utilizzare il cmdlet Get-Process.
Come puoi vedere, l'output di PowerShell ci mostra alcune proprietà, che puoi vedere nella parte superiore di ogni colonna. Il primo problema è che, mentre quelle sono le proprietà che potresti cercare la maggior parte del tempo, ce ne sono ancora di più. Il secondo problema è che non mostra alcun metodo che siamo in grado di chiamare sull'oggetto. Per vedere i metodi e le proprietà, possiamo collegare il nostro output a Get-Member, in questo modo:
Get-Process | Get-Member
Anche se in questo momento potrebbe non significare nulla per te, prima o poi dovrai usare Get-Member e prima imparerai ad usarlo, meglio è. Ad esempio, utilizzando le informazioni dall'output potremmo fare qualcosa di simile:
Start-Process notepad.exe
$ NotepadProc = Get-Process -Nome notepad
$ NotepadProc.WaitForExit ()
Start-Process calc.exe
Lo script avvierà il blocco note, quindi assegna l'output di "Get-Process -Name notepad" alla variabile $ NotepadProc, quindi chiamiamo il metodo WaitForExit su $ NotepadProc che provoca la sospensione dello script fino a quando non si chiude il blocco note, dopo aver chiuso il blocco note quindi verrà avviata la calcolatrice.
$ _ (Oggetto Pipeline corrente)
Pur non esattamente un cmdlet, è una delle variabili speciali più utilizzate in PowerShell. Il nome ufficiale per $ _ è "l'attuale oggetto della pipeline". Viene utilizzato nei blocchi di script, nei filtri, nella clausola di processo delle funzioni, dove-oggetto, oggetto foreach e switch. Tuttavia è più facile spiegare con un esempio, che ci porta al nostro prossimo e ultimo cmdlet, Where-Object.
Where-Object
Where-Object fa esattamente quello che sembra, seleziona un oggetto in base al fatto che soddisfi determinati criteri. Ciò riunirà $ _ e le proprietà che possiamo vedere usando Get-Member. Per dimostrarlo, inseriremo l'output di Get-Process nel cmdlet Where-Object.
Get-Process | Where-Object $ _. Name -eq "iexplore"
Quindi cosa sta succedendo qui chiedi? Bene, la prima cosa che stiamo facendo è ottenere un elenco di processi sul nostro computer e passare l'output (usando il carattere |) al nostro cmdlet Where-Object, che accetta come parametro un blocco di script. Il blocco di script (definito dalle parentesi graffe) indica ai cmdlet Where-Object di selezionare solo oggetti in cui il loro parametro name è uguale a "iexplore" e quindi viene visualizzato solo un elenco delle istanze di IE in esecuzione. Questo è tutto ciò che c'è da fare, divertiti!