Molti sviluppatori amore PowerShell, e per una buona ragione: si aggiunge potenza, funzionalità e flessibilità per il Prompt dei comandi di Windows, dove molti di noi spendono un bel po ‘ di tempo. Lo fa, tuttavia, venire con un po ‘ di una curva di apprendimento, ma una volta che hai imparato i comandi essenziali che dovete sapere, è la produttività sugli steroidi.,
Comandi PowerShell sono noti come cmdlet, e questi cmdlet sono la forza trainante dietro le sue capacità funzionali. Dai comandi che migliorano l’esperienza complessiva di Windows ai comandi utili per il lavoro di sviluppo, ci sono decine di comandi importanti che gli sviluppatori dovrebbero conoscere., Abbiamo messo insieme questo elenco di servire come una guida di riferimento rapido per coloro che stanno appena iniziando a sfruttare la potenza di PowerShell così come coloro che vogliono salire di livello, la loro PowerShell esperienza, tra cui:
- di Base Cmdlet di PowerShell
- Comandi di PowerShell per Ottenere Cose Fare
- Cmdlet per il Monitoraggio delle Performance, Test e Debug
In aggiunta a cmdlet, ci sono decine di parametri e metodi che consentono di ottenere il massimo dal vostro script., Il parametro WhatIf è particolarmente utile per testare gli script PowerShell senza eseguirli effettivamente (@pluralsight). In genere sono disponibili diversi parametri e metodi per ogni comando. I comandi elencati di seguito sono un buon punto di partenza per qualsiasi sviluppatore, ma per realizzare pienamente i benefici, dovresti padroneggiare anche i parametri e altri metodi.
Cmdlet PowerShell di base
Questi comandi PowerShell di base sono utili per ottenere informazioni in vari formati, configurare la sicurezza e creare report di base.,
Get-Command
Get-Command è un cmdlet di riferimento facile da usare che fa apparire tutti i comandi disponibili per l’uso nella sessione corrente.
Basta digitare questo comando:
get-command
L’output sarà simile a questo (@MS_ITPro):
2. Get-Help
Il comando Get-Help è essenziale per chiunque utilizzi PowerShell, fornendo un rapido accesso alle informazioni necessarie per eseguire e lavorare con tutti i comandi disponibili.
Se si desidera alcuni esempi, ad esempio, si immette il seguente (@jp_jofre):
3., Set-ExecutionPolicy
Microsoft disabilita lo scripting per impostazione predefinita per impedire l’esecuzione di script dannosi nell’ambiente PowerShell. Gli sviluppatori vogliono essere in grado di scrivere ed eseguire script, tuttavia, in modo che il comando Set-ExecutionPolicy consente di controllare il livello di sicurezza che circonda gli script PowerShell. È possibile impostare uno dei quattro livelli di sicurezza:
- Restricted: Questo è il livello di sicurezza predefinito che blocca l’esecuzione degli script PowerShell. In questo livello di sicurezza, è possibile immettere i comandi solo in modo interattivo.,
- Tutti firmati: questo livello di sicurezza consente l’esecuzione degli script solo se firmati da un editore affidabile.
- Firma remota: in questo livello di sicurezza, è consentito eseguire qualsiasi script PowerShell creato localmente. Gli script creati in remoto possono essere eseguiti solo se firmati da un editore affidabile.
- Unrestricted: Come suggerisce il nome, il livello di sicurezza senza restrizioni consente l’esecuzione di tutti gli script rimuovendo tutte le restrizioni dal criterio di esecuzione.,
Allo stesso modo, se stai lavorando in un ambiente non familiare, puoi facilmente scoprire quale sia la politica di esecuzione corrente utilizzando questo comando:
Get-ExecutionPolicy
Controlla questo thread su SuperUser per ulteriori informazioni sulla configurazione della politica di esecuzione in PowerShell. (@StackExchange)
Get-Service
È anche utile sapere quali servizi sono installati sul sistema., Si può facilmente accedere a queste informazioni con il seguente comando:
Get-Service
L’output sarà simile al seguente (@MS_ITPro):
Se avete bisogno di sapere se un determinato servizio è installato, è possibile aggiungere il Nome di opzione e il nome del servizio, e Windows mostrerà lo stato del servizio. Inoltre, è possibile sfruttare le funzionalità di filtraggio per restituire un sottoinsieme specifico di servizi attualmente installati., Il seguente esempio produrrà un output di dati dal comando Get-Service che è stato convogliato nel cmdlet Where-Object, che quindi filtra tutto tranne i servizi che sono stati fermati:
Get-Service | Where-Object {$_.status -eq "stopped"}
Dai un’occhiata a questo post per alcuni esempi aggiuntivi di Get-Service in azione.
5. ConvertTo-HTML
Se è necessario estrarre i dati che è possibile utilizzare in un report o inviare a qualcun altro, il ConvertTo-HTML è un modo semplice per farlo., Per utilizzarlo, converti l’output da un altro comando al comando ConvertTo-HTML e usa l’opzione-Property per specificare le proprietà di output desiderate nel file HTML. È inoltre necessario fornire un nome di file.
Ad esempio, il seguente codice crea una pagina HTML che elenca gli alias di PowerShell nella console corrente:
PS C:\> get-alias | convertto-html > aliases.htmPS C:\> invoke-item aliases.htm
Bonus: il cmdlet
Export-CSV
funziona più o meno allo stesso modo, ma esporta i dati in un .File CSV piuttosto che HTML., Utilizzare
Select-Object
per specificare quali proprietà si desidera includere nell’output.
Dai un’occhiata a questo articolo da 4sysops per ulteriori informazioni sull’utilizzo efficace di ConvertTo-HTML (@adbertram).
6. Get-EventLog
Puoi effettivamente utilizzare PowerShell per analizzare i log degli eventi della tua macchina usando il cmdlet Get-EventLog. Ci sono diversi parametri disponibili. Utilizzare l’opzione-Log seguita dal nome del file di registro per visualizzare un registro specifico., Dovresti usare il seguente comando, ad esempio, per visualizzare il registro dell’applicazione:
Get-EventLog -Log "Application"
Dai un’occhiata ad alcuni altri esempi di Get-EventLog in azione in questo post (@nextofwindows). Altri parametri comuni includono (@SS64):
- -Verbose
- Debug
- -ErrorAction
- -ErrorVariable
- -WarningAction
- -WarningVariable
- -OutBuffer
- -OutVariable
Get-Process
Molto come ottenere un elenco dei servizi disponibili, spesso è utile per essere in grado di ottenere un rapido elenco di tutti i processi attualmente in esecuzione., Il comando Get-Process mette queste informazioni a portata di mano.
Bonus: utilizzare Stop-Process per arrestare i processi che sono congelati o non rispondono più. Se non sei sicuro di quale processo ti stia trattenendo, usa Get-Process per identificare rapidamente il processo problematico. Una volta che hai il nome o l’ID del processo, usa Stop-Process per terminarlo.
Ecco un esempio., Eseguire questo comando per terminare tutte le istanze in esecuzione di blocco note (@MS_ITPro):
Stop-Process -processname notepad
È possibile utilizzare caratteri jolly, come nell’esempio seguente in cui termina tutte le istanze del blocco note, nonché degli eventuali altri processi inizio con la nota:
Stop-Process -processname note*
Controllare questo post per ulteriori informazioni sull’interruzione di processi con PowerShell (@howtogeek):
8. Clear-History
Cosa succede se si desidera cancellare le voci dalla cronologia dei comandi? Facile da usare il cmdlet Clear-History. Puoi anche usarlo per eliminare solo comandi specifici., Per esempio, il seguente comando elimina comandi che includono “aiuto” o finiscono in “comando” (@MS_ITPro):
PS C:\> Clear-History -Command *help*, *command
Se si desidera aggiungere voci di una sessione, utilizzare:
Add-History
Controllare questo post per alcune informazioni utili su come eliminare la cronologia e il pre-caricamento storia con un elenco di alcuni comandi (@MS_ITPro).,
Where-Object
Where-Object è uno dei cmdlet più importanti da conoscere, in quanto consente di prendere un set di dati e passarlo più in basso nella pipeline per il filtraggio (@jonathanmedd):
Get-Service | Where-Object {$_.Status -eq 'Running'}Status Name DisplayName------ ---- -----------Running AdobeARMservice Adobe Acrobat Update ServiceRunning AppHostSvc Application Host Helper ServiceRunning Appinfo Application InformationRunning AudioEndpointBu... Windows Audio Endpoint BuilderRunning Audiosrv Windows AudioRunning BFE Base Filtering EngineRunning BITS Background Intelligent Transfer Ser...Running BrokerInfrastru... Background Tasks Infrastructure Ser...Running Browser Computer BrowserRunning CDPSvc Connected Devices Platform Service
10. Set-AuthenticodeSignature
Se si desidera mantenere il lavoro sicuro in produzione e impedire la modifica, utilizzare Set-AuthenticodeSignature per aggiungere una firma Authenticode a uno script o un file.
Comandi PowerShell per ottenere le cose fatte
Quando si tratta di produttività, PowerShell può aiutare a ottenere le cose fatte con i seguenti comandi.
11., ForEach-Object
Il cmdlet ForEach-Object esegue un’operazione contro ogni elemento in un gruppo specificato di oggetti di input. Mentre molti cmdlet funzionano comunque con ogni oggetto in una raccolta, è necessario ForEach-Object per quelle situazioni in cui si desidera apportare altre modifiche o applicare una formattazione specifica a tutti gli oggetti in una raccolta.
Ecco un esempio (@MS_ITPro)., Se si desidera visualizzare un elenco di nomi di processo e voglio che questi nomi per rendere il ciano, che si potrebbe provare il seguente:
Get-Process | Write-Host $_.name -foregroundcolor cyan
Ma sopra produrrà il seguente errore:
At line:1 char:25+ get-process | write-host <<<< $_.name -foregroundcolor cyan Write-Host : The input objectcannot be bound to any parameters for the command either because the command does nottake pipeline input or the input and its properties do not match any of the parametersthat take pipeline input.
Perché il Write-Host cmdlet non capire che cosa si vuole fare con i dati inviati tramite la pipeline.
Quindi, l’uso del cmdlet ForEach-Object risolve questo problema:
Get-Process | ForEach-Object {Write-Host $_.name -foregroundcolor cyan}
Dai un’occhiata a questo tutorial per ulteriori informazioni su ForEach-Object e lavorare con i loop (@tomsitpro).
12., Clear-Content
Se si desidera eliminare il contenuto di un elemento ma mantenere l’elemento stesso, si utilizzerà il cmdlet Clear-Content:
Clear-Content C:\Temp\TestFile.txt
È anche possibile utilizzare questo comando per cancellare il contenuto di tutti i file con un’estensione di file specificata. Il seguente codice sarebbe cancellare il contenuto di tutti i file con il .estensione txt, ad esempio:
Clear-Content -path * -filter *.TXT –force
Puoi anche usare caratteri jolly. Inoltre, è possibile cancellare il contenuto di qualsiasi tipo di file, da .file txt a .doc, .xls, e altro ancora.
Dai un’occhiata a questo post per maggiori dettagli.
13., Checkpoint-Computer
Se stai apportando modifiche importanti o stai eseguendo un esperimento rischioso, puoi impostare un punto di ripristino sulla tua macchina con il cmdlet Checkpoint-Computer.
Si noti che è possibile creare un punto di ripristino utilizzando questo cmdlet solo una volta ogni 24 ore. Se si esegue nuovamente il comando, manterrà il punto di ripristino precedente:
Controlla questo articolo da MCP Mag per ulteriori informazioni (@MCPmag).
Compare-Object
È spesso utile poter confrontare direttamente due oggetti., Puoi farlo usando Compare-Object, che genera un rapporto sulle differenze tra due set come (@Marcam923):
15. ConvertFrom-StringData
Utilizzare ConvertFrom-StringData per convertire una stringa contenente una o più coppie di valori in una tabella hash. Ecco un esempio di come appare il comando:
$settings = $TextData | ConvertFrom-StringData
Questo comando è utile in una varietà di situazioni, ad esempio quando si desidera salvare le impostazioni per uno script PowerShell per consentire ad altri di modificare le impostazioni senza lavorare direttamente nel codice dello script.,
ConvertTo-SecureString
Converti una stringa standard crittografata in una stringa sicura o un testo normale in una stringa sicura usando ConvertTo-SecureString. Questo cmdlet viene utilizzato insieme a ConvertFrom-SecureString e Read-Host (@AdmArsenal):
ConvertTo-XML
Usa il cmdlet ConvertTo-XML per creare una rappresentazione basata su XML di un oggetto. Questo è anche chiamato serializzazione, ed è un processo utile per il salvataggio dei dati per un successivo riutilizzo. Si noti che è importante che l’espressione scriva oggetti nella pipeline., Tutto ciò che utilizza Write-Host non scriverà nella pipeline e quindi non può essere serializzato. Ecco un esempio di ConvertTo-XML in action (@PetriFeed):
Get-Service wuauserv -ComputerName chi-dc04,chi-p50,chi-core01 |Export-Clixml -Path c:\work\wu.xml
Il cmdlet specifico utilizzato nell’esempio precedente, Export-Clixml, è adatto per la maggior parte degli scopi. Converte l’output di un’espressione PowerShell in XML e lo salva in un file.
18. New-AppLockerPolicy
New-AppLockerPolicy crea un nuovo criterio AppLocker da un elenco di informazioni sui file e altre opzioni di creazione delle regole., In totale, ci sono cinque cmdlet che consentono di interagire con AppLocker, tra cui (@RootUsers_):
- Get-AppLockerFileInformation: Ottiene le informazioni necessarie per la creazione di regole AppLocker da un elenco di file o il registro eventi.
- Get-AppLockerPolicy: utilizzato per recuperare un criterio AppLocker locale, efficace o di dominio.
- New-AppLockerPolicy: Come accennato, questo cmdlet viene utilizzato per la creazione di nuove politiche AppLocker.
- Set-AppLockerPolicy: imposta il criterio AppLocker per un oggetto criteri di gruppo specificato.,
- Test-AppLockerPolicy: utilizzato per determinare se un utente o un gruppo di utenti sarà in grado di eseguire determinate azioni in base alla politica.
19. New-ItemProperty
New-ItemProperty crea una nuova proprietà per un elemento e ne imposta il valore. È possibile utilizzarlo per creare e modificare i valori e i dati del registro di sistema (proprietà di una chiave di registro), ad esempio.
Dai un’occhiata a questo tutorial da mnaoumov.NET per alcune soluzioni utili utilizzando questo cmdlet (@mnaoumov).
20. New-Object
Per creare un’istanza di Microsoft .,NET Framework o Component Object Model (COM) oggetto, utilizzare il cmdlet New-Object.
Ecco un esempio che crea un nuovo oggetto usando New-Object, lo memorizza in una variabile, quindi lo indirizza a Add-Member, che aggiungerà proprietà o metodi specificati nell’oggetto creato (@gngrninja):
21. New-WebServiceProxy
New-WebServiceProxy crea un oggetto proxy del servizio Web che consente di utilizzare e gestire il servizio Web da PowerShell., Questo cmdlet è una cosa bella per gli sviluppatori – rende inutile scrivere un sacco di codice complesso per cercare di realizzare qualcosa in PowerShell quando si può semplicemente chiamare un altro servizio che lo rende già possibile.
Ecco un esempio:
Ora, è possibile eseguire quanto segue per visualizzare un elenco di tutti i metodi disponibili:
$proxy | gm -memberType Method
22. New-WSManInstance
Analogamente a New-WebServiceProxy, New-WSManInstance crea una nuova istanza di una risorsa di gestione.,
Dai un’occhiata a questo tutorial per un esempio completo passo-passo su come ottenere le informazioni necessarie per eseguire correttamente questo script (@jonathanmedd).
23., Nuovo-WSManSessionOption
Nuovo-WSManSessionOption crea una nuova sessione di gestione la tabella di hash utilizzato come parametri di input per altre WS-i cmdlet di Gestione, tra cui:
- Get-WSManInstance
- Set-WSManInstance
- Invoke-WSManAction
- Connessione-WSMan
Ecco la sintassi (@SAPIENTech):
Select-Object
Select-Object cmdlet seleziona le proprietà specifiche di un singolo oggetto o un gruppo di oggetti. Inoltre, può selezionare oggetti univoci da un array o un numero specificato di oggetti dall’inizio o dalla fine di un array.,
PS > Get-Process | Sort-Object name -Descending | Select-Object -Index 0,1,2,3,4
Questo tutorial fornisce ulteriori informazioni sui vari modi in cui è possibile utilizzare Select-Object (@infosectactico).
Ci sono altri cmdlet con funzioni simili tra cui:
- Select-String: Trova il testo in stringhe o file.
- Select-XML: Trova il testo in una stringa XML o in un documento.
25. Set-Alias
Set-Alias è un ottimo comando per migliorare la produttività. Consente di impostare un alias per un cmdlet o un altro elemento di comando nella sessione corrente (simile a una scorciatoia da tastiera) in modo da poter lavorare più velocemente.,
Il seguente esempio imposta Notepad su np nella sessione corrente usando Set-Alias (@powershellatoms):
New-Alias np c:\windows\system32\notepad.exe
Nota che puoi anche personalizzare il tuo profilo PowerShell con gli alias che usi più spesso (@howtogeek).
26. Set-StrictMode
Set-StrictMode stabilisce e applica regole di codifica in script, blocchi di script ed espressioni. È un comando utile per far rispettare la qualità del codice e impedirti di rallentare e scrivere codice sciatto quando sono le 3:00 del mattino e non hai dormito in due giorni (@adbertram).,
Per utilizzare, ci sono due parametri da tenere in considerazione: -Off e la Versione e la Versione dispone di tre valori:
- Versione 1.0: Impedisce l’utilizzo di variabili che non sono state inizializzate (come Option Explicit in VBScript)
- Versione 2.0: ti Impedisce di usare le variabili che non sono state inizializzate e impedisce anche la chiamata di inesistenti proprietà sugli oggetti, impedisce la chiamata di una funzione come un metodo, e ne vieta la creazione di variabili senza un nome.,
- Versione più recente: Questa opzione seleziona l’ultima versione StrictMode disponibile e la utilizza. Questa è una buona opzione perché significa che l’ultima versione di StrictMode viene utilizzata indipendentemente dalla versione di PowerShell che stai utilizzando.
Wait-Job
Wait-Job sopprime il prompt dei comandi fino al completamento dei lavori in background in esecuzione nella sessione corrente. Wait-Job non mostra l’output dai lavori, tuttavia, ma può essere utilizzato in combinazione con Receive-Job. Il multithreading è possibile in PowerShell grazie a-Jobs.
Write-Progress
Chi non ama una barra di stato?, Monitorare i progressi utilizzando Write-Progress, che visualizza una barra di avanzamento all’interno di una finestra di comando di Windows PowerShell.
Ecco un esempio che fornisce una barra di avanzamento completa e stringhe di runtime (@credera):
Cmdlet per il monitoraggio delle prestazioni, test e debug
Ci sono anche una varietà di cmdlet utili per gli sviluppatori per la risoluzione dei problemi, test, debug e scopi di monitoraggio. Qui ci sono alcuni che dovete sapere.
Debug-Process
Gli sviluppatori amano il debug! Bene, ci piace ancora di più quando non ci sono bug da eliminare, ma purtroppo non è sempre così., Con PowerShell, è possibile eseguire il debug di un processo utilizzando il cmdlet Debug-Process.
Puoi anche eseguire il debug dei lavori usando Debug-Job (@MS_ITPro). E, è possibile impostare i punti di interruzione o utilizzare il cmdlet Wait-Debugger:
30. Disabilita-PSBreakpoint
Se hai impostato contemporaneamente i punti di interruzione ma vuoi eliminarli, fallo facilmente usando Disable-PSBreakpoint, che disabilita i punti di interruzione nella console corrente. Ecco la sintassi (@ActiveXperts):
Disable-PSBreakpoint Disable-PSBreakpoint
In alternativa, se si desidera abilitare i punti di interruzione nella console corrente, utilizzare Enable-PSBreakpoint.,
Get-Counter
Get-Counter ottiene i dati del contatore delle prestazioni in tempo reale dalla strumentazione di monitoraggio delle prestazioni nel sistema operativo Windows. Viene utilizzato per ottenere dati sulle prestazioni da computer locali o remoti a intervalli di esempio specifici specificati.
In questo esempio, si otterrà un contatore impostato con un intervallo di campionamento per un campione massimo specificato (@MS_ITPro):
PS C:\> Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Nell’esempio seguente, questo comando ottiene dati contatore specifici da più computer:
32., Export-Counter
Export-Counter esporta gli oggetti PerformanceCounterSampleSet come file di log del contatore. Sono disponibili due proprietà:
- CounterSamples: ottiene e imposta i dati per i contatori.
- Timestamp: ottiene e imposta la data e l’ora in cui sono stati raccolti i dati di esempio.,
E diversi metodi, che sono ereditati da Oggetto:
- Equals(Object)
- Finalize()
- GetHashCode()
- GetType()
- MemberwiseClone()
- ToString()
Per esempio, il seguente comando Get-Counter per raccogliere dati sul Tempo del Processore e lo esporta in un .file blg utilizzando Export-Counter (@TechGenix):
Get-Counter "\Processor(*)\% Processor Time" | Export-Counter -Path C:\Temp\PerfData.blg
33. Test-Path
Test-Path consente di verificare se gli elementi esistono in un percorso specificato., Ad esempio, se si prevede di utilizzare un altro comando su un file specificato, potrebbe essere necessario verificare che il file esista per evitare di generare un errore.
Test-Path C:\Scripts\Archive
Se la cartella esiste, restituirà True; se non lo fa, restituirà False.
Può anche funzionare con i percorsi utilizzati da altri provider PowerShell. Ad esempio, se hai bisogno di sapere se il tuo computer ha una variabile d’ambiente chiamata username, puoi usare quanto segue:
Test-Path Env:\username
Test-Path funziona con variabili, certificati, alias e funzioni., Dai un’occhiata a questo post di TechNet per maggiori dettagli (@MS_ITPro).
34. Get-WinEvent
Guarda i registri eventi di Windows usando Get-WinEvent. Per un elenco dei registri disponibili, utilizzare:
Get-WinEvent -ListLog *
Quindi, per rivedere i dettagli di uno specifico registro, sostituire * con il nome (pipe l’output format-list per visualizzare tutti i dettagli):
Get-WinEvent -ListLog $logname | fl *
È inoltre possibile visualizzare tutti gli eventi in un file di registro utilizzando:
Get-WinEvent -LogName System
Check out questo tutorial per ulteriori dettagli (@rakheshster).,
Invoke-TroubleshootingPack
Troubleshooting pack sono raccolte di script PowerShell e assembly che consentono di risolvere, diagnosticare e riparare i problemi di sistema comuni (@ITNinjaSite). Trovare pacchetti di risoluzione dei problemi in:
C:\Windows\Diagnostics\System
È possibile eseguire questo script per ottenere un elenco di tutti i pacchetti di risoluzione dei problemi disponibili sul sistema corrente (@TechGenix):
Get-ChildItem C:\Windows\Diagnostic\System
Quindi, da un elevato finestra di PowerShell, eseguire un pacchetto di risoluzione dei problemi usando questo comando:
Invoke-TroubleshootingPack (Get-TroubleshootingPack C:\Windows\diagnostics\system\networking)
36., Measure-Command
Se si desidera cronometrare le operazioni in PowerShell, Measure-Command è un cmdlet indispensabile. Misura per quanto tempo uno script o scriptblock da eseguire. Ecco un esempio (@ToddKlindt):
Measure-Command { Mount-SPContentDatabase –Name wss_content_portal –WebApplication http://portal.contoso.com }
L’output è un oggetto TimeSpan, quindi contiene proprietà come Ora, Minuto, Secondo, ecc., ed è facile da adattare l’uscita alle Sue preferenze.
Measure-Object
Potresti anche voler sapere quanto è grande un determinato oggetto., Utilizzare Measure-Object per calcolare le proprietà numeriche di qualsiasi oggetto, inclusi caratteri, parole e linee in un oggetto string, ad esempio file di testo.,
Basta specificare il nome e il tipo di misura per eseguire, insieme con parametri come (@WindowsITPro):
- -Somma: aggiunge i valori
- Media: calcola il valore medio
- Minimo: trova il valore minimo
- Massima: trova il valore massimo
Il comando seguente riassume la VirtualMemorySize i valori delle proprietà di tutti gli oggetti processo:
Get-Process | measure VirtualMemorySize -Sum
Nuovo-Evento
Nuovo Evento viene utilizzato per creare un nuovo evento., Un cmdlet correlato è New-EventLog, che crea un nuovo registro eventi e una nuova origine eventi su un computer locale o remoto. Se si dispone di un motore di automazione supportato da PowerShell, è buona norma impostare un registro eventi (creando un tipo di registro eventi personalizzato) che registri tutti i messaggi inviati da PowerShell. Questo è un esempio in cui è possibile implementare la registrazione personalizzata nel Visualizzatore eventi.,
Inizia con la creazione di un nuovo Registro Eventi LogName (@BundaloVladimir):
New-EventLog -LogName Troubleshooting_Log -Source FalloutApp
Quindi, per inviare messaggi al nuovo registro eventi, eseguire le seguenti operazioni utilizzando la Scrittura del Log cmdlet:
Write-EventLog -log Troubleshooting_Log -source FalloutApp -EntryType Information -eventID 10 -Message "FalloutApp has been successfully installed"
Ricevere-Lavoro
Se avete bisogno di ottenere i risultati di Windows PowerShell processi in background nella sessione corrente, utilizzare Ricevere-Lavoro. Questo viene solitamente utilizzato dopo aver utilizzato Start-Job per iniziare un lavoro quando è necessario visualizzare i risultati specifici.,
Receive-Job -Name HighMemProcess
Dai un’occhiata a questo utile tutorial sull’utilizzo di Receive-Job e cosa fare se apparentemente non ci sono risultati (@proxb).
40. Register-EngineEvent
Questo cmdlet viene utilizzato per sottoscrivere gli eventi generati dal motore di Windows PowerShell e dal cmdlet New-Event. Ad esempio, il seguente comando sottoscrive un evento quando la sessione PowerShell corrente termina e salva le informazioni (come data e ora) in un file di registro (@jonathanmedd):
Register-EngineEvent PowerShell.Exiting-Action {"PowerShell exited at " + (Get-Date) | Out-File c:\log.txt -Append}
41., Register-ObjectEvent
Register-ObjectEvent è simile a Register-EngineEvent, ma piuttosto che sottoscrivere gli eventi generati dal motore PowerShell e New-Event, sottoscrive gli eventi generati da un oggetto Microsoft.NET Framework.
Ecco un esempio (@NetworkWorld):
Ci sono altri cmdlet di registro che potresti trovare utili tra cui:
- Register – PSSessionConfiguration: Crea e registra una nuova configurazione di sessione.
- Register-WmiEvent: Questo cmdlet sottoscrive un evento WMI.
42., Remove-Event
Quando si desidera rimuovere un evento, utilizzare il cmdlet Remove-Event. Se è necessario rimuovere un intero registro eventi, utilizzare Remove-EventLog, che elimina un registro eventi o annulla la registrazione di un’origine evento.
In alternativa, Unregister-Event annulla una sottoscrizione evento ma non elimina un evento dalla coda eventi (@SS64).
43. Set-PSDebug
Questo cmdlet attiva e disattiva le funzioni di debug degli script. Imposta anche il livello di traccia e commuta StrictMode.,
Utilizzando Set-PSDebug nella parte superiore del file di script subito dopo l’istruzione param () (se presente), è possibile evitare errori con gli script che PowerShell non fornisce informazioni adeguate per scopi di risoluzione dei problemi. Ecco un esempio (@r_keith_hill):
44. Start-Sleep
Se è necessario sospendere l’attività in uno script o una sessione, utilizzare Start-Sleep, che interrompe l’attività per un periodo di tempo specificato.
Start-Sleep -Seconds xxxStart-Sleep -Milliseconds xxx
Se è necessario mettere in pausa uno o più servizi in esecuzione, utilizzare Suspend-Service.
45., Tee-Object
Se stai analizzando le prestazioni o la qualità del codice, è utile essere in grado di visualizzare l’output di un comando. Tee-Object memorizza l’output del comando in un file o variabile e lo visualizza anche nella console se è l’ultima variabile nella pipeline. Se non è l’ultima variabile nella pipeline, Tee-Object lo invia lungo la pipeline.
Ecco la sintassi:
46. Test-AppLockerPolicy
Test-AppLockerPolicy valuta se i file di input possono essere eseguiti per un utente specifico in base al criterio AppLocker specificato.,
Test-AppLockerPolicy -Path Test-AppLockerPolicy -Path
Questo tutorial offre maggiori dettagli sui parametri disponibili ed esempi di Test-AppLockerPolicy in azione (@powershellhelp).
Test-ComputerSecureChannel
Questo cmdlet verifica e ripara la connessione tra un computer locale e il suo dominio. Senza questo comando, la soluzione usuale era in precedenza quella di rimuovere un computer dal suo dominio e quindi ricollegarlo per ristabilire la relazione. Test-ComputerSecureChannel consente di ristabilire la connessione in meno tempo (@WindowsITPro).,
Quando si effettua l’accesso come amministratore locale, eseguire semplicemente quanto segue:
Test-ComputerSecureChannel –credential WINDOWSITPRO\Administrator –Repair
È possibile utilizzare Test-Connection per inviare pacchetti di richiesta echo (ping) ICMP (Internet Control Message Protocol) a uno o più computer.
Test-Path
Utilizzare Test-Path per determinare se tutti gli elementi di un percorso esistono. In sostanza, ti aiuta a gestire gli errori prima che si verifichino. Nella sua forma più semplice, restituisce True o False (@MCPmag):
PS C:\> test-path c:\TruePS C:\> test-path z:\fooFalse
49. Trace-Command
Trace-Command configura e avvia la traccia di un comando o di un’espressione specificata., Per usarlo, dovrai anche usare Get-TraceSource per cercare nomi particolari usando caratteri jolly:
PS> Get-TraceSource -Name *param*
Puoi filtrare l’output per abbinare la descrizione al modello che stai cercando. Una volta identificato il possibile nome di traccia, utilizzerai Trace-Command per ottenere le risposte di cui hai bisogno. Ecco un esempio:
Dai un’occhiata a questo post per maggiori dettagli sulla riproduzione di detective con Trace-Command (@PowerShellMag).
50. Write-Debug
Write-Debug scrive un messaggio di debug nella console., Quando lo scrivi in una funzione o in uno script, non fa nulla per impostazione predefinita; i messaggi rimangono essenzialmente in attesa finché non modifichi il tuo Deb DebugPreference o attivi l’opzione-debug quando chiami una funzione o uno script. Quando Deb DebugPreference è impostato su “richiedi” o l’opzione-debug è attivata, il messaggio crea un punto di interruzione, offrendo un modo semplice per accedere alla modalità di debug.
Prendi questo esempio (@RJasonMorgan):
L’esempio precedente produce quanto segue quando viene eseguito con-debug:
Lascia un commento