Viele Entwickler lieben Powershell, und das aus gutem Grund: es fügt Leistung, Funktionalität und Flexibilität an der Windows-Eingabeaufforderung, wo viele von uns viel Zeit verbringen. Es kommt jedoch mit ein bisschen Lernkurve, aber sobald Sie die wesentlichen Befehle beherrschen, die Sie wissen müssen, ist es Produktivität auf Steroiden.,
PowerShell-Befehle werden als cmdlets bezeichnet, und diese Cmdlets sind die treibende Kraft hinter ihren funktionalen Funktionen. Von Befehlen, die die allgemeine Windows-Erfahrung verbessern, bis hin zu Befehlen, die für Entwicklungsarbeiten nützlich sind, gibt es Dutzende wichtiger Befehle, die Entwickler kennen sollten., Wir haben diese Liste zusammengestellt, um als praktisches Nachschlagewerk für diejenigen zu dienen, die gerade erst anfangen, die Leistung von PowerShell zu nutzen, sowie für diejenigen, die ihre PowerShell-Erfahrung verbessern möchten, einschließlich:
- Grundlegende PowerShell-Cmdlets
- PowerShell-Befehle zum Erledigen von Dingen
- Cmdlets zum Überwachen, Testen und Debuggen der Leistung
Zusätzlich zu Cmdlets gibt es Dutzende von Parametern und Methoden, mit denen Sie das Beste aus Ihrer PowerShell-Erfahrung herausholen können skripte., Der WhatIf-Parameter ist besonders nützlich, um PowerShell-Skripte zu testen, ohne sie tatsächlich auszuführen (@pluralsight). Normalerweise stehen für jeden Befehl mehrere Parameter und Methoden zur Verfügung. Die unten aufgeführten Befehle sind ein guter Ausgangspunkt für jeden Entwickler, aber um die Vorteile vollständig zu nutzen, sollten Sie auch Parameter und andere Methoden beherrschen.
Grundlegende PowerShell-Cmdlets
Diese grundlegenden PowerShell-Befehle sind hilfreich, um Informationen in verschiedenen Formaten abzurufen, die Sicherheit zu konfigurieren und grundlegende Berichte zu erstellen.,
Get-Command
Get-Command ist ein einfach zu bedienendes Referenz-Cmdlet, das alle verfügbaren Befehle für die Verwendung in Ihrer aktuellen Sitzung aufruft.
Geben Sie einfach diesen Befehl ein:
get-command
Die Ausgabe sieht ungefähr so aus (@MS_ITPro):
2. Get-Help
Der Befehl Get-Help ist für alle Benutzer von PowerShell unerlässlich und bietet schnellen Zugriff auf die Informationen, die Sie zum Ausführen und Arbeiten mit allen verfügbaren Befehlen benötigen.
Wenn Sie zum Beispiel einige Beispiele wünschen, geben Sie Folgendes ein (@jp_jofre):
3., Set-ExecutionPolicy
Microsoft deaktiviert die Skripterstellung standardmäßig, um zu verhindern, dass schädliche Skripte in der PowerShell-Umgebung ausgeführt werden. Entwickler möchten jedoch Skripte schreiben und ausführen können, sodass Sie mit dem Befehl Set-ExecutionPolicy das Sicherheitsniveau für PowerShell-Skripte steuern können. Sie können eine von vier Sicherheitsstufen festlegen:
- Restricted: Dies ist die Standardsicherheitsstufe, die die Ausführung von PowerShell-Skripten blockiert. In dieser Sicherheitsstufe können Sie Befehle nur interaktiv eingeben.,
- Alle signiert: Diese Sicherheitsstufe erlaubt die Ausführung von Skripten nur, wenn sie von einem vertrauenswürdigen Publisher signiert sind.
- Remote Signed: In dieser Sicherheitsstufe dürfen alle PowerShell-Skripte ausgeführt werden, die lokal erstellt wurden. Remote erstellte Skripte dürfen nur ausgeführt werden, wenn sie von einem seriösen Publisher signiert wurden.
- Uneingeschränkt: Wie der Name schon sagt, ermöglicht die uneingeschränkte Sicherheitsstufe die Ausführung aller Skripte, indem alle Einschränkungen aus der Ausführungsrichtlinie entfernt werden.,
Wenn Sie in einer unbekannten Umgebung arbeiten, können Sie mit diesem Befehl ganz einfach herausfinden, was die aktuelle Ausführungsrichtlinie ist:
Get-ExecutionPolicy
Weitere Informationen zum Konfigurieren der Ausführungsrichtlinie in PowerShell finden Sie in diesem Thread auf SuperUser. (@StackExchange)
Get-Service
Es ist auch hilfreich zu wissen, welche Dienste auf dem system installiert sind., Mit dem folgenden Befehl können Sie problemlos auf diese Informationen zugreifen:
Get-Service
Die Ausgabe sieht ungefähr wie folgt aus (@MS_ITPro):
Wenn Sie wissen müssen, ob ein bestimmter Dienst installiert ist, können Sie den Schalter-Name und den Namen des Dienstes anhängen, und Windows zeigt den Status des Dienstes an. Darüber hinaus können Sie Filterfunktionen nutzen, um eine bestimmte Teilmenge der aktuell installierten Dienste zurückzugeben., Das folgende Beispiel führt zu einer Ausgabe von Daten aus dem Befehl Get-Service, der an das Cmdlet Where-Object weitergeleitet wurde und dann alles andere als die gestoppten Dienste herausfiltert:
Get-Service | Where-Object {$_.status -eq "stopped"}
In diesem Beitrag finden Sie einige zusätzliche Beispiele für Get-Service in Aktion.
5. ConvertTo-HTML
Wenn Sie Daten extrahieren müssen, die Sie in einem Bericht verwenden oder an eine andere Person senden können, ist ConvertTo-HTML eine einfache Möglichkeit., Um es zu verwenden, leiten Sie die Ausgabe eines anderen Befehls an den Befehl ConvertTo-HTML weiter und geben Sie mit dem Schalter-Property an, welche Ausgabeeigenschaften in der HTML-Datei angezeigt werden sollen. Sie müssen auch einen Dateinamen angeben.
Der folgende Code erstellt beispielsweise eine HTML-Seite, auf der die PowerShell-Aliase in der aktuellen Konsole aufgeführt sind:
PS C:\> get-alias | convertto-html > aliases.htmPS C:\> invoke-item aliases.htm
Bonus: Das
Export-CSV
Cmdlet funktioniert ähnlich, exportiert jedoch Daten in ein .CSV-Datei statt HTML., Verwenden Sie
Select-Object
, um anzugeben, welche Eigenschaften in die Ausgabe aufgenommen werden sollen.
In diesem Artikel von 4sysops finden Sie weitere Informationen zur effektiven Verwendung von ConvertTo-HTML (@adbertram).
6. Get-EventLog
Sie können PowerShell tatsächlich verwenden, um die Ereignisprotokolle Ihres Computers mithilfe des Cmdlets Get-EventLog zu analysieren. Es stehen mehrere Parameter zur Verfügung. Verwenden Sie den Schalter-Log gefolgt vom Namen der Protokolldatei, um ein bestimmtes Protokoll anzuzeigen., Mit dem folgenden Befehl können Sie beispielsweise das Anwendungsprotokoll anzeigen:
Get-EventLog -Log "Application"
Sehen Sie sich in diesem Beitrag einige weitere Beispiele für Get-EventLog in Aktion an (@nextofwindows). Weitere gebräuchliche Parameter sind (@SS64):
- -Verbose
- -Debug
- -ErrorAction
- -ErrorVariable
- -WarningAction
- -WarningVariable
- -outBuffer
- -OutVariable
Get-Process
Viel wie das Abrufen einer Liste verfügbarer Dienste ist es oft nützlich, eine schnelle Liste aller derzeit ausgeführten Prozesse abzurufen., Der Befehl Get-Process stellt diese Informationen zur Verfügung.
Bonus: Verwenden Sie Stop-Process, um Prozesse zu stoppen, die eingefroren sind oder nicht mehr reagieren. Wenn Sie nicht sicher sind, welcher Prozess Sie aufhält, verwenden Sie Get-Process, um den problematischen Prozess schnell zu identifizieren. Sobald Sie den Namen oder die Prozess-ID haben, beenden Sie sie mit Stop-Process.
Hier ist ein Beispiel., Führen Sie diesen Befehl aus, um alle aktuell ausgeführten Instanzen von Notepad (@MS_ITPro) zu beenden:
Stop-Process -processname notepad
Sie können auch Platzhalterzeichen verwenden, z. B. das folgende Beispiel, das alle Instanzen von Notepad sowie alle anderen Prozesse beendet, die mit note:
Stop-Process -processname note*
Weitere Informationen zum Beenden von Prozessen mit PowerShell (@howtogeek) finden Sie in diesem Beitrag:
8. Clear-History
Was ist, wenn Sie die Einträge aus Ihrem Befehlsverlauf löschen möchten? Verwenden Sie einfach das Clear – History-Cmdlet. Sie können damit auch nur bestimmte Befehle löschen., Der folgende Befehl würde beispielsweise Befehle löschen, die „Hilfe“ enthalten oder mit „Befehl“ enden (@MS_ITPro):
PS C:\> Clear-History -Command *help*, *command
Wenn Sie einer Sitzung Einträge hinzufügen möchten, verwenden Sie:
Add-History
In diesem Beitrag finden Sie einige nützliche Informationen zum Löschen des Verlaufs und zum Vorladen des Verlaufs mit einer Liste bestimmter Befehle (@MS_ITPro).,
Where-Object
Where-Object ist eine der wichtigsten cmdlets wissen, wie es ermöglicht Sie zu nehmen ein dataset übergeben und weiter unten Ihre pipeline für die Filterung (@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
Wenn Sie Ihre Arbeit in der Produktion sichern und Änderungen verhindern möchten, verwenden Sie Set-AuthenticodeSignature, um einem Skript oder einer Datei eine Authenticode-Signatur hinzuzufügen.
PowerShell-Befehle für Getting Things Done
Wenn es um Produktivität geht, kann PowerShell Ihnen helfen, Dinge mit den folgenden Befehlen zu erledigen.
11., ForEach-Object
Das Cmdlet ForEach-Object führt eine Operation für jedes Element in einer bestimmten Gruppe von Eingabeobjekten aus. Während viele Cmdlets ohnehin mit jedem Objekt in einer Sammlung arbeiten, benötigen Sie ForEach-Object für Situationen, in denen Sie andere Änderungen vornehmen oder bestimmte Formatierungen auf alle Objekte in einer Sammlung anwenden möchten.
Hier ist ein Beispiel (@MS_ITPro)., Wenn Sie eine Liste von Prozessnamen anzeigen und diese Namen in Cyan rendern möchten, können Sie Folgendes versuchen:
Get-Process | Write-Host $_.name -foregroundcolor cyan
Das Obige führt jedoch zu folgendem Fehler:
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.
Da das Write-Host-Cmdlet nicht versteht, was Sie mit den Daten tun möchten, die über die Pipeline gesendet werden.
Die Verwendung des foreach-Object-Cmdlets löst dieses Problem:
Get-Process | ForEach-Object {Write-Host $_.name -foregroundcolor cyan}
Weitere Informationen zu ForEach-Object und Arbeiten mit Schleifen finden Sie in diesem Tutorial (@tomsitpro).
12., Clear-Content
Wenn Sie den Inhalt eines Elements löschen, aber das Element selbst beibehalten möchten, verwenden Sie das Cmdlet Clear-Content:
Clear-Content C:\Temp\TestFile.txt
Mit diesem Befehl können Sie auch den Inhalt aller Dateien mit einer bestimmten Dateierweiterung löschen. Der folgende Code würde den Inhalt aller Dateien mit dem löschen .txt-Erweiterung, zum Beispiel:
Clear-Content -path * -filter *.TXT –force
Sie können auch Platzhalterzeichen verwenden. Außerdem können Sie den Inhalt jeder Art von Datei löschen, von .txt-Dateien zu .Dok, .xls und vieles mehr.
Schauen Sie sich diesen Beitrag für weitere Details.
13., Checkpoint-Computer
Wenn Sie größere Änderungen vornehmen oder ein riskantes Experiment durchführen, können Sie mit dem Cmdlet Checkpoint-Computer einen Wiederherstellungspunkt auf Ihrem Computer festlegen.
Beachten Sie, dass Sie mit diesem Cmdlet nur alle 24 Stunden einen Wiederherstellungspunkt erstellen können. Wenn Sie den Befehl erneut ausführen, wird der vorherige Wiederherstellungspunkt beibehalten:
Lesen Sie diesen Artikel von MCP Mag für mehr (@MCPmag).
Compare-Object
Es ist oft nützlich, zwei Objekte direkt vergleichen zu können., Sie können dies mit Compare-Object tun, das einen Bericht über die Unterschiede zwischen zwei Sätzen generiert, z. B. (@Marcam923):
15. ConvertFrom-StringData
Verwenden Sie ConvertFrom-StringData, um eine Zeichenfolge mit einem oder mehreren Wertepaaren in eine Hash-Tabelle zu konvertieren. Hier ist ein Beispiel dafür, wie der Befehl aussieht:
$settings = $TextData | ConvertFrom-StringData
Dieser Befehl ist in einer Vielzahl von Situationen nützlich, z. B. wenn Sie die Einstellungen für ein PowerShell-Skript speichern möchten, damit andere die Einstellungen bearbeiten können, ohne direkt im Skriptcode zu arbeiten.,
ConvertTo-SecureString
Konvertieren Sie eine verschlüsselte Standardzeichenfolge mit ConvertTo-SecureString in eine sichere Zeichenfolge oder Klartext in eine sichere Zeichenfolge. Dieses Cmdlet wird in Verbindung mit ConvertFrom-SecureString und Read-Host (@AdmArsenal) verwendet:
ConvertTo-XML
Verwenden Sie das ConvertTo-XML Cmdlet, um eine XML-basierte Darstellung eines Objekts zu erstellen. Dies wird auch als Serialisierung bezeichnet und ist ein nützlicher Prozess zum Speichern von Daten für die spätere Wiederverwendung. Beachten Sie, dass es wichtig ist, dass Ihr Ausdruck Objekte in die Pipeline schreibt., Alles, was Write-Host verwendet, schreibt nicht in die Pipeline und kann daher nicht serialisiert werden. Hier ist ein Beispiel für ConvertTo-XML in Aktion (@PetriFeed):
Get-Service wuauserv -ComputerName chi-dc04,chi-p50,chi-core01 |Export-Clixml -Path c:\work\wu.xml
Das spezifische Cmdlet, das im obigen Beispiel Export-Clixml verwendet wird, ist für die meisten Zwecke geeignet. Es konvertiert die Ausgabe eines PowerShell-Ausdrucks in XML und speichert ihn in einer Datei.
18. New-AppLockerPolicy
New-AppLockerPolicy erstellt eine neue AppLocker-Richtlinie aus einer Liste von Dateiinformationen und anderen Regelerstellungsoptionen., Insgesamt gibt es fünf Cmdlets, mit denen Sie mit AppLocker interagieren können, darunter (@RootUsers_):
- Get-AppLockerFileInformation: Ruft die erforderlichen Informationen zum Erstellen von AppLocker-Regeln aus einer Liste von Dateien oder dem Ereignisprotokoll ab.
- Get-AppLockerPolicy: Wird verwendet, um eine lokale, effektive oder eine Domain-AppLocker-Richtlinie abzurufen.
- New-AppLockerPolicy: Wie bereits erwähnt, wird dieses Cmdlet zum Erstellen neuer AppLocker-Richtlinien verwendet.
- Set-AppLockerPolicy: Legt die AppLocker-Richtlinie für ein bestimmtes Gruppenrichtlinienobjekt fest.,
- Test-AppLockerPolicy: Wird verwendet, um festzustellen, ob ein Benutzer oder eine Gruppe von Benutzern bestimmte Aktionen basierend auf der Richtlinie ausführen kann.
19. New-ItemProperty
New-ItemProperty-erstellt eine neue Eigenschaft für ein Element und setzt seinen Wert. Sie können damit beispielsweise Registrierungswerte und-daten (Eigenschaften eines Registrierungsschlüssels) erstellen und ändern.
Schauen Sie sich dieses Tutorial von mnaoumov.NET für einige nützliche Problemumgehungen mit diesem Cmdlet (@mnaoumov).
20. New-Object
Um eine Instanz eines Microsoft zu erstellen .,NET Framework oder Component Object Model (COM) Objekt, verwenden Sie das New-Object Cmdlet.
Hier ist ein Beispiel, das ein neues Objekt mit New-Object erstellt, in einer Variablen speichert und dann an Add-Member weiterleitet, wodurch Eigenschaften oder Methoden hinzugefügt werden, die in dem erstellten Objekt angegeben sind (@gngrninja):
21. New-WebServiceProxy
New-WebServiceProxy erstellt ein Webdienst-Proxy-Objekt, mit dem Sie den Webdienst in PowerShell verwenden und verwalten können., Dieses Cmdlet ist eine schöne Sache für Entwickler – es macht es unnötig, viel komplexen Code zu schreiben, um etwas in PowerShell zu erreichen, wenn Sie einfach einen anderen Dienst aufrufen können, der dies bereits ermöglicht.
Hier ist ein Beispiel:
Jetzt können Sie Folgendes ausführen, um eine Liste aller verfügbaren Methoden anzuzeigen:
$proxy | gm -memberType Method
22. New-WSManInstance
Ähnlich wie New-WebServiceProxy erstellt New-WSManInstance eine neue Instanz einer Verwaltungsressource.,
In diesem Tutorial finden Sie ein vollständiges schrittweises Beispiel, wie Sie die Informationen erhalten, die Sie zum erfolgreichen Ausführen dieses Skripts benötigen (@jonathanmedd).
23., New-WSManSessionOption
New-WSManSessionOption erstellt eine neue Hash-Tabelle für Verwaltungssitzungen, die als Eingabeparameter für andere WS-Management-Cmdlets verwendet wird, einschließlich:
- Get-WSManInstance
- Set-WSManInstance
- Invoke-WSManAction
- Connect-WSMan
Hier ist die Syntax (@SAPIENTech):
Select-Object
Das Select-Object-Cmdlet wählt die angegebenen Eigenschaften eines einzelnen Objekts oder einer Gruppe von Objekten aus. Darüber hinaus können eindeutige Objekte aus einem Array oder eine bestimmte Anzahl von Objekten am Anfang oder Ende eines Arrays ausgewählt werden.,
PS > Get-Process | Sort-Object name -Descending | Select-Object -Index 0,1,2,3,4
Dieses Tutorial enthält weitere Informationen zu den verschiedenen Möglichkeiten, wie Sie Select-Object (@infosectactico) verwenden können.
Es gibt andere Cmdlets mit ähnlichen Funktionen, einschließlich:
- Select-String: Findet Text in Zeichenfolgen oder Dateien.
- Select-XML: Findet Text in einer XML-Zeichenfolge oder einem XML-Dokument.
25. Set-Alias
Set-Alias ist ein großartiger Befehl zur Steigerung der Produktivität. Sie können damit einen Alias für ein Cmdlet oder ein anderes Befehlselement in der aktuellen Sitzung festlegen (ähnlich einer Tastenkombination), damit Sie schneller arbeiten können.,
Das folgende Beispiel setzt Notepad in der aktuellen Sitzung mit Set-Alias (@powershellatoms) auf np:
New-Alias np c:\windows\system32\notepad.exe
Beachten Sie, dass Sie Ihr PowerShell-Profil auch mit den am häufigsten verwendeten Aliasnamen (@howtogeek) anpassen können.
26. Set-StrictMode
Set-StrictMode erstellt und erzwingt Codierungsregeln in Skripten, Skriptblöcken und Ausdrücken. Es ist ein nützlicher Befehl, um die Codequalität zu erzwingen und zu verhindern, dass Sie nachlassen und schlampigen Code schreiben, wenn es 3:00 Uhr ist und Sie seit zwei Tagen keinen Schlaf mehr hatten (@adbertram).,
Um es zu verwenden, müssen zwei Parameter berücksichtigt werden:- Off und-Version, und-Version hat drei mögliche Werte:
- Version 1.0: Verhindert, dass Sie Variablen verwenden, die nicht initialisiert wurden (z. B. Option Explizit in VBScript)
- Version 2.0: Verhindert, dass Sie Variablen verwenden, die nicht initialisiert wurden, und verhindert auch den Aufruf nicht vorhandener Eigenschaften für Objekte, verhindert, dass Sie eine Funktion wie eine Methode aufrufen, und verbietet die Erstellung von Variablen ohne Namen.,
- Version Latest: Diese Option wählt die neueste verfügbare StrictMode-Version aus und verwendet sie. Dies ist eine gute Option, da die neueste StrictMode-Version unabhängig von der verwendeten PowerShell-Version verwendet wird.
Wait-Job
Wait-Job unterdrückt die Eingabeaufforderung, bis Hintergrundaufträge, die in der aktuellen Sitzung ausgeführt werden, abgeschlossen sind. Wait-Job zeigt jedoch nicht die Ausgabe von Jobs an, sondern kann in Verbindung mit Receive-Job verwendet werden. Multithreading ist in PowerShell dank-Jobs möglich.
Schreib-Fortschritt
Wer liebt keine Statusleiste?, Überwachen Sie Ihren Fortschritt mit Write-Progress, der einen Fortschrittsbalken in einem Windows PowerShell-Befehlsfenster anzeigt.
Hier ist ein Beispiel, das Ihnen einen vollständigen Fortschrittsbalken und Laufzeitzeichenfolgen (@credera) gibt:
Cmdlets zur Leistungsüberwachung, zum Testen und Debuggen
Es gibt auch eine Vielzahl von Cmdlets, die für Entwickler zur Fehlerbehebung, zum Testen, Debuggen und zur Überwachung nützlich sind. Hier sind einige, die Sie wissen müssen.
Debug-Prozess
Entwickler lieben Debuggen! Nun, wir mögen es noch mehr, wenn es keine Fehler zu beseitigen gibt, aber leider ist das nicht immer der Fall., Mit PowerShell können Sie einen Prozess mit dem Cmdlet Debug-Process debuggen.
Sie können Jobs auch mit Debug-Job (@MS_ITPro) debuggen. Sie können Haltepunkte festlegen oder das Cmdlet Wait-Debugger verwenden:
30. Disable-PSBreakpoint
Wenn Sie einmal Haltepunkte festgelegt haben, diese aber beseitigen möchten, verwenden Sie dazu einfach Disable-PSBreakpoint, wodurch Haltepunkte in der aktuellen Konsole deaktiviert werden. Hier ist die Syntax (@ActiveXperts):
Disable-PSBreakpoint Disable-PSBreakpoint
Wenn Sie Haltepunkte in der aktuellen Konsole aktivieren möchten, verwenden Sie alternativ Enable-PSBreakpoint.,
Get-Counter
Get-Counter ruft Echtzeit-Performance-Counter-Daten von der Performance Monitoring Instrumentation im Windows-Betriebssystem ab. Es wird verwendet, um Leistungsdaten von lokalen oder Remote-Computern in bestimmten von Ihnen angegebenen Abtastintervallen abzurufen.
In diesem Beispiel erhalten Sie einen Zählersatz mit einem Sample-Intervall für ein bestimmtes maximales Sample (@MS_ITPro):
PS C:\> Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Im folgenden Beispiel ruft dieser Befehl spezifische Zählerdaten von mehreren Computern ab:
32., Export-Counter
Export-Counter exportiert PerformanceCounterSampleSet-Objekte als Zählerprotokolldateien. Es stehen zwei Eigenschaften zur Verfügung:
- CounterSamples: Ruft die Daten für die Zähler ab und legt sie fest.
- Timestamp: Ruft das Datum und die Uhrzeit ab, zu der die Beispieldaten gesammelt wurden.,
Und mehrere Methoden, die alle von Object geerbt werden:
- Equals(Object)
- Finalize()
- GetHashCode()
- GetType()
- MemberwiseClone()
- toString()
Der folgende Befehl verwendet beispielsweise Get-Counter, um Prozessorzeitdaten zu sammeln und in a .die blg-Datei mit Export-Counter (@TechGenix):
Get-Counter "\Processor(*)\% Processor Time" | Export-Counter -Path C:\Temp\PerfData.blg
33. Test-Path
Mit Test-Path können Sie überprüfen, ob Elemente in einem angegebenen Pfad vorhanden sind., Wenn Sie beispielsweise planen, einen anderen Befehl für eine bestimmte Datei zu verwenden, müssen Sie möglicherweise überprüfen, ob die Datei vorhanden ist, um einen Fehler zu vermeiden.
Test-Path C:\Scripts\Archive
Wenn der Ordner existiert, gibt er True zurück; wenn nicht, gibt er False zurück.
Es kann auch mit den Pfaden arbeiten, die von anderen PowerShell-Anbietern verwendet werden. Wenn Sie beispielsweise wissen möchten, ob Ihr Computer über eine Umgebungsvariable namens username verfügt, können Sie Folgendes verwenden:
Test-Path Env:\username
Test-Path funktioniert mit Variablen, Zertifikaten, Aliasen und Funktionen., Schauen Sie sich diesen Beitrag von TechNet für weitere Details an (@MS_ITPro).
34. Get-WinEvent
Sehen Sie sich Windows-Ereignisprotokolle mit Get-WinEvent an. Verwenden Sie für eine Liste der verfügbaren Protokolle:
Get-WinEvent -ListLog *
Um dann die Details eines bestimmten Protokolls zu überprüfen, ersetzen Sie * durch den Namen (leiten Sie die Ausgabe an die Formatliste weiter, um alle Details anzuzeigen):
Get-WinEvent -ListLog $logname | fl *
Sie können auch alle Ereignisse in einem Protokoll anzeigen, indem Sie:
Get-WinEvent -LogName System
in diesem Tutorial für weitere Details (@rakheshster).,
Invoke-TroubleshootingPack
Troubleshooting Packs sind Sammlungen von PowerShell-Skripten und Assemblys, mit denen Sie häufig auftretende Systemprobleme beheben, diagnostizieren und beheben können (@ITNinjaSite). Finden Sie Fehlerbehebungspakete unter:
Sie können dieses Skript ausführen, um eine Liste aller auf dem aktuellen System verfügbaren Fehlerbehebungspakete abzurufen (@TechGenix):
Get-ChildItem C:\Windows\Diagnostic\System
Führen Sie dann in einem erhöhten PowerShell-Fenster ein Fehlerbehebungspaket mit diesem Befehl aus:
Invoke-TroubleshootingPack (Get-TroubleshootingPack C:\Windows\diagnostics\system\networking)
36., Measure-Command
Wenn Sie Operationen in PowerShell ausführen möchten, ist Measure-Command ein bekanntes Cmdlet. Es misst, wie lange ein Skript oder Scriptblock ausgeführt werden soll. Hier ist ein Beispiel (@ToddKlindt):
Measure-Command { Mount-SPContentDatabase –Name wss_content_portal –WebApplication http://portal.contoso.com }
Die Ausgabe ist ein TimeSpan-Objekt und enthält Eigenschaften wie Stunde, Minute, Sekunde usw., und es ist einfach, die Ausgabe an Ihre Vorlieben anzupassen.
Measure-Object
Möglicherweise möchten Sie auch wissen, wie groß ein bestimmtes Objekt ist., Verwenden Sie Measure-Object, um die numerischen Eigenschaften eines Objekts zu berechnen, einschließlich Zeichen, Wörter und Zeilen in einem String-Objekt, z. B. Textdateien.,
Geben Sie einfach den Namen und die Art der durchzuführenden Messung an, zusammen mit Parametern wie (@WindowsITPro):
- -Summe: fügt Werte hinzu
- -Durchschnitt: berechnet den Durchschnittswert
- -Minimum: findet den Minimalwert
- -Maximum: findet den Maximalwert
Der folgende Befehl summiert die VirtualMemorySize-Eigenschaftswerte für alle Prozessobjekte:
Get-Process | measure VirtualMemorySize -Sum
New-Event
New-Event wird verwendet, um ein neues Ereignis zu erstellen., Ein verwandtes Cmdlet ist New-EventLog, das ein neues Ereignisprotokoll sowie eine neue Ereignisquelle auf einem lokalen oder Remote-Computer erstellt. Wenn Sie über eine von PowerShell unterstützte Automatisierungs-Engine verfügen, sollten Sie ein Ereignisprotokoll einrichten (indem Sie einen benutzerdefinierten Ereignisprotokolltyp erstellen), das alle von PowerShell gesendeten Nachrichten protokolliert. Dies ist ein Beispiel, in dem Sie benutzerdefinierte Protokollierung in der Ereignisanzeige implementieren können.,
Erstellen Sie zunächst einen neuen Ereignisprotokollprotokollnamen (@BundaloVladimir):
New-EventLog -LogName Troubleshooting_Log -Source FalloutApp
Um dann Nachrichten an Ihr neues Ereignisprotokoll zu senden, führen Sie Folgendes mit dem Cmdlet Write-Log aus:
Write-EventLog -log Troubleshooting_Log -source FalloutApp -EntryType Information -eventID 10 -Message "FalloutApp has been successfully installed"
Receive-Job
Wenn Sie die Ergebnisse von Windows PowerShell-Hintergrundjobs in der aktuellen Sitzung abrufen müssen, verwenden Sie Receive-Job. Dies wird normalerweise nach der Verwendung von Start-Job verwendet, um einen Job zu beginnen, wenn Sie die spezifischen Ergebnisse anzeigen müssen.,
Receive-Job -Name HighMemProcess
Lesen Sie dieses hilfreiche Tutorial zur Verwendung von Receive-Job und was zu tun ist, wenn scheinbar keine Ergebnisse vorliegen (@proxb).
40. Register-EngineEvent
Dieses Cmdlet wird verwendet, um die von der Windows PowerShell Engine und dem New-Event Cmdlet generierten Ereignisse zu abonnieren. Der folgende Befehl abonniert beispielsweise ein Ereignis beim Beenden der aktuellen PowerShell-Sitzung und speichert Informationen (z. B. Datum und Uhrzeit) in einer Protokolldatei (@jonathanmedd):
Register-EngineEvent PowerShell.Exiting-Action {"PowerShell exited at " + (Get-Date) | Out-File c:\log.txt -Append}
41., Register-ObjectEvent
Register-ObjectEvent ähnelt Register-EngineEvent, aber anstatt Ereignisse zu abonnieren, die von der PowerShell-Engine und New-Event generiert werden, abonniert es die Ereignisse, die von einem Microsoft.NET Framework-Objekt generiert werden.
Hier ist ein Beispiel (@NetworkWorld):
Es gibt andere Register – Cmdlets, die Sie nützlich finden können, einschließlich:
- Register-PSSessionConfiguration: Erstellt und registriert eine neue Sitzungskonfiguration.
- Register-WmiEvent: Dieses cmdlet abonniert, ein WMI-Ereignis.
42., Remove-Event
Wenn Sie ein Ereignis entfernen möchten, verwenden Sie das Cmdlet Remove-Event. Wenn Sie ein gesamtes Ereignisprotokoll entfernen müssen, verwenden Sie Remove-EventLog, das ein Ereignisprotokoll löscht oder die Registrierung einer Ereignisquelle auflöst.
Alternativ kündigt Unregister-Event ein Ereignisabonnement, löscht aber kein Ereignis aus der Ereigniswarteschlange (@SS64).
43. Set-PSDebug
Dieses Cmdlet schaltet Skript-Debugging-Funktionen ein und aus. Es setzt auch die Trace-Ebene und schaltet StrictMode.,
Durch die Verwendung von Set-PSDebug oben in Ihrer Skriptdatei direkt nach der param () – Anweisung (falls vorhanden) können Sie Fehler mit Skripten verhindern, zu denen PowerShell zu Zwecken der Fehlerbehebung keine ausreichenden Informationen liefert. Hier ist ein Beispiel (@r_keith_hill):
44. Start-Sleep
Wenn Sie die Aktivität in einem Skript oder einer Sitzung unterbrechen müssen, verwenden Sie Start-Sleep, wodurch die Aktivität für einen bestimmten Zeitraum angehalten wird.
Start-Sleep -Seconds xxxStart-Sleep -Milliseconds xxx
Wenn Sie einen oder mehrere laufende Dienste anhalten müssen, verwenden Sie Suspend-Service.
45., Tee-Object
Wenn Sie die Leistung oder Codequalität analysieren, ist es nützlich, die Ausgabe eines Befehls anzeigen zu können. Tee-Object speichert die Befehlsausgabe in einer Datei oder Variablen und zeigt sie auch in der Konsole an, wenn es sich um die letzte Variable in der Pipeline handelt. Wenn es nicht die letzte Variable in der Pipeline ist, sendet Tee-Object sie in die Pipeline.
Hier ist die syntax:
46. Test-AppLockerPolicy
Test-AppLockerPolicy wertet aus, ob Eingabedateien für einen bestimmten Benutzer basierend auf der angegebenen AppLocker-Richtlinie ausgeführt werden dürfen.,
Test-AppLockerPolicy -Path Test-AppLockerPolicy -Path
Dieses tutorial bietet mehr details zu den verfügbaren Parametern und Beispiele für Test-AppLockerPolicy in Aktion (@powershellhelp).
Test-ComputerSecureChannel
Dieses Cmdlet testet und repariert die Verbindung zwischen einem lokalen Computer und seiner Domäne. Ohne diesen Befehl bestand die übliche Lösung zuvor darin, einen Computer aus seiner Domäne zu entfernen und ihn dann erneut zu verbinden, um die Beziehung wiederherzustellen. Test-ComputerSecureChannel ermöglicht es, die Verbindung in kürzerer Zeit wiederherzustellen (@WindowsITPro).,
Wenn Sie sich als lokaler Administrator angemeldet haben, führen Sie einfach Folgendes aus:
Test-ComputerSecureChannel –credential WINDOWSITPRO\Administrator –Repair
Sie können die Testverbindung verwenden, um Internet Control Message Protocol (ICMP) – Echo-Anforderungspakete (pings) an einen oder mehrere Computer zu senden.
Test-Path
Verwenden Sie Test-Path, um festzustellen, ob alle Elemente eines Pfades vorhanden sind. Im Wesentlichen hilft es Ihnen, Fehler zu behandeln, bevor sie auftreten. In seiner einfachsten Form gibt es True oder False (@MCPmag) zurück:
PS C:\> test-path c:\TruePS C:\> test-path z:\fooFalse
49. Trace-Command
Trace-Command konfiguriert und startet den Trace eines bestimmten Befehls oder Ausdrucks., Um es zu verwenden, müssen Sie auch Get-TraceSource verwenden, um nach bestimmten Namen mit Platzhalterzeichen zu suchen:
PS> Get-TraceSource -Name *param*
Sie können die Ausgabe filtern, um die Beschreibung mit dem gewünschten Muster abzugleichen. Sobald Sie den möglichen Tracenamen identifiziert haben, verwenden Sie Trace-Command, um die Antworten zu erhalten, die Sie benötigen. Hier ist ein Beispiel:
In diesem Beitrag finden Sie weitere Informationen zum Spielen von Detective mit Trace-Command (@PowerShellMag).
50. Write-Debug
Write-Debug schreibt eine debug-Nachricht an die Konsole., Wenn Sie dies in eine Funktion oder ein Skript schreiben, wird standardmäßig nichts ausgeführt; Die Nachrichten warten im Wesentlichen, bis Sie entweder Ihre $DebugPreference ändern oder den Schalter-debug aktivieren, wenn Sie eine Funktion oder ein Skript aufrufen. Wenn $DebugPreference auf ‚inquire‘ gesetzt ist oder der Schalter-debug aktiviert ist, erstellt die Nachricht einen Haltepunkt, sodass Sie problemlos in den Debug-Modus wechseln können.
Nehmen Sie dieses Beispiel (@RJasonMorgan):
Das obige Beispiel erzeugt Folgendes, wenn es mit-debug ausgeführt wird:
Schreibe einen Kommentar