Wahl der Leser
Populäre Artikel
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!
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.
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
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
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
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.
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.
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.
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).
Benötigen Sie weitere Informationen zum Cmdlet? Verwenden Sie Get-Help:
PS C:\> Get-Help Get-Content -Detailed
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
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
In diesem Abschnitt liste ich die PowerShell-Cmdlets auf, die Sie auf jeden Fall verwenden werden.
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.
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.
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.
Für die Netzwerkverwaltung in Windows PowerShell gibt es Cmdlets wie:
Windows PowerShell verfügt über Cmdlets, die mit Elementen arbeiten können; Elemente können hier als Dateien, Ordner, Registrierungsschlüssel usw. verstanden werden.
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:
Es gibt viele Cmdlets für die Arbeit mit Hyper-V in Windows PowerShell, hier eine kleine Liste:
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:
Da PowerShell mit Objekten arbeitet, können Sie bestimmte Aktionen für diese Objekte ausführen, zum Beispiel:
MIT unter Verwendung von Windows PowerShell kann Befehle nicht nur auf Ihrem lokalen Computer ausführen, sondern auch auf einem oder sogar mehreren Remotecomputern.
PowerShell kann natürlich Dienste und Prozesse in Windows verwalten; dafür gibt es Cmdlets wie:
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.
Um Inhalte, beispielsweise Text in einer Datei, zu verwalten, gibt es in Windows PowerShell spezielle Cmdlets, wie zum Beispiel:
Ich möchte auch die folgenden Windows PowerShell-Cmdlets hervorheben, die Sie wahrscheinlich benötigen und die nützlich sein werden.
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!
In Verbindung stehende Artikel: | |
So öffnen Sie ein XML-Dokument - Funktionen zum Arbeiten mit XML-Dateien. So öffnen Sie die XML-Erweiterung
Im Windows-Betriebssystem speichern die meisten Programme ihre... Was sind ROOT-Rechte und wie erhält man sie auf Android? Nachteile von Root-Rechten
Sie haben Root-Rechte für Ihr Android-Smartphone oder -Tablet erhalten. Alles scheint... PayPal – was ist das für ein System und wie nutzt man es?
PayPal ist ein internationales Zahlungssystem, mit dem Sie... |