Phoneia

Come automatizzare di Windows PowerShell con

Italiano - March 13, 2016

Image 1. Come automatizzare di Windows PowerShell con

Conoscere PowerShell

Scoprire gli strumenti più avanzati di Windows è un ottimo modo per cominciare a prendere il controllo del vostro PC. Conoscere Task Manager, ad esempio, e presto sarà in grado di rilevare, e soprattutto, chiudere i processi in mancanza che potrebbe essere rallentare il computer.

Basandosi sulle applet standard di presenta tutti i tipi di problemi, anche se. È necessario avviare manualmente ogni volta che si vuole fare qualcosa. Allora si è costretti a lavorare il vostro senso attraverso l’interfaccia, magari scegliendo le stesse impostazioni e le opzioni, più e più volte. E anche dopo tutto questo, l’applet non potrebbe fare esattamente quello che ti serve.

Per fortuna, c’è un altro modo. PowerShell è un linguaggio di scripting potente che permette di prendere il pieno controllo di ogni aspetto del vostro PC. Se avete bisogno di guardare i processi in esecuzione, controllare il sistema di file, modificare il Registro di sistema, scaricare file, analizzare le pagine web, creare report o fare qualsiasi altra cosa sul PC locale o qualsiasi altro sistema in rete, PowerShell può aiutare a ottenere il lavoro fatto, più precisamente si richiede, e il più rapidamente possibile.

Cosa c’è di più, mentre a volte può essere complicato, non c’è bisogno di essere un programmatore per iniziare ad imparare un alcune nozioni di base di scripting. In realtà, se si lavora a linea di comando di Windows, anche occasionalmente si potrebbe svolgere compiti utili a PowerShell con studio appena pochi minuti.

Prompt dei comandi

Per avviare PowerShell, tipo ‘powershell’ nella casella di ricerca, quindi fare clic sulla voce di Windows PowerShell e scegliere ‘Esegui come amministratore’.

come si vedrà, l’interfaccia PowerShell guarda e si sente quasi identico al comando standard linea. E in molti modi, questa è una buona cosa, perché significa che è possibile utilizzare tutti i comandi che conosci già.

Inserisci DIR per elencare i file in una cartella, per esempio, cls per cancellare lo schermo, o IPCONFIG per elencare gli adattatori di rete; tutto funziona come ci si aspetterebbe.

Quello che si ottiene, però, è che molti nuovi comandi – o cmdlet (pronuncia ‘command-let’) in PowerShell-parlare – e, per fortuna, c’è un cmdlet per elencarli tutti. Tipo Get-Command e premere [Invio] per dare un’occhiata.

Per il momento, ignorare le funzioni e guardare solo i cmdlet. Come si vedrà, cmdlet hanno una chiara verbo-nome struttura di denominazione: Start-Process, Clear-EventLog, Get- ComputerRestorePoint, riavviando computer, e così via. Questo li rende molto facile da capire, ma, ovviamente, avrete spesso bisogno di maggiori dettagli.

Invio Update-Aiuto per scaricare e installare la documentazione, quindi utilizzare il Get-Help cmdlet, come questo, per scoprire un po ‘di più PowerShell:

Get-Help Inizio-Process

servizio di Get-Help

Get-help orologio

La prima riga visualizza guida specifica su Start-Process; la seconda elenca cmdlet con ‘servizio’ nel nome; e il terzo solo ricerche il sistema di aiuto per tutti gli articoli che contengono la parola ‘orologio’ -. grande quando si sa che cosa si vuole fare, ma semplicemente non sono sicuro che cmdlet per usare

query rapidi

Basta con la teoria; è il momento di fare un po ‘di lavoro vero e proprio. Cominciamo utilizzando PowerShell per raccogliere alcuni dati sul nostro sistema, in questo modo:. Get-Process

Come avrete probabilmente intuire dal nome cmdlet, questo diventa un elenco dei processi attualmente in esecuzione sul vostro sistema ( proprio come si vedrebbe in Task manager), e visualizza il loro utilizzo della CPU e RAM, insieme ad alcune altre statistiche.

Questo è già utile, e non qualcosa che si può fare facilmente in Windows da soli, ma abbiamo appena iniziato. Quindi, entrare in questo:

Get-Process | CPU Where-Object -gt 5

Come in precedenza, PowerShell viene prima verifica la processi in esecuzione. Il carattere gasdotto dice PowerShell per passare tale elenco al cmdlet Where. E questo esegue la scansione attraverso la lista dei processi, alla ricerca di tutto ciò che corrisponde alla condizione abbiamo impostato – che avrebbe dovuto essere utilizzato più di cinque secondi di tempo di CPU (-gt è maggiore; -ge è maggiore o uguale a; -LT è inferiore; -le è minore o uguale a)

ora abbiamo scartato la nostra lista originale un po ‘, quindi, ma c’è ancora molto da fare.. Il passo successivo è quello di entrare in questo:

Get-Process | Where-Object CPU -gt 5 | Sort-Object gestisce -descending

Stiamo ancora andare a prendere i processi in esecuzione e individuando i maiali della CPU, ma ora PowerShell è anche l’ordinamento dei processi rimanenti per il loro numero di maniglie (una misura di il numero di file, blocchi di memoria e altri oggetti di un processo ha aperto).

Ancora una volta, questo è solo un esempio, in modo tweak; ordina per CPU, per esempio, o ProcessName (le intestazioni delle colonne in cima alla lista Get-Process vi darà un’idea dei nomi è possibile utilizzare).

rapporti potenti

Come si può vedere, ci sono molti modi per personalizzare e filtrare qualunque PowerShell ritorna, ma c’è un problema: stiamo ancora solo ottenendo risultati di testo normale. Quindi, provate questo:

Get-Process | Where-Object CPU -gt 5 | Sort-Object gestisce -descending | Out-GridView

Ora PowerShell non solo filtro e ordinare l’elenco; visualizza anche i risultati in una griglia interattiva. È possibile nascondere, riordinare o ordinare le colonne, e filtrare i dati in vari modi. E una volta che sei felice, tutte le righe selezionati possono essere copiati negli appunti, pronto per l’uso in qualsiasi altro luogo.

Non è male per una sola riga di codice e, naturalmente, si può avere come molte linee di cui hai bisogno, ma c’è di più. Perché cmdlet di PowerShell lavorare in modo coerente, si può prendere questo esempio e riutilizzarla quasi immediatamente. Date un’occhiata a questi esempi:

Get-Winevent System | Where-Object LevelDisplayName eq “Critical” | Out-GridView

Get-Service | Where-Object stato eq “esecuzione” | displayname Sort-Object | Out-GridView

La prima ottiene il contenuto del registro di sistema di Windows, sembra per errori critici e li visualizza in una tabella. Il secondo va a prendere i nostri servizi in esecuzione, di nuovo ordinandoli per soddisfare le nostre esigenze. E entrambi gli esempi possono essere ulteriormente ottimizzato e personalizzato in molti modi diversi.

prendere il controllo con PowerShell

PowerShell fornisce un sacco di opzioni di ordinamento e di filtraggio, quindi, ma non è solo una segnalazione passiva strumento. Date un’occhiata a questo:

Get-Service | Out-GridView -Titolo ‘Seleziona servizio per riavviare!’ -OutputMode Single | Riavviare-Service -WhatIf

Stiamo ottenendo un elenco dei servizi installati, e di inserirli con un titolo finestra personalizzata come richiesta utente. L’interruttore singolo -OutputMode dice PowerShell che ci è permesso di selezionare una voce dell’elenco. Se facciamo questo, e fare clic su ‘OK’, il nostro servizio prescelto è passata lungo la pipeline per il prossimo cmdlet, Start-Service, che si ferma e comincia per noi, che è molto utile come un modo per cercare di far rivivere tutti i servizi che si comportano male.

O, almeno, sarebbe riavviare il servizio se non avessimo incluso l’interruttore -WhatIf, che racconta PowerShell per visualizzare semplicemente la sua azione, invece. Si tratta di una opzione di sicurezza a portata di mano, il che significa che si può vedere come un cmdlet potrebbe funzionare senza il rischio di, in questo caso, per sbaglio arresto di un servizio che in realtà dovrebbe essere lasciato solo. Ma se volete provare per davvero, immettere lo stesso cmdlet senza il -WhatIf, e avrete creato il vostro molto proprio strumento di servizio-riavvio personalizzato.

È possibile, ovviamente, fare qualcosa di simile con i processi, servizi, e qualsiasi altro oggetto PowerShell possono manipolare. Ma anche questo non è la fine della storia:

Get-Service -ComputerName MyPC | Out-GridView -OutputMode Single | Riavviare-Service -WhatIf

Cmdlet come Get-Service e Get-Process non si limitano al sistema locale. Utilizzare l’interruttore -ComputerName con il nome di un computer di rete e siete in grado di vedere ciò che è in esecuzione, anche (supponendo che l’account utente di Windows ha i privilegi per accedervi). PowerShell può quindi gestire i sistemi remoti esattamente nello stesso modo in cui il proprio PC.

PowerShell ISE

Finora abbiamo lavorato solo nella console di PowerShell, l’immissione dei comandi uno per uno e vedendo i risultati subito. C’è un altro modo per eseguire codice, anche se – in PowerShell Integrated Scripting Environment (ISE). E ‘un po’ più complesso, ma molto meglio quando si desidera stringa diversi cmdlet insieme, o di creare un po ‘di codice per un successivo riutilizzo. Lanciare la ricerca di PowerShell e facendo clic su ‘Windows PowerShell ISE’, entrando PowerShell ISE.exe nella casella Esegui, o inserendo ISE dalla console PowerShell.

L’ISE si apre con una interfaccia a due pannelli. Sulla sinistra è la console, in cui è possibile inserire i comandi PowerShell. Sulla destra si trova il Comandi Add-On, uno strumento pratico che può aiutare a costruire comandi con il mouse

processi Tipo nella casella Comandi ‘Nome’.; vedrete vari cmdlet corrispondenti. Seleziona ‘Get-Process’ di vedere i suoi parametri, aiuta a capire che cosa il cmdlet può fare. Fare clic sulla scheda ‘Nome’, per esempio, e troverete una scatola di modulo. Cosa fa questo? Controllare e fare clic su ‘Esegui’. I comandi, aggiungere-On costruisce il -module cmdlet Get-Process, lo esegue nella console, e visualizza i risultati -. Un elenco di tutti i processi, in cui ogni si includono i suoi moduli caricati (DLL e altri file di supporto)

Mentre questo può essere utile, la console ISE ha anche alcuni trucchi in più per accelerare la codifica PowerShell. Iniziare a digitare un cmdlet (provare Get-Process di nuovo) e ISE visualizza le possibili corrispondenze. Con il tempo hai raggiunto Get-Pro, il cmdlet corretta dovrebbe essere evidenziata, ed è possibile premere [Tab] per immettere automaticamente i caratteri rimanenti.

E ‘una storia simile quando si tratta di immettere i parametri. Toccare la barra spaziatrice, poi un trattino, e ISE elenca le varie opzioni Get-Process. Utilizzare i tasti cursore per scorrere verso il basso, quindi selezionare ‘-module’, premere [Invio] e di nuovo viene automaticamente aggiunto al vostro comando, nessuna battitura a macchina necessaria.

Come si può vedere, non c’è più da imparare a l’ISE, ma lo fa anche rendere più facile per esplorare ciò che PowerShell ha da offrire. Ora non ci resta che usarlo per costruire uno script.

Scripting

Fare clic su ‘Vista> Mostra riquadro di script’ per rivelare il riquadro dello script. Questa è una zona separata in cui è possibile inserire una stringa di comandi, attraverso come molte linee, se necessario, senza averli eseguiti immediatamente. Invece, è possibile eseguire tutti i comandi nel riquadro dello script in qualsiasi momento premendo [F5] o facendo clic ‘Test> Esegui’.

Per dare una prova, immettere i seguenti quattro comandi nel riquadro dello script.

$ computername = read-host “Quale nome del computer vorresti controllare?”

$ os = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ nomecomputer

$ LastBootUpTime = $ os.ConvertToDateTime

($ os.LastBootUpTime)

Scrivi-output “tempo $ nomecomputer dall’ultimo avvio è stato di $ LastBootUpTime”

Questo è un semplice script, che cerca di scoprire l’ora dell’ultimo avvio per qualunque computer di rete specificata. Anche se molto breve, è molto più avanzato di quanto il nostro codice precedente, e introduce diversi nuovi concetti.

La prima linea, per esempio, viene utilizzato il cmdlet lettura host per visualizzare un messaggio che richiede all’utente di inserire un nome del computer. Questo viene poi memorizzato in una variabile denominata $ nomecomputer.

La seconda riga utilizza WMI per recuperare il sistema operativo per il computer specificato, mentre il terzo poi ottiene il suo tempo di avvio e lo converte in un formato leggibile. (Non si preoccupi per i dettagli tecnici qui, tutto quello che ha realmente bisogno di ricordare è che Get-WmiObject possono tornare utili informazioni sulla configurazione del sistema.)

Infine, l’ultimo cmdlet Write-output invia un messaggio alla console. Le variabili saranno sostituite dai loro valori attuali così, per esempio, è possibile vedere “tempo MyServer dall’ultimo avvio era 2014/06/10 08:30”.

Premere [F5] per avviare lo script. Se è possibile accedere ad un PC collegato in rete, inserire il suo nome, altrimenti immettere localhost o solo un periodo per controllare il sistema locale. E questo è tutto – il tuo primo script multi-linea. Fare clic su ‘File> Salva con nome’ e salvarlo come C:. Scripts LastBootTime.ps1 (la creazione della cartella, se necessario), pronto per essere richiamato in qualsiasi momento

Il nostro script ISE campione era molto piccola, ma i principi possono essere utilizzati per eseguire quello che vuoi. Visita il Microsoft Scripting Centro – o cercare i script PowerShell – per individuare altri esempi, copiare e incollare nel riquadro di script, e premere il tasto [F5]

C’è ancora una questione in sospeso, però:.? come è possibile eseguire lo script al di fuori di PowerShell doppio clic su di esso sembra una soluzione ovvia, ma provate questo e il file si apre in Blocco note;. meno disponibile

Si potrebbe rilanciare PowerShell e digitare C:. Scripts LastBootTime.ps1 dalla riga di comando, ma che non funziona, o Devi semplicemente visualizzato un messaggio lamentando che “in esecuzione script è attivato per questo sistema “questo è normale,.. le impostazioni di sicurezza predefinite pongono limiti rigorosi su script per evitare che il loro abuso da parte di malware

per risolvere questo problema, è necessario saperne di più su l’esecuzione di PowerShell. la politica I seguenti cmdlet aiuteranno:

Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

la prima linea dovrebbe dirvi che la vostra politica è impostata su ‘ristretto’, bloccando gli script. Se è così, entrando nella seconda riga imposta criteri di esecuzione di ‘RemoteSigned’, invece. Ciò significa che i propri script verrà eseguito immediatamente, ma qualsiasi script scaricati dovrà essere firmato digitalmente da un editore attendibile

Prova la nuova politica immettendo C:. Scripts LastBootTime.ps1 di nuovo, e questo tempo lo script dovrebbe funzionare. Se è troppo fastidio per immettere il percorso completo ogni volta, basta aggiungere C: Scripts (o qualsiasi cartella scelta per gli script) alla variabile d’ambiente PATH (premere [Win] + [X], fare clic su ‘Sistema> Advanced System Impostazioni> Variabili d’ambiente “, fare doppio clic su ‘percorso’ in ‘Variabili di sistema’, quindi aggiungere un punto e virgola e la cartella -;. C Scripts – alla fine del percorso)

Questo isn ‘t abbastanza la fine della storia. Il PowerShell biblioteca ha alcuni dettagli utili su l’esecuzione di script, e c’è a trucchetto è possibile utilizzare per lanciare script da un collegamento ma per il resto si sa ora come testare, scrivere ed eseguire codice PowerShell. E ‘giunto il momento di iniziare a qualche grave script.

suggerimenti PowerShell e trucchi

editing più veloce

Se avete bisogno di riutilizzare un comando PowerShell, non perdere tempo ridigitare esso. Premere il tasto [F7] per visualizzare la cronologia recente, selezionare un comando, premere [Invio] per eseguirlo, o la freccia destra per posizionarlo sulla riga di comando. Per ulteriori scorciatoie di editing Vedere https://tinyurl.com/qyovam2.

Utilizzare i commenti

Aggiunta di commenti agli script PowerShell sarà aiutare gli altri a capire quello che fanno (o agire come un promemoria per te). Digitare un carattere # e tutto ciò che entra per il resto di quella linea saranno trattati come un commento di testo normale e non trattati come codice.

Pannello di controllo di accesso

PowerShell possono accedere ai componenti di Windows, così come i file. Utilizzare Get-ControlPanelItem per ottenere un elenco di applet del Pannello di controllo, e qualcosa come Show-ControlPanelItem * Display * a lanciare uno.

registrare una sessione di PowerShell

La revisione ciò che è accaduto in un PowerShell sessione può aiutare il processo di apprendimento. Inserire il cmdlet tutte le attività della console (compresa l’eventuale uscita) Avvio Trascrizione e vengono salvati in un file di testo nella cartella Documenti. Invio Stop-Trascrizione per interrompere la registrazione.

download con script

Hai bisogno di scaricare un file da uno script? Questo è il modo più semplice (vedi https://tinyurl.com/pdpvhdo per qualcosa di più intelligente):

$ client = New-Object “System.Net.WebClient”

$ cliente .DownloadFile ( “https://domain.com/bigfile.zip”, “c: temp bigfile.zip”

Invia email

non è il momento di monitorare tutto ciò che i vostri script stanno facendo? li possibile impostare per l’invio di una e-mail, invece. Controllare il cmdlet Send-MailMessage per un esempio di base, o Peter Morrisey di blog per qualcosa di più potente.

Get esempi

Se non siete sicuri di come utilizzare un cmdlet, utilizzare il Get-Help interruttore -examples, ad esempio Get -Help Invoke-WebRequest -examples, per saperne di più.

lettore RSS

il cmdlet Invoke-RestMethod può accedere al feed RSS di qualsiasi fonte web e manipolarla come più vi piace. Ecco un modo rapido per vedere cosa sta succedendo nel blog PowerShell di Microsoft:

Invoke-RestMethod -uri | Select-Object titolo, link | out-GridView

file di processo

per elaborare i file di testo, utilizzare Get-Content per leggerli, manipolare il contenuto come si desidera e utilizzare Set-Content per salvare le modifiche. Gli errori potrebbero causare la perdita di dati, anche se -. Funzionano solo con le copie dei file finché non si è sicuri di sapere cosa si sta facendo

gli script eseguiti automaticamente

se si diventa un PowerShell maestro, si potrebbe anche configurare Utilità di pianificazione per l’esecuzione automatica degli script, ogni volta che vuoi. Leggi su New-ScheduledTaskAction, New-ScheduledTaskTrigger e Registrazione-ScheduledTask cmdlet, e see questo post del blog per un esempio.

inserire i comandi PowerShell più veloce

Non perdere tempo a digitare comandi lunghi alla console di PowerShell. Inserire solo alcuni caratteri (Get-Pr per Get-Process, per esempio), tenere premuto scheda e le eventuali corrispondenze appaiono. Oppure utilizzare un alias, una versione più corta dello stesso testo; npssc funziona esattamente allo stesso modo come New-PSSessionConfigurationFile, per esempio.

Inserisci Get-Alias ​​per vedere gli alias che è possibile utilizzare in questo momento, e Set-Alias ​​per creare il proprio.

affinare le proprie competenze

puntare il browser su Scripting Centro di Microsoft, e guardare fuori per interessanti script di esempio. Copiare e incollare questi in ISE, premere [F5] per provare a giocare, quindi leggere il codice e cercare di capire come funzionano – è un ottimo modo per imparare la lingua


TechRadar – Tutte le ultime notizie di tecnologia