Geek School: scrivere il tuo primo script Full PowerShell

Sommario:

Geek School: scrivere il tuo primo script Full PowerShell
Geek School: scrivere il tuo primo script Full PowerShell

Video: Geek School: scrivere il tuo primo script Full PowerShell

Video: Geek School: scrivere il tuo primo script Full PowerShell
Video: Come terminare un processo su Windows 10 - YouTube 2024, Aprile
Anonim
Poche settimane 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.
Poche settimane 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
  • Apprendimento della formattazione, del filtro e del 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. Poiché 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.
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.
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 membri 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 cambiare la parte Select-Object del codice per assomigliare a questa:
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 membri 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 cambiare 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 dovrebbe ora apparire come questo.

L'esecuzione del codice ora produrrà un tempo di avvio molto più leggibile.
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:
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:
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.
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( [string]$ComputerName )

Quindi sostituire il valore localhost hardcoded con la variabile $ ComputerName. 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.
Salva il tuo script, quindi torna alla metà inferiore di ISE e visualizza l'aiuto per il tuo script.

help C:Get-LastBootTime.ps1

Fantastico, così ora possiamo specificare il nome del computer che vogliamo ottenere l'ultima volta 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.
Fantastico, così ora possiamo specificare il nome del computer che vogliamo ottenere l'ultima volta 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.

[Parameter(Mandatory=$true)][string]$ComputerName

Per quanto riguarda la creazione di un file di guida migliore, il metodo più comune consiste nell'utilizzare la guida basata sui commenti. Ciò significa che aggiungiamo un commento extra lungo alla parte superiore di uno script.

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Una volta fatto tutto, dovresti finire con uno script simile a questo.

Consigliato: