Daten in PowerShell ausgeben. Interessante Beispiele in PowerShell

Es gibt Dinge, die wir als Administratoren jeden Tag tun. Windows-Netzwerk, aber wenn wir im Gegensatz zu Linux-Administratoren aufgefordert würden, sie über die Befehlszeile auszuführen, wäre das für uns Windows-Administratoren ziemlich problematisch. Windows war schon immer schwach, wenn es um Befehlszeilentools geht. Meiner Meinung nach hat sich seitdem alles verändert das Aufkommen von Windows Power Shell. Mit Powershell (oder mit anderen Worten PS) können Sie so viele verschiedene Funktionen ausführen, die wir vorher nicht ausführen konnten. In diesem Artikel konzentrieren wir uns darauf, wie Powershell uns dabei helfen kann, einige gängige Netzwerkfunktionen über die Befehlszeile auszuführen. Lesen Sie weiter, um mehr zu erfahren!

Was ist Powershell?

Powershell ist installierbar Funktion Windows Server 2008: Um Powershell zu installieren, müssen Sie die Powershell-Funktion mithilfe des Assistenten zum Hinzufügen von Funktionen installieren. Der Installationsvorgang dauert etwa eine Minute und sobald die Komponente installiert ist, haben Sie Zugriff auf eine erstaunliche Befehlszeilen-Skriptsprache. Im Gegensatz zu anderen Skriptsprachen unter Windows ist Powershell ausschließlich für Systemadministratoren konzipiert. Powershell verwendet .NET und Befehle („Cmdlets“ oder „Command-lets“) für den Betrieb. Als PS-Benutzer können Sie Befehle einzeln verwenden oder sie miteinander verketten, um komplexere Aufgaben auszuführen.

Sobald Sie PS installiert haben, können Sie es ausführen Start -> Alle Programme -> Windows Powershell 1.0, und drücke Windows PowerShell. An dieser Stelle sollte ein blaues CLI-Fenster angezeigt werden, das wie in Abbildung 1 aussieht.

Bild 1: Windows-Fenster Powershell-Befehl

Dass Sie in Powershell arbeiten, erkennen Sie immer daran, dass das „PS“-Fenster immer folgende Zeile am Anfang hat:

PS C:\Benutzer\Administratoren

Jetzt ist Powershell installiert und Das Fenster ist offen, lassen Sie mich Ihnen einige allgemeine Netzwerkaufgaben zeigen, die in PS erledigt werden können.

Listen Sie die IP-Adressen Ihres Servers auf

Um eine Liste der IP-Adressen auf Ihrem Computer zu erhalten Windows Server 2008 Server müssen Sie den folgenden Befehl verwenden:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object -Property IPAddress

So sehen die Daten aus, nachdem ich diesen Befehl auf meinem Windows 2008 Server verwendet habe:


Abbildung 2: Auflisten von IP-Adressen mit Windows PowerShell

Wie Sie auf dem Bild sehen können, zeigen uns die Quelldaten, dass ich auf diesem Windows 2008-Server einen Adapter mit einer IP V4-Adresse und einer IP V6-Adresse habe. An sich ist das nichts Überraschendes, aber denken Sie darüber nach, was Sie mit anderen Skriptfunktionen damit machen können.

Wie uns das Powershell-Benutzerhandbuch zeigt, handelt es sich bei den resultierenden Daten um ein Array, und Sie können die IP-Adresse nur sehen, indem Sie diese Daten an das „Select-Object“ senden (nach der Deaktivierung von IPV6), etwa so:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object -ExpandProperty IPAddress


Abbildung 3: IP-Adressliste NUR mit Windows Powershell

Abrufen einer Liste der Netzwerkadapterkonfigurationen mit Powershell

Um die Grundkonfiguration Ihres Netzwerkadapters anzuzeigen, können Sie den folgenden Befehl verwenden:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE "ComputerName .

Obwohl dieser Artikel der Untersuchung der Verwendung von PS gewidmet ist Windows Server 2008 kann dieses Dienstprogramm auch unter Windows XP, Vista oder Server 2003 verwendet werden. Hier ist ein Beispiel für die Ausgabe des Befehls, der auf meinem ausgeführt wird Arbeitsplatz Windows XP:


Abbildung 4: PowerShell zeigt die Netzwerkadapterkonfiguration unter Windows XP

Führen Sie eine Testabfrage Ihres Computers mit PowerShell durch

Obwohl die PS-Eingabeaufforderung weiterhin alle normalen Windows-Befehle ausführen kann (z. B. Testabfragen), starker Punkt Das Besondere an Powershell ist, dass Sie die empfangenen Daten problemlos ändern können.

Hier ist ein Beispiel, wie dies getan werden kann, das im Handbuch bereitgestellt wird Windows-Benutzer Power Shell. In diesem Beispiel werden die Ergebnisse von Win32_PingStatus mithilfe von Select-Object analysiert. In diesem Fall zeigen die Daten lediglich die Antwortzeit und den Statuscode an.

Hier ist der Befehl, der verwendet wurde:

Get-WmiObject -Class Win32_PingStatus -Filter "Address="127.0.0.1"" - ComputerName . | Select-Object -Property Address,ResponseTime,StatusCode

Und hier sind die Ergebnisse der Verwendung des Befehls auf meinem Windows-Computer:

Abbildung 5: PowerShell-Daten zeigen den Umfragestatus, analysiert mit Select-Object

Geben Sie einen Ordner mit Windows Powershell frei

Ich werde ehrlich zu dir sein. Die Verwendung von Powershell-Befehlen ist nicht immer so einfach wie die Verwendung vorhandener Windows-Befehle, mit denen Sie bereits vertraut sind. Hier ist ein Beispiel.

Der folgende PS-Befehl wird bereitgestellt allgemeiner Zugang in den Ordner in C:\temp als „davidtemp“ und führen Sie den hervorragenden Befehl darauf aus:

(Get-WmiObject -List -ComputerName . | Where-Object -FilterScript ($_.Name -eq "Win32_Share")).InvokeMethod("Create",("C:\temp","davidtemp",0.25, "David's Temp-Ordner"))

Andererseits könnten Sie einfach den bereits bewährten Befehl verwenden Nettoanteil:

Nettofreigabe davidtemp=C:\temp /remark:"Davids temporärer freigegebener Ordner"


Abbildung 6: PowerShell-Daten und herkömmlicher Net-Share-Befehl

Beachten Sie, dass der Powershell-Befehl nicht nur nicht funktionierte, sondern auch einen schrecklichen Fehler verursachte. Ich habe diesen Befehl unter Windows XP und Vista ausprobiert und war der Systemadministrator.

Andererseits das Team Nettoanteil Sehr einfach und hat beim ersten Versuch funktioniert. Und während ich versuche, Sie durch die Grundlagen von Powershell zu führen, vergessen Sie nicht, dass Powershell herkömmliche Windows-Netzwerkbefehle verwenden kann, die in vielen Fällen viel einfacher zu verwenden sind. Möglicherweise befinden Sie sich jedoch in einer Situation, in der diese herkömmlichen Befehle nicht alles tun, was Sie benötigen, und hier kommt Powershell ins Spiel, um zu helfen.

Andere Netzwerk- und komplexere Befehle

Wenn Sie in Powershell nur die grundlegendsten Netzwerkadministratorbefehle verwenden, werden Sie wahrscheinlich verwirrt sein und sie nicht mehr verwenden, da es wie bei jeder anderen Skriptsprache eine Lernkurve gibt.

Sobald Sie jedoch die Lernkurve überwunden und den Umgang mit der Sprache erlernt haben, verfügen Sie über ein Tool, das sehr effizient ist und Ihnen Zeit sparen kann.

Wie Sie vielleicht anhand der vorherigen Beispiele bemerkt haben, ist einer der Parameter für die meisten Powershell-Befehle „Computername“. Wenn wir anstelle des Computernamens einen Punkt (".") eingeben, wird dies der Fall sein localhost(unser Computer). Wir können jedoch auch eine beliebige IP-Adresse oder einen beliebigen Namen ersetzen Windows-Computer in der Domäne, was uns die Möglichkeit gibt, diese Befehle nicht nur auf unserem PC zu verwenden, sondern auch leistungsstarke Skripte in Powershell zu erstellen, die auf allen Computern im Netzwerk verwendet werden können.

Hier ist beispielsweise ein Befehl, der die IP-Adresse eines Dell-Computers über das LAN überträgt:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE – Computername DELL9400

Hier sind die Ergebnisse dieses Befehls:


Abbildung 7: Powershell-Ergebnisse beim Abrufen einer IP-Adresse von einem Remote-PC

Und hier ist ein größeres Bild mit den notwendigen Informationen:


Abbildung 8: Vergrößern des Powershell-Ergebnisfensters zum Abrufen der IP-Adresse eines Remote-PCs

Die Fähigkeit, mit Remote-Computern zu arbeiten, ist also die Hauptfunktion von Powershell, aber eine weitere leistungsstarke Funktion ist die Möglichkeit, Daten zu filtern und Daten zu kombinieren, die durch die Verwendung verschiedener Befehle gewonnen wurden.

Schauen Sie sich das folgende Beispiel an:

„127.0.0.1“, „localhost“, „research.microsoft.com“ | ForEach-Object -Process (Get- WmiObject -Class Win32_PingStatus -Filter ("Address="" + $_ + """) -ComputerName .) | Select-Object -Property Address,ResponseTime,StatusCode

In diesem Beispiel wurde eine Liste von IP-Adressen und Domänennamen erhalten. Diese Liste wurde an „ForEach-Object“ übergeben. Für jedes dieser „Objekte“ (IP-Adresse / Domain Namen) wurde das PingStatus-Element „Get-WmiObject“ verwendet. Die Testumfragedaten jedes Domainnamens wurden dann durch ein „Select-Object“ geleitet, was dazu führte, dass nur die Adressen, Antwortzeiten und Statuscodes angezeigt wurden.

Abbildung 9: Testabfrage mithilfe einer Liste beim Kombinieren und Abfragen von Daten

Meiner Meinung nach demonstriert dieses Beispiel einige der Fähigkeiten von Powershell. Wie Sie sehen, können Sie Ein- und Ausgaben in verschiedene Richtungen weiterleiten und umleiten, um Ihre Verwaltungsziele zu erreichen.

Was müssen Sie sonst noch wissen?

Abschluss

Windows Powershell ist sehr leistungsstarkes Dienstprogramm. Es ist unmöglich, in diesem Artikel alles zu beschreiben, was Sie damit machen können mit Powershell, aber ich hoffe, dass ich Ihnen einen allgemeinen Überblick über die Fähigkeiten dieses Dienstprogramms geben und Sie zu weiteren Forschungen in diesem Bereich inspirieren konnte. Täglich gibt es im Internet neue Bücher, Kurse und viel Material zu Powershell-Funktionen, die von Windows-Systemadministratoren genutzt werden können. Angesichts einer so starken Bindung unter Windows-Administratoren an grafische Oberfläche, wird es einige Zeit dauern, bis Powershell von den Unternehmen übernommen wird, die keinen dringenden Bedarf an dem Tool haben. Ich bin sicher, dass Administratoren Powershell verwenden werden, um kürzere Skripte zu erstellen, die komplexere Aufgaben ausführen können. Ich hoffe, dass Powershell weltweit immer beliebter wird!

Besonderer Dank geht an Microsoft für die Bereitstellung von Beispielbefehlen in der Dokumentation zum Windows Powershell-Benutzerhandbuch.

Wahrscheinlich hat jeder von PowerShell gehört, aber wahrscheinlich hatte nicht jeder die Gelegenheit, damit zu arbeiten. Für diejenigen, die gerade erst anfangen, sich in die Wildnis von PowerShell einzuarbeiten, stellen wir eine Übersetzung eines auf dem Portal 4sysops.com veröffentlichten Beitrags zur Verfügung. Es geht um 7 Befehle, die denjenigen helfen, die gerade erst anfangen, mit PowerShell zu arbeiten. Für Details – willkommen bei cat.

HILFE BEKOMMEN

Das allererste und wichtigste PowerShell-Cmdlet ist der Hilfeaufruf. Mit dem Cmdlet „Get-Help“ können Sie die Syntax überprüfen, Anwendungsbeispiele ansehen und eine detaillierte Beschreibung der Parameter jedes PowerShell-Cmdlets anzeigen. Das Tolle an diesem Cmdlet ist, dass Sie einfach „Get-Help Services“ eingeben können, um eine Liste aller Cmdlets zu erhalten, die mit Diensten funktionieren.
Beispiel:
PS C:\>Get-Help Service

Sie können ein beliebiges Cmdlet aus der von der obigen Abfrage bereitgestellten Liste auswählen, um Hilfe dazu zu erhalten. Zum Beispiel,
PS C:\> Get-Help -Name Get-Service
Sie erhalten alle Informationen zum Get-Service-Cmdlet (siehe unten).


GET-CONTENT

Das Lesen des Inhalts von Dateien ist die häufigste Voraussetzung für Anfänger, die PowerShell erlernen möchten. Das Lesen von Dateien mit PowerShell wird vereinfacht. Selbst ein Laie kann den Inhalt einer Datei lesen, indem er ihn einfach an das Cmdlet Get-Content übergibt.
Beispiel.
PS C:\> Get-Content C:\scripts\Computers.txt mytestpc1 techibee.com dummynotresolvinghost.com PS C:\>

Benötigen Sie weitere Informationen zum Cmdlet? Verwenden Sie Get-Help:
PS C:\> Get-Help Get-Content -Detailed

GET-SERVICE

Dieses Cmdlet listet alle auf dem Computer installierten Dienste auf. Sie können damit Informationen über einen bestimmten Dienst, eine Sammlung von Diensten oder einfach alle Dienste auf Ihrem Computer abrufen.
Beispiel:
PS C:\> Get-Service wwansvc, Spooler-Statusname DisplayName ------ ---- ----------- Running spooler Print Spooler Stopped wwansvc WWAN AutoConfig PS C:\>



Hier haben wir um Informationen zu den beiden Diensten wwansvc und spooler gebeten
Es wird eine Tabelle mit dem Dienststatus, seinem Namen und seinem Anzeigenamen angezeigt.
Wir können sehen, dass der Spooler-Dienst ausgeführt wird und wwansvc gestoppt ist

STOP-SERVICE UND START-SERVICE

Das Starten und Stoppen von Diensten ist ein ziemlich wichtiger Punkt in der Arbeit. Windows-Administrator. PowerShell verfügt über integrierte Cmdlets, die die Arbeit des Administrators erleichtern, ohne dass Sie eine MMC-Konsole öffnen müssen. Mit diesen Cmdlets können Sie Dienste sowohl auf lokalen als auch auf Remotecomputern stoppen/starten.
Beispiele:
Einen Dienst auf dem lokalen Computer starten/stoppen (am Beispiel des Spooler-Dienstes):
PS C:\> Stop-Service -Name Spooler PS C:\> Start-Service -Name Spooler

Starten/stoppen Sie den Dienst entfernter Computer(Spooler):
PS C:\> $ServiceObj = Get-Service -ComputerName MyPC1 -Name Spooler PS C:\> Stop-Service -InputObj $ServiceObj PS C:\> Start-Service -InputObj $ServiceObj

GET-PROZESS

Mit diesem Cmdlet können Sie erkennen, welche Prozesse auf lokalen oder Remotecomputern ausgeführt werden. Der Prozessname und die ID werden angezeigt, außerdem der Pfad zur ausführbaren Datei, Firmenname und Version ausführbare Datei und Speicher, der vom Prozess verwendet wird.
Beispiele:
Informationen zu Prozessen abrufen, die auf dem lokalen Computer ausgeführt werden:

PS C:\>Get-Process


Geben Sie zum Abrufen das folgende Cmdlet ein genaue InformationÖ Laufende Prozesse
PS C:\> Get-Process | Format-Liste * -Force

Abrufen von Informationen über Prozesse, die auf einem Remotecomputer ausgeführt werden:
PS C:\> Get-Process -ComputerName MYPC1 | Format-Liste * -Force

MYPC1 muss durch den Namen des Computers ersetzt werden, von dem Sie Informationen über laufende Prozesse erhalten möchten.

STOP-PROZESS

Dieses Cmdlet stoppt einen Prozess auf einem lokalen oder Remotecomputer. Es nimmt den Namen oder die ID des Prozesses und beendet diesen Prozess. Dies ist in Fällen nützlich, in denen die Anwendung nicht reagiert.
Beispiel:
Stoppen Sie den Prozess mit der ID 22608 auf dem lokalen Computer:
PS C:\> Stop-Process -Id 22608
Stoppen Sie alle Excel-Prozesse auf dem lokalen Computer:
PS C:\> Stop-Process -name excel

Beratung Hinweis: Obwohl das Cmdlet „Stop-Process“ nicht über den Parameter „-ComputerName“ verfügt, können Sie ihn dennoch verwenden, um Remoteprozesse zu beenden, indem Sie den folgenden Tipp befolgen:
PS C:\> $Obj = Get-Process -Name excel -ComputerName MYPC1 PS C:\> Stop-Process -InputObject $Obj

Aktualisierung:
Der Beitrag enthält eine Übersetzung eines Artikels aus dem Portal

Unser Test konzentriert sich auf die Verwendung wichtiger Funktionen von Windows PowerShell zur Ausführung verschiedener Verwaltungsaufgaben. Schauen wir uns zunächst die integrierten Tools an, um sich mit den Funktionen von Windows PowerShell vertraut zu machen.

Einführung in die Windows PowerShell-Funktionen

Sie sind also ein Administrator, der Windows PowerShell so schnell wie möglich beherrschen muss. Das Erste, was Sie wahrscheinlich tun werden (neben der Konsultation der Dokumentation und Hilfesystem), - Verwenden Sie den Hilfebefehl (Abb. 1).

Durch sorgfältiges Studium der auf dem Bildschirm angezeigten Informationen werden wir die folgenden konzeptionellen Dinge verstehen: In Windows PowerShell gibt es Aliase, Cmdlets, Anbieter und auch Hilfedateien. Aliase werden verwendet, um die Befehlseingabe zu vereinfachen (z. B. clc– Dies ist der Befehlsalias Klarer Inhalt), Cmdlets sind die Implementierung aller in Windows PowerShell integrierten Befehle, Anbieter bieten Zugriff auf das Dateisystem, die Registrierung, den Zertifikatspeicher usw. und zum Abrufen werden Hilfedateien verwendet Weitere Informationen. Zum Erhalten detaillierte Beschreibung Der Befehl verwendet die folgende Syntax:

PS C:> Hilfe Get-Command

Als Ergebnis der Ausführung dieses Befehls erhalten wir Gesamte Beschreibung Mannschaften Get-Befehl, einschließlich Zweck, Syntax, Optionen usw. (Abb. 2).


Um eine Liste aller integrierten Befehle zu erhalten, verwenden Sie die folgende Syntax:

PS C:>Get-Befehl

Bitte beachten Sie, dass alle Befehle aus einem Verb und einem Adjektiv bestehen (z. B. Get-Content, Export-Konsole) und die Unterstützung aller Teams einheitliches System Benennung – um beispielsweise etwas zu vervollständigen, wird immer das Verb Stop verwendet und nicht Kill, Terminate, Halt oder andere Synonyme, was das Studium der PowerShell-Funktionen erheblich vereinfacht (Abb. 3).


Team Get-Service dient dazu, eine Liste aller laufenden Dienste zu erhalten dieser Computer. Zum Beispiel,

PS C:>Get-Service

gibt die in Abb. gezeigte Liste zurück. 4.


Um eine Liste der derzeit auf dem Computer ausgeführten Prozesse abzurufen, verwenden Sie den Befehl Get-Prozess(Abb. 5):


PS C:>Get-Process

Windows PowerShell unterstützt die automatische Eingabevervollständigung. Um dies zu überprüfen, geben Sie ein Get-P und drücken Sie die TAB-Taste: Sie erhalten die Option, alle Befehle auszuwählen, die mit den von Ihnen eingegebenen Zeichen beginnen.

Um Informationen über nur einen Prozess als Befehlsargument zu erhalten Get-Prozess Der Name dieses Prozesses ist festgelegt (Abb. 6):

PS C:>Get-Process-Explorer

Um eine Liste aller Prozesse zu erhalten, deren Namen mit einem bestimmten Zeichen beginnen, geben Sie einfach dieses Zeichen und „*“ an (Abb. 7):


PS C:>Get-Process i*

Achten Sie auf die Spalten, die Informationen enthalten – Handles, NMP(K) usw. Standardmäßig werden die Informationen als Tabelle angezeigt, aber in Wirklichkeit geben alle Befehle Objekte zurück. Diese Objekte können mithilfe des Symbols „|“ als Eingabe an andere Befehle übergeben werden. (Abb. 8):


PS C:> Get-Process i* | Formatliste

Die Liste der Prozesse ist nun in einer anderen Ansicht verfügbar. Um detaillierte Informationen zu verschiedenen Formaten zu erhalten, können Sie den folgenden Befehl verwenden:

PS C:> Hilfeformat *

Weitere mögliche Formate:

PS C:> Get-Process i* | formatweit

PS C:> Get-Process i* | format-benutzerdefiniert

Da es sich bei der Ausgabe immer um ein Objekt handelt, können Sie sie manipulieren, um zusätzliche Vorgänge wie Filterung auszuführen:

PS C:>Get-Process | wobei ($_.handlecount -gt 400)

oder sortieren:

PS C:>Get-Process | where ($_.handlecount -gt 400) | Sortierobjekt-Handles

Es kann sich eine völlig berechtigte Frage stellen: Woher wissen wir, dass das Objekt, das den Prozess beschreibt, die Eigenschaft besitzt? Handlecount? Um eine Liste aller Eigenschaften eines Objekts zu erhalten, verwenden Sie den folgenden Befehl (Abb. 9):


PS C:>Get-Process | Get-Mitglied

Lassen Sie uns den Befehl ausführen Get-Prozess | Get-Member-Unternehmen- Mit der Standardformatierung ist es nicht möglich, die gewünschten Daten zu erhalten. Lassen Sie uns den resultierenden Befehl in Folgendes umwandeln:

PS C:>Get-Process | Get-Member-Unternehmen | Format-Liste

Das Ergebnis seiner Transformation ist in Abb. dargestellt. 10.


PS C:>Get-Process | sort-objectCompany | format-table -Gruppe Firmenname, Beschreibung, Handles

Das Ergebnis der Ausführung dieses Befehls ist in Abb. dargestellt. elf.


Team Stop-Prozess ermöglicht es Ihnen, einen laufenden Prozess zu stoppen, zum Beispiel:

PS C:> Get-Process-Notizblock | Stop-Prozess

Diese Option ist nicht immer sicher, daher ist es besser, ähnliche Befehle mit der Option zu verwenden was ist, wenn, die zeigt, was passiert, wenn ein bestimmter Befehl ausgeführt wird, der Befehl jedoch nicht tatsächlich ausgeführt wird:

PS C:> Get-Process-Notizblock | Stop-Prozess –Was wäre wenn

Sie können auch angeben, dass vor der Ausführung eines Befehls eine Bestätigung erforderlich ist:

PS C:> Get-Process-Notizblock | Stoppvorgang – bestätigen

Das Ergebnis der Ausführung des Befehls mit Bestätigung ist in Abb. dargestellt. 12.


Im letzten Beispiel erhalten wir eine Beschreibung der Aktionen, die der Befehl ausführt, und können wählen, ob die Ausführung bestätigt werden soll oder nicht.

Darüber hinaus können Sie Ihre eigenen Batchdateien erstellen, bei denen es sich um *.ps1-Dateien handelt, die PowerShell-Befehle enthalten, und diese ausführen. Um die Sicherheit zu gewährleisten, müssen Batchdateien signiert werden. Beim Testen können Sie die Anforderung, nur signierte Dateien auszuführen, deaktivieren:

PS C:>Set-ExecutionPolicy Unrestricted

Vergessen Sie jedoch nicht, diese Option nach Abschluss des Tests mit dem folgenden Befehl erneut zu aktivieren:

PS C:>Set-ExecutionPolicy AllSigned

Nach dem Treffen Windows-Grundlagen Sehen wir uns an, wie Sie mit PowerShell verschiedene Verwaltungsaufgaben mit diesem Dienstprogramm lösen können.

Arbeiten mit dem Dateisystem

Eine der Aufgaben, mit denen viele IT-Experten häufig konfrontiert sind, betrifft die Dateimanipulation, beispielsweise das Kopieren, Verschieben, Umbenennen und Löschen von Dateien und Verzeichnissen. In Abb. Abbildung 13 zeigt die grundlegenden Windows PowerShell-Befehle zur Manipulation Dateisystem: Neuer Gegenstand, Kopierelement, Bewegungselement, Element umbenennen Und Gegenstand entfernen.


Im Gegensatz zu anderen Shells, die sowohl über einen Befehlssatz für Dateien (z. B. Löschen oder Umbenennen) als auch über einen Befehlssatz für Verzeichnisse (z. B. rd oder md) verfügen, verwendet Windows PowerShell einen einzigen Befehlssatz, um sowohl Dateien als auch Kataloge zu bearbeiten.

Der erste Befehl in unserem Beispiel lautet new-item TextFiles –itemtype-Verzeichnis– wird verwendet, um ein neues TextFiles-Unterverzeichnis im aktuellen Verzeichnis zu erstellen. Wenn Sie den Parameter weglassen -Gegenstandsart, dann fragt Windows PowerShell, ob wir eine Datei oder ein Verzeichnis erstellen. Beachten Sie, dass das Team Neuer Gegenstand Es gibt einen Alias ​​- ni. In abgekürzter Form sieht unser erster Befehl so aus:

PS C:>ni TextFiles –itemtype-Verzeichnis

Dann verwenden wir den Befehl Kopierelement(Aliase - cpi, cp, kopieren), um alle Dateien mit der Erweiterung *.txt in das Unterverzeichnis TextFiles zu kopieren. Wenn Sie diesen Befehl in einer Batchdatei verwenden, ist es sinnvoll, ihn durch die Angabe von Parametern verständlicher zu machen -Weg(Quelle) und -Ziel(Empfänger):

PS C:>copy-item –path ‘.\*.txt’ –destination ‘.\TextFiles’

Nachdem wir den Kopierbefehl ausgeführt haben, verwenden wir den Befehl Ort festlegen um zum TextFiles-Unterverzeichnis zu wechseln. Verwenden des Befehls Element umbenennen Benennen Sie die Datei psdemo.txt in psdemo.bak um. Bei Bedarf können Sie Optionen nutzen -Weg Und -neuer Name. Nachdem die Datei umbenannt wurde, verschieben Sie sie mit dem Befehl um eine Ebene nach oben Bewegungselement. Dann verwenden wir den Befehl Ort festlegen, oder besser gesagt, sein Alias sl in ein anderes Verzeichnis wechseln. Wir schließen die Manipulation des Dateisystems ab, indem wir mit dem Befehl das gesamte TextFiles-Verzeichnis löschen Gegenstand entfernen. Da das TextFiles-Verzeichnis Dateien enthält, ist die Option –rekursiv. Wenn diese Option nicht angegeben ist, fragt Windows PowerShell vor der Ausführung des Befehls nach einer Bestätigung Gegenstand entfernen.

Arbeiten mit der Registrierung

Wenn wir verschiedene Einstellungen vornehmen und versuchen, Parameter zu erkennen, müssen wir uns manchmal an wenden Systemregistrierung Suche nach Schlüsseln, Werten usw. Mit den Fähigkeiten von Windows PowerShell lässt sich diese Aufgabe durchaus lösen auf einfache Weise. Die Fähigkeiten von Windows PowerShell sind in Abb. dargestellt. 14.


Unser erster Befehl verwendet einen Alias sl um den Befehl auszuführen Ort festlegen, wodurch sich unser aktueller Speicherort vom Dateisystem in den Zweig HKEY_CURRENT_USER in der Systemregistrierung ändert:

PS C:\> sl hkcu:

Beachten Sie, dass PowerShell wie bei der Arbeit mit dem Dateisystem einen speziellen Anbieter verwendet, um auf die Registrierung zuzugreifen.

Die Befehle analog zu den oben genannten sind:

PS C:\> sl Registry:hkcu

PS C:\> sl hkey_current_user

Der folgende Befehl lädt den Inhalt der gesamten HKEY_CURRENT_USER-Registrierungsstruktur in die reg-Variable:

PS HKCU:\> $reg = gci . –rec –ea lautlos fortfahren

Hierzu verwenden wir den Befehl get-childitem(alias - gci), dessen Prinzip dem Arbeiten mit dem Dateisystem ähnelt. Das erste Argument dieses Befehls ist „.“ – zeigt an, dass wir den Inhalt des aktuellen Registrierungszweigs abrufen möchten – HKEY_CURRENT_USER. Das zweite Argument ist die Abkürzung für Option –rekursiv und zeigt an, dass wir rekursiv Daten aus allen Unterzweigen des aktuellen Registrierungszweigs sammeln müssen. Und schließlich das dritte Argument – –ea stillschweigend weitermachen– gibt an, dass der Befehl auch dann weiter ausgeführt werden soll, wenn aufgrund unzureichender Zugriffsrechte auf bestimmte Unterzweige der Registry Fehler auftreten.

Der folgende Befehl in unserem Beispiel:

PS HKCU:\>$s = $reg | % (if (gp $_.pspath) –match ‚PowerShell‘)($_.pspath))

kopiert Daten aus der Registrierung, die die Zeichenfolge enthält 'Power Shell'. Wir beginnen mit der Aufnahme eines Gegenstandes reg und leiten Sie es an das Team weiter % , ein Alias ​​für den Befehl für jede. Es führt eine rekursive Durchquerung aller in einem Objekt enthaltenen Registrierungseinträge durch reg und speichert das Element bei jedem Schritt in einem speziellen PowerShell-Objekt namens ‘_’ . IN Geschweifte Klammern Wir geben die Aktionen an, die bei jedem Schritt der Befehlsausführung ausgeführt werden sollen für jede. Innerhalb des Blocks für jede Wir nutzen die Verifizierung Wenn um herauszufinden, ob der aktuelle Registry-Eintrag und seine pspath-Eigenschaft übereinstimmen, die wir durch den Aufruf des Befehls erhalten get-itemproperty(über alias gp), unser Kriterium - das Vorhandensein einer Linie 'Power Shell'. Wenn eine Übereinstimmung gefunden wird, geben wir den Eigenschaftswert zurück pspath. Alle gefundenen Übereinstimmungen werden im Objekt gespeichert S.

Wir beenden die Arbeit mit der Registrierung, indem wir die Suchergebnisse an den Befehl umleiten Objekt auswählen(über alias wählen) und zeigen Sie die ersten beiden gefundenen Ergebnisse an. Als Übung können Sie die Endergebnisse mit dem Befehl in eine Datei umleiten Out-Datei.

Prozesszugriff

Eine weitere Herausforderung für IT-Experten besteht darin, Systemanomalien zu erkennen, beispielsweise Prozesse, die viel Speicher verbrauchen. Mal sehen, wie dieses Problem gelöst wird unter Verwendung von Windows PowerShell (Abbildung 15).


Im ersten Befehl speichern wir Informationen über alle auf diesem Computer laufenden Prozesse in einer Variablen $allprocs:

PS C:\> $allprocs = get-process

Anschließend leiten wir die erhaltenen Informationen an das Team weiter für jede, der auch durch einen Alias ​​angegeben werden kann % oder für jede. Dieser Befehl durchläuft alle mit dem Prozess verbundenen Objekte und speichert die Informationen bei jedem Schritt in einem internen Objekt $_ . Dieses Objekt kann konventionell als aktuelles Objekt bezeichnet werden. Als Parameter für den Befehl für jede Wir geben die Eigan virtuelle Speichergröße mit der Speichergröße, die uns interessiert (in unserem Beispiel 20 MB). Wenn der Wert dieser Eigenschaft für das aktuelle Objekt größer als der angegebene Wert ist, zeigen wir den Namen des Prozesses auf dem Bildschirm an. Beachten Sie, dass PowerShell grundlegende Abkürzungen für die Angabe von Größen unterstützt – KB, MB, GB. Dies ist sehr nützlich, da Sie bei der Angabe von Speicher-, Festplatten- usw. Mengen keine Nullen zählen müssen.

Zugriff auf Systemprotokolle

Wenn wir versuchen, die Ursachen von Fehlern zu ermitteln, greifen wir oft auf das Systemprotokoll zurück, in dem viele davon gespeichert sind nützliche Informationenüber Ereignisse im System. Typischerweise wird das Dienstprogramm „Ereignisanzeige“ (eventvwr.exe) zum Untersuchen des Systemprotokolls verwendet. In PowerShell können wir integrierte Befehle verwenden, z. B. den Befehl get-eventlog, um schnell den Inhalt des Systemprotokolls zu untersuchen (Abb. 16).


Unser erster Befehl lädt wichtige Informationen aus dem Systemprotokoll:

PS C:\> get-eventlog –list

Ohne die Option zu nutzen -Liste PowerShell fordert Sie zur Eingabe des genauen Namens des Syslogs auf. In unserem Beispiel sehen wir mehrere Einstiegspunkte im Systemprotokoll: Anwendung, Internet Explorer, System, Windows Power Shell usw. Unser nächster Befehl ruft Syslog-Einträge vom Typ ab "Fehler":

PS C:\> $bad = get-eventlog „System“ | where-object ( $_.EntryType –eq „Error“ )

Wir verwenden den Befehl get-eventlog, zu dem wir den Parameter angeben "System" um nur Systemeinträge abzurufen – wir könnten dies durch die Verwendung des Parameters klarer spezifizieren logName. Variable Inhalte $schlecht an die Befehlseingabe übergeben Wo-Objekt um nur die Datensätze zu filtern, die uns interessieren. Als Befehlsargumente Wo-Objekt Wir weisen darauf hin, dass wir nur nach Datensätzen suchen, die über die Eigenschaft verfügen Eintragstyp gleicht "Fehler".

Wir schließen unsere Untersuchung des Systemprotokolls mit der Anzeige von fünf ab Letzte Einträgeüber Fehler bei der Verwendung des Befehls Objekt auswählen mit Parameter -zuletzt:

PS C:\> $bad | Objekt auswählen – letzte 5

Zugriff auf WMI

Wie wir wissen, ist Windows Management Instrumentation (WMI) die Implementierung des Common Information Model (CMI)-Standards durch Microsoft. In den meisten Fällen wird WMI von IT-Experten verwendet, um Informationen über Hardware und andere Geräte zu erhalten Software auf diesem Computer installiert. Wie wir im nächsten Beispiel sehen werden, unter Verwendung von Windows PowerShell erleichtert den Zugriff auf in WMI gespeicherte Informationen erheblich (Abbildung 17).


In der ersten Zeile verwenden wir den Befehl get-wmiobject um Informationen über die Datei abzurufen, die zum Auslagern des Speichers auf die Festplatte verwendet wird, und um diese Informationen in einer Variablen zu speichern $pfu:

PS C:\> $pfu = get-wmiobject – Klasse „win32_pageFileUsage“

PS C:\> $pfu | get-member –membertype-Eigenschaft | where_object ( $_.name –nomatch ‚_‘ )

Normalerweise können Sie den Befehl verwenden, um Informationen zu einer bestimmten Klasse zu finden Get-Mitglied ohne Angabe von Parametern, aber in unserem Beispiel interessieren uns nur die verfügbaren Eigenschaften und nur diejenigen, die keinen Unterstrich im Namen enthalten. Ein aufmerksamer Leser könnte fragen: Wie haben wir von der Existenz der Klasse erfahren? win32_pageFileUsage? Immerhin ist bekannt, dass WMI mehr als tausend Klassen unterstützt; darüber hinaus fügen zahlreiche Anwendungen eigene Klassen hinzu. Sie können den Befehl verwenden:

PS C:\> get-wmiobject –list

um eine Liste aller im System vorhandenen Klassen zu erhalten. Nachdem wir die uns zur Verfügung stehenden Klasseneigenschaften ermittelt haben, zeigen wir den Inhalt der Eigenschaften, die uns interessieren, auf dem Bildschirm an:

PS C:\> $pfu.caption; $pfu.currentusage

Der zweite Teil unseres Beispiels ist einer anderen Klasse gewidmet – win32_DiskDrive, das Informationen über die im System installierten Festplatten speichert. Diese Klasse ist ein Beispiel für eine WMI-Klasse, die mehr als ein Objekt enthält. In unserem Beispiel definieren wir den Eigenschaftswert Untertitel die erste im System installierte Festplatte:

PS C:\>$dd.caption

Verwendung von XML-Dateien

IN In letzter Zeit Zur Speicherung von Konfigurationsinformationen werden zunehmend XML-Dateien verwendet. Je mehr Daten sich in einer XML-Datei anhäufen, desto weniger ist sie lesbar. Als nächstes schauen wir uns die Verwendung an Windows-Funktionen PowerShell zum Arbeiten mit XML-Dateien.

Nehmen wir als Beispiel die Konfiguration Windows-Datei Kalender, der so aussieht (Abb. 18):

und führen Sie die in Abb. gezeigten Manipulationen durch. 19.

In der ersten Zeile laden wir mit dem Befehl den Inhalt der gesamten XML-Datei in eine Variable Get-Content:

PS C:\> $doc = get-content ‚.\settings.xml‘

Achten wir auf die Verwendung des Datentyps : Wenn Sie die Verwendung dieses Datentyps nicht angeben, wird nur Text in die Variable geladen.

In der zweiten Zeile wählen wir einen bestimmten Zweig der XML-Datei aus – hierfür verwenden wir die Methode Knoten auswählen ein Objekt, das XML-Daten und eine XPath-Beschreibung der Zweigadresse speichert:

PS C:\> $settings = $doc.selectnode(‘CalendarSettings/X-Root/VCalendar’)

Danach verwenden wir den Befehl für jedes Objekt um den Immobilienwert zu ermitteln Name für alle Elemente in einem bestimmten Zweig.

Abschluss

Wir haben uns den Hauptteil angeschaut Windows-Funktionen PowerShell vereinfacht die Aufgaben von IT-Spezialisten. Wie wir wissen, werden diese Aufgaben häufig mit der Skriptsprache VBScript gelöst. Mit Windows PowerShell können Sie vorhandenen VBScript-Code verwenden, was die Migration erheblich vereinfacht (Abbildung 20).


Das obige Beispiel zeigt, wie Sie vorhandenen VBScript-Code in PowerShell verwenden können. In der ersten Zeile erstellen wir ein neues COM-Objekt, das den Ausführungskern von Skriptprogrammen darstellt – ScriptControl. Wir geben dann an, dass wir die Sprache verwenden werden Visual Basic Skript. Die dritte Zeile gibt den eigentlichen VBScript-Code an – in unserem Beispiel handelt es sich um einen Aufruf der MsgBox-Funktion, in der Praxis kann man aber beispielsweise einen Dateicode in eine Variable laden. Und schließlich fügen wir in der letzten Zeile den VBScript-Code zu unserem Objekt hinzu – und der Code wird ausgeführt.

Netzwerkressourcen

Blog des Produktteams: http://blogs.msdn.com/PowerShell/.

Dienstprogramme, Editoren und Add-ons: http://www.powershell.com/.

Blog von Dmitry Sotnikov von der Firma Quest: http://dmitrysotnikov.wordpress.com/.

PowerGadgets ist ein Beispiel für die unbegrenzte Leistungsfähigkeit von PowerShell-Erweiterungen:

1. Ein Drehbuch schreiben

PowerShell-Skript (egal welche Version) ist Textdatei mit der Erweiterung *.ps1.

Hier ist ein Beispiel für ein einfaches Power Shell-Skript (Datei systemInfo.ps1):

# WMI-Objekt für das Betriebssystem abrufen

Get-WmiObject Win32_OperatingSystem

Diese Datei kann beispielsweise in erstellt und bearbeitet werden FAR-Manager.

beachten Siedass FAR Manager, obwohl er in der Power Shell-Konsole arbeiten kann, Skripte unter sich selbst in der Umgebung einer regulären Windows-Konsole ausführt cmd . Das heißt, FAR Manager kann nur zum Erstellen und Bearbeiten von PowerShell-Skripten verwendet werden, nicht jedoch zum Ausführen dieser. Aber bevor Sie enttäuscht werden, lesen Sie Punkt 3.

2. Ausführen des Skripts

Das Skript muss über die Power Shell-Konsole und nicht über die übliche Konsole ausgeführt werden Windows-Konsole. In der Power Shell-Konsole müssen Sie in das Verzeichnis gehen, in dem sich das Skript befindet (mit den Befehlen). CD ) und führen Sie dann das Skript selbst aus. Achten Sie dabei darauf, die Zeichen davor einzuschließen".\" . Wir haben zum Beispiel den Pfad zur Skriptdatei d:\work\systemInfo.ps1 . Dann sehen die Startbefehle so aus:

D:

CD\

CD-Arbeit

.\systemInfo.ps1

oder so (geben Sie einfach den vollständigen Pfad zum Skript an):

d:\work\systemInfo.ps1

Höchstwahrscheinlich wird beim Ausführen des Skripts der folgende Fehler angezeigt:

Die Datei D:\work\systemInfo.ps1 kann nicht geladen werden, da die Skriptausführung auf diesem System nicht zulässig ist. Geben Sie „get-help about_signing“ ein, um weitere Informationen zu erhalten.

Zeile:1 Zeichen: 18

CategoryInfo: NotSpecified: (:), PSSecurityException

FullyQualifiedErrorId: RuntimeException

Der Fehler tritt auf, weil Power Shell standardmäßig die maximale Sicherheitsrichtlinie aktiviert hat, die es Ihnen ermöglicht, PowerShell-Befehle auszuführen Befehlszeile, erlaubt Ihnen jedoch nicht, ein Skript mit PowerShell-Befehlen in derselben Befehlszeile auszuführen.

Um die Ausführung von PowerShell-Skripten zu ermöglichen, müssen Sie eine *.bat-Datei erstellen, zum Beispiel „enableScript.bat“ mit folgendem Inhalt:

Powershell -Command Set-ExecutionPolicy RemoteSigned

Diese *.bat-Datei kann in jeder Konsole ausgeführt werden: entweder in PowerShell oder in einer regulären Konsole cmd . Nach dem Ausführen dieser Datei werden PowerShell-Skripte in der PowerShell-Konsole ausgeführt.

3. Ausführen eines PowerShell-Skripts über eine normale Windows-CMD-Konsole

Das PowerShell-Skript kann auch von einer normalen Windows-Konsole ausgeführt werden. Dazu können Sie den Befehl verwenden:

Powershell-Datei ./systemInfo.ps1

Auf diese Weise können Sie Skripte direkt aus FAR Manager ausführen und sie funktionieren.

Aber hier gibt es eine leichte Subtilität. Parameter-Datei Wird nur auf lokalen Pfaden ausgelöst, auch wenn der Pfad relativ ist"./" . Das heißt, wenn *.ps1 - Die Datei befindet sich auf der lokalen Festplatte C: oder D: , dann wird ein solcher Anruf funktionieren. Wenn Sie jedoch versuchen, ein Skript auszuführen, das sich auf einer Domänenressource befindet, wird das Skript nicht gefunden. Möglicherweise wird dies in zukünftigen Versionen von PowerShell behoben.

Cmdlets in Windows PowerShell Es gibt viele, daher schlage ich heute vor, eine kleine Liste der nützlichsten und am häufigsten verwendeten Cmdlets mit einer kurzen Beschreibung ihrer Funktionen zu betrachten. Dieser Leitfaden hilft Ihnen dabei, schnell das zu finden, was Sie interessiert Windows-Befehl PowerShell und richtet sich an unerfahrene Systemadministratoren.

Notiz! Diese Referenz basiert auf Cmdlets PowerShell-Versionen 5.0 auf dem Betriebssystem Windows Server 2016.

Nützliche Windows PowerShell-Cmdlets

In diesem Abschnitt liste ich die PowerShell-Cmdlets auf, die Sie auf jeden Fall verwenden werden.

  • Get-Help – Zeigt Cmdlet-Hilfe, Funktionen und allgemeine Windows PowerShell-Hilfe an. Es gibt verschiedene Arten von Hilfe: kurz, detailliert, vollständig und nur mit Beispielen;
  • Update-Help – lädt neue Hilfedateien herunter und installiert sie, d. h. Hilfe-Update;
  • Get-Command – Such-Cmdlet den erforderlichen Befehl Sie können sowohl nach Verb als auch nach Substantiv suchen. Es ist auch möglich, eine Maske zu verwenden, wenn Sie den genauen Namen des Verbs oder Substantivs nicht kennen.
  • Get-Alias ​​​​– zeigt Aliase, alle oder einen bestimmten Befehl;
  • Get-PSDrive – zeigt verbundene Laufwerke an;
  • Get-Member – zeigt die Eigenschaften und Methoden an, die ein Objekt hat;
  • Get-WindowsFeature – zeigt Informationen zu verfügbaren Serverrollen und -funktionen an;
  • Install-WindowsFeature( Äquivalent zu Add-WindowsFeature) – installiert Rollen oder Komponenten auf dem angegebenen Server;
  • Uninstall-WindowsFeature ( Äquivalent zu Remove-WindowsFeature) – löscht Serverrollen oder Komponenten;
  • Get-History – gibt eine Liste der während der aktuellen Sitzung eingegebenen Befehle zurück.

Arbeiten mit Variablen

In PowerShell verwenden Sie normalerweise das Dollarzeichen $ (, um eine Variable zu erstellen, sie auf einen Wert festzulegen oder diesen Wert abzurufen. kurz und praktisch), aber für diese Zwecke gibt es spezielle Cmdlets.

  • Get-Variable – zeigt eine Liste von Variablen und ihren Werten an ( oder eine angegebene Variable);
  • Neue Variable – erstellt eine neue Variable;
  • Set-Variable – legt den Wert einer Variablen fest. Wenn eine Variable mit dem angegebenen Namen nicht existiert, wird sie erstellt;
  • Clear-Variable – löscht den Wert einer Variablen;
  • Remove-Variable – entfernt eine Variable und ihren Wert.

Formatierung in Windows PowerShell

Windows PowerShell verfügt über eine Reihe von Cmdlets, mit denen die Ausgabe eines Cmdlets formatiert werden kann. Sie ermöglichen dem Benutzer, das Ergebnis in der Form anzuzeigen, in der es für ihn bequem ist, dieses Ergebnis anzuzeigen.

  • Format-Liste – Geben Sie das Ergebnis des Befehls im Format einer Liste von Eigenschaften aus, wobei auf jedem Neue Zeile separates Eigentum;
  • Format-Table – gibt das Befehlsergebnis in Form einer Tabelle aus;
  • Format-Wide – Geben Sie das Befehlsergebnis in Form einer breiten Tabelle aus, die nur eine Eigenschaft jedes Objekts anzeigt;
  • Format-Benutzerdefiniert – in diesem Fall wird die Ausgabe mit einer benutzerdefinierten Ansicht formatiert.

Import und Export

Mit PowerShell können Sie Daten in einer Vielzahl gängiger Formate wie CSV oder XML importieren und exportieren und die Befehlsausgabe auch umleiten externe Datei oder an einen Drucker.

  • Export-Csv – Daten in das CSV-Format exportieren;
  • Import-Csv – importiert Daten aus einer CSV-Datei;
  • Export-Clixml – Daten in das XML-Format exportieren;
  • Import-Clixml – importiert eine CLIXML-Datei und erstellt die entsprechenden Objekte in Windows PowerShell;
  • Out-File – sendet die Ausgabe des Cmdlets an eine externe Datei ( zum Beispiel in TXT);
  • Out-Printer – gibt das Ergebnis des Befehls an den Drucker aus;
  • Import-Module – fügt Module in der aktuellen Sitzung hinzu.

Netzwerk in Windows PowerShell

Für die Netzwerkverwaltung in Windows PowerShell gibt es Cmdlets wie:

  • Disable-NetAdapter – das Cmdlet deaktiviert den Netzwerkadapter;
  • Enable-NetAdapter – dieses Cmdlet aktiviert den Netzwerkadapter;
  • Rename-NetAdapter – benennt den Netzwerkadapter um;
  • Restart-NetAdapter – startet den Netzwerkadapter neu;
  • Get-NetIPAddress – zeigt Informationen zur IP-Adresskonfiguration an;
  • Set-NetIPAddress – ändert die IP-Adresskonfiguration;
  • New-NetIPAddress – erstellt und konfiguriert eine IP-Adresse;
  • Remove-NetIPAddress – entfernt eine IP-Adresse und ihre Konfiguration;
  • Get-NetRoute – zeigt die IP-Routing-Tabelle an;
  • Set-NetRoute – ändert die IP-Routing-Tabelle;
  • New-NetRoute – erstellt einen Eintrag in der IP-Routing-Tabelle;
  • Remove-NetRoute – entfernt einen oder mehrere Einträge ( IP-Routen) aus der IP-Routing-Tabelle;
  • Get-NetIPv4Protocol – zeigt Informationen zur IPv4-Protokollkonfiguration an;
  • Get-NetIPv6Protocol – zeigt Informationen zur IPv6-Protokollkonfiguration an;
  • Get-NetIPInterface – zeigt Informationen zu den Eigenschaften der IP-Schnittstelle an;
  • Get-NetTCPSetting – zeigt Informationen zu TCP-Einstellungen und -Konfiguration an;
  • Test-Connection – Cmdlet sendet ICMP-Pakete an einen oder mehrere Computer, d. h. " Pings" Computers.

Arbeiten mit Elementen

Windows PowerShell verfügt über Cmdlets, die mit Elementen arbeiten können; Elemente können hier als Dateien, Ordner, Registrierungsschlüssel usw. verstanden werden.

  • Clear-Item – löscht den Inhalt eines Elements, löscht jedoch nicht das Element selbst;
  • Copy-Item – kopiert ein Element;
  • Get-Item – ruft das Element am angegebenen Speicherort ab;
  • Invoke-Item – führt eine Standardaktion für das angegebene Element aus;
  • Move-Item – verschiebt ein Element;
  • New-Item – erstellt ein neues Element;
  • Remove-Item – entfernt die angegebenen Elemente;
  • Rename-Item – Benennt ein Element im Windows PowerShell-Anbieter-Namespace um;
  • Set-Item – ändert das Element;
  • Get-ChildItem – gibt Elemente und untergeordnete Elemente an einem oder mehreren angegebenen Speicherorten zurück;
  • Get-Location – zeigt Informationen über den aktuellen Standort an.

Cmdlets für die Arbeit mit Active Directory (AD)

Selbstverständlich ermöglicht Ihnen Windows PowerShell die Arbeit mit dem Active Directory-Verzeichnisdienst. Für diese Zwecke gibt es viele Cmdlets, hier sind einige davon:

  • New-ADUser – Erstellen eines neuen Benutzers in Active Directory;
  • Get-ADUser – zeigt Informationen über Active Directory-Benutzer an;
  • Set-ADUser – ändert den Active Directory-Benutzer;
  • Remove-ADUser – entfernt einen Active Directory-Benutzer;
  • New-ADGroup – Cmdlet erstellt eine Gruppe in Active Directory;
  • Get-ADGroup – Zeigt Gruppeninformationen an oder führt eine Suche durch, um mehrere Gruppen aus Active Directory abzurufen.
  • Set-ADGroup – Cmdlet ändert eine Gruppe in Active Directory;
  • Remove-ADGroup – Entfernen einer Gruppe in Active Directory;
  • Add-ADGroupMember – Das Cmdlet fügt Benutzer-, Computer- oder Gruppenkonten als neue Mitglieder einer Active Directory-Gruppe hinzu;
  • Get-ADGroupMember – zeigt Informationen über Active Directory-Gruppenmitglieder an;
  • Remove-ADGroupMember – Elemente aus einer Active Directory-Gruppe entfernen;
  • Set-ADAccountPassword – Passwort zurücksetzen Konto Active Directory;
  • Disable-ADAccount – deaktiviert das Active Directory-Konto.
  • Enable-ADAccount – aktiviert das Active Directory-Konto;
  • Unlock-ADAccoun – entsperrt ein Active Directory-Konto;
  • New-ADComputer – Erstellen eines neuen Computerkontos in Active Directory;
  • Get-ADComputer – zeigt Informationen über einen oder mehrere Computer im Active Directory an;
  • Set-ADComputer – Ändern des Computerkontos in Active Directory;
  • Remove-ADComputer – Entfernen Sie einen Computer aus Active Directory.

Arbeiten mit Hyper-V

Es gibt viele Cmdlets für die Arbeit mit Hyper-V in Windows PowerShell, hier eine kleine Liste:

  • New-VM – eine neue erstellen virtuelle Maschine;
  • Set-VM – Einrichten einer virtuellen Maschine;
  • Start-VM – eine virtuelle Maschine starten;
  • Stop-VM – Schließen, Herunterfahren oder Speichern der virtuellen Maschine;
  • Import-VM – eine virtuelle Maschine aus einer Datei importieren;
  • Move-VM – Verschieben einer virtuellen Maschine auf einen neuen Hyper-V-Host;
  • Remove-VM – Entfernen einer virtuellen Maschine;
  • Rename-VM – eine virtuelle Maschine umbenennen;
  • Neue VHD – Erstellen einer oder mehrerer neuer virtueller Festplatten Festplatte;
  • Set-VHD – Einrichten einer virtuellen Festplatte;
  • Test-VHD – Testet eine virtuelle Festplatte, um Probleme zu erkennen, die sie unbrauchbar machen würden;
  • Add-VMDvdDrive – fügt hinzu DVD-Disc zu einer virtuellen Maschine;
  • Remove-VMDvdDrive – entfernt eine DVD aus einer virtuellen Maschine;
  • Add-VMHardDiskDrive – fügt hinzu Festplatte zu einer virtuellen Maschine;
  • Remove-VMHardDiskDrive – entfernt eine oder mehrere virtuelle Festplatten (VHD) aus einer virtuellen Maschine;
  • Add-VMNetworkAdapter – fügt der virtuellen Maschine einen virtuellen Netzwerkadapter hinzu;
  • Remove-VMNetworkAdapter – entfernt einen oder mehrere virtuelle Netzwerkadapter von einer virtuellen Maschine;
  • Copy-VMFile – Dateien auf eine virtuelle Maschine kopieren;
  • Get-VMVideo – zeigt Informationen zu Videoeinstellungen für virtuelle Maschinen an;
  • Move-VMStorage – Verschieben des Speichers der virtuellen Maschine.

Arbeiten mit Hintergrundjobs

Windows PowerShell bietet die Möglichkeit, Aufgaben auszuführen Hintergrund, sodass, ohne darauf zu warten, dass der Befehl seine Arbeit abschließt ( für Fälle, in denen die Ausführung der Aufgabe lange dauert), in der aktuellen Sitzung weiterarbeiten. Um mit Hintergrundjobs zu arbeiten, verfügt PowerShell über die folgenden Cmdlets:

  • Start-Job – eine Hintergrundaufgabe starten;
  • Stop-Job – Stoppen Sie eine Hintergrundaufgabe
  • Get-Job – Liste der Hintergrundaufgaben anzeigen;
  • Receive-Job – das Ergebnis einer Hintergrundaufgabe anzeigen;
  • Remove-Job – eine Hintergrundaufgabe entfernen;
  • Wait-Job – Verschieben Sie eine Hintergrundaufgabe in den Vordergrund, um auf deren Abschluss zu warten.

Arbeiten mit Objekten

Da PowerShell mit Objekten arbeitet, können Sie bestimmte Aktionen für diese Objekte ausführen, zum Beispiel:

  • Mit dem Cmdlet „Measure-Object“ können Sie basierend auf den Eigenschaften von Objekten numerische Aggregationsparameter wie Minimum, Maximum, Durchschnittswert, Summe und Menge berechnen. Sie möchten beispielsweise die maximale oder durchschnittliche Dateigröße in wissen bestimmtes Verzeichnis, oder ermitteln Sie einfach die Anzahl der Dateien ( laufende Prozesse, Dienste usw.);
  • Select-Object – mit diesem Cmdlet können Sie bestimmte Objekte oder Eigenschaften dieser Objekte auswählen, beispielsweise möchten Sie nur den Dateinamen und seine Größe anzeigen;
  • Sort-Object – sortiert Objekte nach Eigenschaftswerten;
  • Where-Object – Cmdlet zum Festlegen einer Bedingung für die Auswahl von Objekten basierend auf den Werten ihrer Eigenschaften;
  • Gruppenobjekt – gruppiert Objekte, die enthalten gleichen Wert für gegebene Eigenschaften;
  • ForEach-Object – iteriert über Objekte, um an jedem dieser Objekte eine bestimmte Operation auszuführen.

PowerShell-Cmdlets für die Remoteverwaltung

MIT unter Verwendung von Windows PowerShell kann Befehle nicht nur auf Ihrem lokalen Computer ausführen, sondern auch auf einem oder sogar mehreren Remotecomputern.

  • Enter-PSSession – startet eine interaktive Sitzung mit einem Remote-Computer;
  • Exit-PSSession – beendet eine interaktive Sitzung mit einem Remote-Computer;
  • New-PSSession – stellt eine dauerhafte Verbindung zu einem lokalen oder Remote-Computer her;
  • Remove-PSSession – schließt eine oder mehrere Windows PowerShell-Sitzungen;
  • Disconnect-PSSession – trennt die Verbindung zur Sitzung;
  • Connect-PSSession – stellt eine Verbindung zu getrennten Sitzungen her;
  • Get-PSSession – Ruft Windows PowerShell-Sitzungen auf lokalen und Remotecomputern ab;
  • Invoke-Command – führt Befehle auf lokalen und Remote-Computern aus.

Arbeiten mit Diensten und Prozessen

PowerShell kann natürlich Dienste und Prozesse in Windows verwalten; dafür gibt es Cmdlets wie:

  • Get-Process – zeigt Informationen über laufende Prozesse auf dem Computer an;
  • Start-Prozess – startet einen oder mehrere Prozesse auf dem Computer;
  • Stop-Process – stoppt einen oder mehrere laufende Prozesse;
  • Get-Service – zeigt Informationen über Dienste an;
  • Restart-Service – startet den Dienst neu;
  • Start-Service – startet den Dienst;
  • Stop-Service – stoppt den Dienst;
  • Suspend-Service – unterbricht den Dienst;
  • Set-Service – Mit diesem Cmdlet können Sie die Eigenschaften eines Dienstes ändern, z. B. Beschreibung, Anzeigename und Startmodus. Es kann auch zum Starten, Stoppen oder Pausieren eines Dienstes verwendet werden.

Arbeiten Sie mit dem Computer

Mit Windows PowerShell können Sie Verwaltungsaufgaben für das Betriebssystem und den gesamten Computer ausführen, beispielsweise einen Neustart Betriebssystem oder benennen Sie den Computer um.

  • Restart-Computer – Das Cmdlet startet das Betriebssystem neu ( startet den Computer neu);
  • Stop-Computer – schaltet den Computer aus;
  • Computer umbenennen – benennt den Computer um;
  • Checkpoint-Computer – erstellt einen Systemwiederherstellungspunkt auf dem lokalen Computer;
  • Restore-Computer – führt die Systemwiederherstellung auf dem lokalen Computer aus;
  • Disable-ComputerRestore – deaktiviert die Systemwiederherstellungsfunktion auf dem angegebenen Dateisystemlaufwerk;
  • Enable-ComputerRestore – aktiviert die Systemwiederherstellungsfunktion auf dem angegebenen Dateisystemlaufwerk;
  • Remove-Computer – löscht lokalen Computer aus der Domäne;
  • Get-EventLog – zeigt Informationen zu Ereignissen im Ereignisprotokoll oder eine Liste von Ereignisprotokollen auf einem lokalen oder Remote-Computer an;
  • Clear-EventLog – Entfernt Einträge aus den angegebenen Ereignisprotokollen.

Arbeiten mit Inhalten

Um Inhalte, beispielsweise Text in einer Datei, zu verwalten, gibt es in Windows PowerShell spezielle Cmdlets, wie zum Beispiel:

  • Get-Content – ​​Ruft den Inhalt eines Elements ab ( liest beispielsweise eine Datei);
  • Add-Content – ​​​​fügt Inhalt zu bestimmten Elementen hinzu, zum Beispiel Text zu einer Datei;
  • Clear-Content – ​​entfernt den Inhalt des Elements, entfernt jedoch nicht das Element selbst;
  • Set-Content – ​​Schreibt oder ersetzt Inhalte in ein Element durch neuen Inhalt.

Andere Windows PowerShell-Cmdlets

Ich möchte auch die folgenden Windows PowerShell-Cmdlets hervorheben, die Sie wahrscheinlich benötigen und die nützlich sein werden.

  • Get-ExecutionPolicy – ​​​​Mit diesem Cmdlet können Sie die aktuelle Windows PowerShell-Ausführungsrichtlinie für die aktuelle Sitzung ermitteln;
  • Set-ExecutionPolicy – ​​​​Das Cmdlet ändert die Windows PowerShell-Ausführungsrichtlinie;
  • Write-Host – zeigt Informationen auf dem Bildschirm an ( schreibt den Text);
  • Read-Host – liest die Eingabezeile von der Konsole;
  • Write-Warning – zeigt eine Warnmeldung an;
  • Write-Error – das Cmdlet deklariert einen Fehler und zeigt ihn im Fehlerstrom an;
  • Get-Date – kehrt zurück aktuelles Datum und Zeit;
  • Set-Date – Das Cmdlet ändert das Systemdatum und die Systemzeit auf dem Computer.

Deshalb haben wir uns nützliche und häufig verwendete Windows PowerShell-Cmdlets angesehen. Ich hoffe, dieses Nachschlagewerk wird Ihnen nützlich sein, viel Glück!

gastroguru 2017