Geek School scrive il tuo primo script Full PowerShell
Qualche settimana fa, The Geek ti ha mostrato come puoi usare il prompt dei comandi per trovare quando è stato avviato il computer per ultimo. In quest'ultima installazione di Geek School per PowerShell, scriveremo un comando PowerShell riutilizzabile per fare la stessa cosa.
Assicurati di leggere gli articoli precedenti della serie:
- Scopri come automatizzare Windows con PowerShell
- Imparare a utilizzare i cmdlet in PowerShell
- Apprendimento Come utilizzare gli oggetti in PowerShell
- Imparare la formattazione, il filtraggio e il confronto in PowerShell
- Impara a utilizzare i servizi remoti in PowerShell
- Utilizzo di PowerShell per ottenere informazioni sul computer
- Lavorare con le raccolte in PowerShell
- Scopri come utilizzare i lavori in PowerShell
- Scopri come estendere PowerShell
- Apprendimento delle variabili, input e output di PowerShell
Scrivi il tuo primo script
La prima cosa che dobbiamo fare è trovare un modo per accedere alle informazioni che stiamo cercando. Dal momento che abbiamo a che fare con le informazioni di gestione, probabilmente dovremmo dare un'occhiata all'utilizzo di WMI, che in effetti possiede una classe chiamata Win32_OperatingSystem che consente di visualizzare informazioni dettagliate sul sistema operativo, inclusa l'ultima volta che è stato avviato..
Così ora che sappiamo dove possiamo trovare le informazioni che cerchiamo, apriamo l'ISE e digitiamo quanto segue.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, LastBootUpTime
Nota: ho dovuto dividere il mio codice su due righe in modo che tutto si adattasse allo screenshot, ma sentitevi liberi di scriverlo su una singola riga. Se scegli di dividerlo su due righe, assicurati che il carattere pipe sia l'ultimo carattere della riga 1.
Ora fai clic sul pulsante verde "Esegui script" o premi il tasto F5 sulla tastiera per testare il codice.
I tempi WMI possono essere un po 'criptici. Con questo intendiamo se guardi la proprietà LastBootUpTime, dice 2013-03-19 alle 18:26:21, ma per qualche motivo i ragazzi della WMI hanno deciso di concatenare tutto ciò in una singola stringa. Fortunatamente per noi, non dobbiamo preoccuparci di analizzare manualmente la stringa in quanto vi è un modo più semplice per farlo, anche se più avanzato. Dovrai modificare la parte Select-Object del codice per assomigliare a questa:
Select-Object -Property CSName, @ n = "Last Booted";
E = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Quello che stiamo facendo qui è la creazione di una proprietà personalizzata chiamata "Last Booted" e che specifica che il suo valore deve essere il risultato della chiamata del metodo statico ToDateTime sulla proprietà LastBootUpTime dell'oggetto pipeline corrente. Il tuo codice ora dovrebbe assomigliare a questo.
L'esecuzione del codice ora produrrà un tempo di avvio molto più leggibile.
Ora che siamo soddisfatti della funzionalità di base del nostro script, dobbiamo salvarlo. Per semplicità, salviamolo come segue:
C: \ Get-LastBootTime.ps1
Passare ora alla metà inferiore di ISE ed eseguire quanto segue:
C: \ Get-LastBootTime.ps1
Grande! Il nostro script funziona come previsto, tuttavia c'è ancora un problema con il nostro script. Abbiamo hardcoded il nome del computer per il quale vogliamo ottenere l'ultimo avvio. Invece dei valori di codifica, dovremmo piuttosto fornire un parametro in modo che chiunque usi lo script possa scegliere su quale computer viene eseguito lo script. Per farlo, vai all'inizio del tuo script e fai quanto segue.
param (
[Stringa] $ ComputerName
)
Quindi sostituire il valore localhost hardcoded con $ ComputerName variabile. Il tuo script dovrebbe ora assomigliare a questo:
Salva il tuo script, quindi torna alla metà inferiore di ISE e visualizza l'aiuto per il tuo script.
aiuto C: \ Get-LastBootTime.ps1
Fantastico, così ora possiamo specificare il nome del computer su cui vogliamo ottenere l'ultimo tempo di avvio per l'utilizzo del nostro nuovo parametro ComputerName. Sfortunatamente, ci sono ancora alcune cose sbagliate. In primo luogo, il parametro ComputerName è facoltativo e in secondo luogo, è il più brutto aiuto che abbia mai visto, quindi risolviamo rapidamente questi problemi. Per rendere obbligatorio il parametro ComputerName, modificare il contenuto del blocco param nel modo seguente.
[Parametro (Mandatory = $ true)] [stringa] $ ComputerName
Per quanto riguarda la creazione di un file di aiuto migliore, il metodo più comune consiste nell'utilizzare la guida basata sui commenti. Ciò significa che aggiungiamo un commento extra lungo alla parte superiore del copione.
<#
.SINOSSI
Mostra quando è partito il tuo PC.
.DESCRIZIONE
Questa è una funzione wrapper WMI per ottenere il tempo di avvio del PC.
.PARAMETRO ComputerName
Il nome del computer su cui si desidera eseguire il comando.
.ESEMPIO
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>
Una volta finito, dovresti finire con uno script simile a questo.
Ora andiamo a dare un'occhiata al nostro nuovo file di aiuto.
Ahhh, sembra fantastico! Ora che il nostro script è completo, abbiamo un'ultima cosa da fare: test. Per questo, uscirò dall'ISE e tornerò alla console di PowerShell solo per assicurarci che non ci siano anomalie.
Se inizi con una semplice fodera e continui a costruire su di essa come abbiamo fatto in questa guida, la imparerai in poco tempo. Questo è tutto per questa volta gente, ci vediamo nella prossima installazione di Geek School.