Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 11695|Antwort: 1

PowerShell Einstiegsanleitung – Version v0.3

[Link kopieren]
Veröffentlicht am 19.04.2017 16:48:30 | | |


---------- Kapitel 1 Windows-Skriptverlauf --------------


1 Die erste Generation der Skriptfledermäuse. Es begann mit win95, win98--------- und endete etwa 2008. Funktionen: Zeichenorientierte Befehle mit Kommandozeile und Pipeline.
2 Zweite Generation Skript VBS. Features: Nur Funktionen, Werte, Aufrufe.
3 Dritte Generation Skript-Powershell. Ab 2012 hat sich das Kommando vollständig zu objektorientierten Systemen entwickelt. Zum Beispiel sind Tasklist und Get-Process wiederholte Radfunktionen: objektorientiert. Sie erbten die Vorteile der vorherigen beiden Schriftgenerationen.



F: Warum PowerShell lernen?
Ein:
Der Missionar antwortete, dass er ein Jahr und fünf Jahre zum BAT studieren werde. Einfache Syntax und starke Bibliotheksfunktionen!
Das einzige auf der Welt, das Objekte mit Befehlen auf beiden Seiten der Pipeline unterstützt. d. h. objektorientierter Befehl 1 | Objektorientierter Befehl 2

Windows und Linux sind unterschiedlich:
Im PowerShell-Skript auf Win,
Unterstütze CR, LF, CRLF tritt ein. Unterstützung von Multi-Threading und Multi-Prozess-Nebenwahl.
Es ist einfach, [Text2-Sound], "Report Captain, Disk is full" einzubetten.
Das Einbetten einer grafischen Benutzeroberfläche ist einfach. (Wenn die Pop-up-Oberfläche dich auffordert, einen Benutzernamen, Passwort, Single Select, Multiple Select usw. einzugeben.) Das sind die Eifersüchtigkeiten von Linux-Skripten.

PowerShell unterscheidet sich von Python:
Es ist einfach, Chinesisch in PowerShell zu verwenden. Chinesischer Schriftname, Variablenname, Kommentar. Chinesische einfache Anführungszeichen, chinesische doppelte Anführungszeichen.
Erkennt automatisch GBK, UTF8, Unicode-Codierung. Pipeline-Support-Objekte, auf die Python-Skripte neidisch sind.



Einfaches Beispiel für die Syntax 1: Die Magie von Powershell-Ein- und Doppelanführungszeichen.
Einzelne Anführungszeichen können mit doppelten Anführungszeichen angegeben werden. Und umgekehrt.
Einfache und doppelte Anführungszeichen können mit @'' @引用.
BAT hat nicht funktioniert.


Missionarischer Erzähler:
Ich habe viel über das Design des Tutorials nachgedacht. Hast du nicht den historischen Teil dessen, was ich geschrieben habe, sehr [einfach und grob] gelesen? Die Geschichte wird mit einem Schlag getragen.
Aber da ich es gesagt habe, ist es kein Unsinn, ich möchte nur, dass die Studierenden klarstellen, dass seit win7-win2008 die [Objektifizierung] von Skripten populär geworden ist. Führt zum nächsten Kapitel der objektorientierten Erklärung.
Jedes PS-Einführungstutorial sollte den Unterschied zwischen zeichenorientiertem und objektorientiertem Tutorial erwähnen. Es ist einfach angemessen, dieses Thema in die Geschichte der Kommandozeile einzubauen.

---------- Kapitel 2 Die wunderbare -------------- des Objektorientierten
Was ist ein Objekt, warum ist es objektorientiert, und warum verstärkt Microsoft das Rad?

Objektorientiertes Beispiel 1:
Frage: Ich esse 2,2 Äpfel am Tag, wie viele Äpfel esse ich in 17 Tagen?
Ein:
2,2 x 17 sind verfügbar. Es ist auch möglich, i++ zu verwenden, die von jeder Skriptsprache unterstützt wird.
für ($i = 1; $i -Lt 18; $i++)
{
        $Apple = 2,2 + $Apple
        Schreibmoderator $i,$Apple
}

--------------------------------------------
Sobald sich die Frage ändert, sage ich dir nicht mehr die Anzahl der Tage, sondern nur,
Ich esse 2,2 Äpfel am Tag, wie viele Äpfel esse ich vom 20. Januar bis zum 20. Juni 2017?
$days = ((Empfangsdatum '20.06.2017') - (Empfangsdatum '20.01.2017')).Tage #值151


Ich esse 2,2 Äpfel am Tag, wie viele Äpfel esse ich vom 20. Januar bis zum 20. Juni 2020?
$days = ((Empfangsdatum '2020-06-20') - (Get-Date '2020-01-20')).Tage #值152

für ($i=(Get-Date '2020-01-20'); $i -lt (Empfangsdatum '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        Schreibmoderator $i,$Apple
}

Fazit: Mit dem Datumsobjekt ist das Zählen von Tagen, Stunden usw. einfach. [for,,i++] ist üblich, aber ich hätte nie gedacht, dass die Zahl I vom Datum sein könnte.

------------------------------------------



Was sind die Vorteile der objektorientierten Modelle?
Vor der Objektorientierung gab es nur Zeichenketten und ganze Zahlen.
1 Es gibt ein Objekt.
----- [Zeichentyp]-----
Das Glyph hat system.string, das ist das einfachste.
System.Text.StringBuilder Speicher, häufig ändernd, große Zeichenketten

----- [Numerischer Typ]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger unendliche ganzzahlige Zahl.
Gebräuchlich verwendet wird int32, Dezimal.

Ob 1/3*3 gleich 1 oder 0,9999 ist, hängt vom Datentyp ab.
----- [Array]-----
system.Array-Array
System.Arraylist-Arraylist ändert sich häufig, wie zum Beispiel ständig neu schreiben, anhängen oder löschen, Sie müssen dies verwenden. Die Geschwindigkeit ist relativ hoch.
System.Collections.Generic.HashSet deduplizierte Arrays. Genauso wie das Set-Objekt von Python.

-----【Form】-----
1 Befehlsausgabe. Zum Beispiel dir, get-process.
2. Beim Schreiben von Skripten verwenden wir Objekte und Attribute, um zu konstruieren.

----- [Andere] -----
Hash-Tabellen, Dateien usw.



2 hat Attribute. Attribute sind Argumente und kleiner als Strings. Bevor es keine Attribute mehr gibt, müssen wir Strings mit [brain-burning regular], genannt [deduktionsstring], filtern und filtern. Wenn du Attribute hast, brauchst du sie nicht.
3 Es gibt einen Weg. Die Methode ist das Programm, der Code. Du musst es nicht selbst umschreiben. Bat ist definitiv nicht gut, das kann nicht sein, es gibt auch ein persönliches Schreiben, unzuverlässig, wage es nicht, es zu benutzen.
Methoden können selbstgeschriebene ps-Funktionen sein, selbstgeschriebene Methoden in ps-Klassen.
Die Methode, die du selbst schreibst, kann vorübergehend in eine Drittanbieter-Klasse eingegliedert werden.
Die Methode, die du selbst schreibst, kann vorübergehend in die .net-Klasse eingefügt werden.

Was sind die Nachteile der objektorientierten Modelle?
Der Prediger bringt Powershell Leuten bei, die winxp verwenden. Die Person sagte, PowerShell sei nicht gut, das Objekt sei zu speicherintensiv, und sie hatte recht.
Im cmd gebe ich 100 Dateinamen (Strings) mit dir zurück. In PowerShell benutze ich Dir, um 100 Dateiobjekte zurückzugeben, und PowerShell beansprucht viel Speicher.
Aber jetzt ist es anders:
1. Unnötige Inhalte sollten nicht in Variablen existieren. Oder zerstöre es sofort nach der Benutzung, um den Speicherverbrauch zu reduzieren.
2. Der Gedächtnisverlust reicht aus. Da die CPU-Leistung nicht mehr steigen kann, erhöhen wir hektisch den Speicher, um Platz gegen Zeit zu ersetzen.
3. Wir wollen leistungsfähigere Funktionen, und Objektorientierung ist heutzutage das Grundlegendste. Welche ist nicht objektorientiert, py, php, java, .net, c++?

Zusammenfassung:
1 Objekte sind größer und speicherintensiver als Strings.
2. Es gibt mehr Methoden für Objektorientierung und stärkere Funktionen.
3 Attribute sind kleiner als die Stringgranularität, was äußerst praktisch zu bedienen ist. Vermeidete die [verrückten Gebrauch von gehirnbrennendem Filter zum Filtern] Strings!


=== Verrückter Einsatz von gehirnbrennenden Stammspielern zum Filtern von Beispielen, Fledermausversion des Ping-Standard-Gateways ===
@echo Off&SetLocal Ermöglichung verzögerter Expansion
Echo sucht nach dem Standard-Gateway...

für /f "usebackq delims=" %%i in ('ipconfig /all') mach (
echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul
wenn "!errorlevel!" =="0" (
für /f "Tokens=2 Delims=:" %%a in ("%%i") Do for /f "Delims= " %%m in ("%%a") Do set ipgate=%%m
)
)

Das Echo-Standard-Gateway lautet: !ipgate!
=========== das Standard-Gateway.ps1 gepingt============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
& ping.exe $ Standard-Gateway

# Test-Verbindung $ Standard-Gateway
=======================






F: Auch wenn objektorientiert so gut ist, woher kommen diese Objekte?
A: Aus der .net-Bibliothek.


---------- Kapitel 3 Einführung in .NET --------------


F: Wie viele Versionszweige hat .NET Core?
Ein:
Derzeit gibt es drei Versionen.
.NET 2.0 Die neueste Version von .NET 3.51
.NET 4.0 Die neueste Version von .NET 4.70
.NET Core 1.x Die neueste Version von .NET 1.2 für Apple-Systeme, Linux-Systeme und eingebettete Systeme.
.NET Core 2.x Die neueste Version von .NET 2.0 für Apple-Systeme, Linux-Systeme und Embedded-Systeme.



F: Wie viele funktionale Zweige hat .net?
Ein:
Desktop-Branch in .NET. WinForm. Zur Entwicklung von Desktop-Fenstern.
Klangbibliothek
asp.net in .NET und .NET Core. Webserver-Funktionsbibliothek. Früher habe ich einen B/S-Webserver geöffnet.
F# in .NET und .NET Core. Enthält mathematische Bibliotheken, trigonometrische Funktionsbibliotheken usw.
PowerShell in .NET und .NET Core. Enthält gängige Systemverwaltungsschnittstellen wie Skriptdateien.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 und höher
◦öffne SUSE 42 und höher
◦Arch Linux (archl inux hat keine Versionsnummer)
◦LINUX docker Container
◦Linux AppImage-Container (portable Anwendungs-Einzelbinär) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


F: Wie verbindet sich ein .NET-Programm (C#-Programm) mit einem MySQL-Server?
Ein:
Gehen Sie auf die offizielle MySQL-Website, um den Connector für die .NET-Sprache herunterzuladen.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Füge die MySql.Data-Klasse zu .net hinzu und füge die Datenbankoberfläche hinzu.



Schlussfolgerung:
WinXP-Rechner installieren Sie zuerst .net 3.51, win7 und win2008, zuerst .net 4.62 oder höher.

.net gibt es schon seit vielen Jahren, und es gibt kaum eine Software, die .NET unterstützt als Java. Alle .net-Zweige, Schnittstellen (Datenbanken, WeChat usw.). )
Diese DLLs, diese Bibliotheken, PowerShell können aufgerufen werden. Es ist genau dasselbe wie die exe, die in C# geschrieben ist.


F: Zusätzlich zur .NET-Branch-Schnittstelle, welche eigenen Bibliotheken (Module) sind PowerShell eigen?
Ein:
Bitte siehe das nächste Kapitel.

---------- Kapitel 4 verwendete häufig eingebaute Bibliotheken, externe Bibliotheken und Drittanbieter-Bibliotheken in PowerShell --------------

Missionarische Hilfe:
Dieses Kapitel kann nicht besprochen werden, sondern ist lediglich eine Liste von Bibliotheken und Handbüchern. Speichern Sie dieses Kapitel als Lesezeichen. Nachdem Sie sich diese Bibliotheken angesehen haben, wissen Sie, was PowerShell leisten kann.



Win2012 manuelle Adresse: (am häufigsten verwendetes Werbemodul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
AD Benutzergruppenverwaltung, DHCP, DNS, Drucker, Dateifreigabe, IIS, Festplatte, Netzwerkkarte,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-Spam und Anti-Malware 59  
Client-Zugriff 100
Extension Agent 4
E-Mail-Adressen und Adressbücher 37
Föderation und Hybridkonfiguration  
Hohe Verfügbarkeit  
Postfluss  
Briefkasten  
Mailbox-Datenbank  
Postfachserver  
Umziehen und migrieren  
Organisation  
Berechtigungen  
Richtlinien und Einhaltung  
Sicherheit  
Servergesundheit, Überwachung und Leistung  
Teilen und zusammenarbeiten  
Vereinheitlichte Botschaft  
Nutzer und Gruppen  



sqlserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx



lync2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx




SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx



Amazon Virtual Machines, AWS, Microsoft Virtual Machines, Azure, Hyper-V, VMware vSphere und Enterprise-Virtual-Machines.


Kunden:
Dienste, Prozesse, Protokolle, Registrierungen, Dateiverzeichnisse, Fernverwaltung. Zeitlich begrenzte Aufgaben.



Internet:
FTP, Mail, SSH-Client-Plug-in für die Linux-Serververbindung.


Text:
XML, HTML, CVS, JSON, EXCEL usw.


Text 2 Stimme


Grafische Benutzeroberfläche.


Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/


Offizielle Website der PowerShell-Softwarequelle --- offizielle PowerShell-Bibliothek.
https://www.powershellgallery.com


Die anderen Niu X-Bibliotheken sind alle auf GitHub verfügbar. Außerdem veröffentlichen die Missionare regelmäßig die [Niu x Magic Weapon] des [Hidden Foot Pavilion], eine nützliche Drittanbieter-Bibliothek von PowerShell.


---------- Kapitel 5 Anfänger müssen lernen, wie man den Umgang mit Kommandos unterstützt--------------


F: Woran erkenne ich die PowerShell-Version?
Ein:
$PSVersionTable



F: Ich kenne das Modul nicht, wie findet man es?
Ein:
get-module -ListVerfügbar.


F: Wie finde ich Befehle, wenn ich nur einen Teil davon kenne?
Ein:
get-command *Service*



F: Ich kenne den Befehl, aber ich weiß nicht, welche Parameter im Befehl enthalten sind – wie kann man die Parameter auflisten?
Ein:
get-help write-host -Parameter *
Show-Command Schreib-Moderator


F: Ich kenne den Parameter, aber ich weiß nicht, welcher Befehl diesen Parameter hat – wie finde ich den Befehl?
Ein:
get-command -ParameterName-Codierung



F: Wie bekomme ich Hilfe bei einem Befehl über die Kommandozeile?
Ein:
Hol-Hilfe Get-Date

-Beispiele für Befehle
-Online-Online-Handbuch




F: Ich kenne die Attributmethode des Befehls nicht (ich kenne das Objekt nicht), wie finde ich es?
Ein:
"ABC" | Get-Member
get-date | Get-Member



F: Wo ist das chinesische .NET-Handbuch?
Ein:
msdn。 Die grundlegendsten Eigenschaften und Methoden der Strings sind im Handbuch zu finden.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Kapitel 6 Einführung in gängige Gebote --------------

Der erste Befehl, den man lernen muss, ist dir
F: Warum den PowerShell-Leiter [d.h. Get-ChildItem] statt cmd-Leiter verwenden?
Ein:
Objektorientiert, starke Methode und viele Eigenschaften.
$file = dir a:\pscode\temp183\aaa.txt
$file. FullName #返回全路径属性
$file. BaseName #返回文件名属性
$file. Erweiterung #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



Die erste Syntax, die man lernen sollte, ist die Array-Syntax. $a = @(xxx Befehl)
F: Manchmal muss man [zeichenbasierte externe Befehle] verwenden, um die Rückgabewerte in Arrays nach Verhaltenseinheiten zu unterteilen.
Ein:
$a = @(ipconfig)
$a[8] #第9行


Verwendung von get-childitem:
Hinzugefügte Parameter in PowerShell 3.0 und höher

get-childitem d:\xxx -file #过滤, nur Ausgabedateien
-Verzeichnisfilterung, nur Ausgabeverzeichnisse
-Versteckte Filterung, nur Ausgabe versteckt


F: Eine Datei öffnen, nach Verhalten segmentieren, in ein Array einfügen?
Ein:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



F: Eine Datei als großen String öffnen und die gesamte Variable speichern?
Ein:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


$a,$b,$c = 1,2,3


F: Wie führe ich Befehle im Hintergrund aus?
Ein:
In der Antike gab es einen cmd-/c-"Befehl".
Jetzt gibt es Powershell /c "Befehl" oder powershell -c "Befehl".
PowerShell -file "script.ps1" -argument 1 aaaa -parameter 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


F: Ich möchte das Skript mit einem anderen lokalen Benutzer ausführen, aber PowerShell hat keine Runas. Ähnliche Exe-Befehle?
Ein:
Es gibt verschiedene Sitzungen in PowerShell.
IP + Port + Benutzername + Passwort = eine Sitzung, ich muss nur den Benutzernamen ändern, das Passwort ändern, und du kannst die Berechtigungen ändern. Weil Berechtigungen an den Nutzer gebunden sind.
Ebenso muss ich nur n Sitzungen erstellen, ohne den Nutzer zu wechseln.
Die wichtigste new-pssession hat den Parameter -Credential, gib das Benutzerpasswort ein, was nicht dasselbe ist wie runas. Ist Exe genauso? Was ist sonst noch SmbSession?
Deshalb denke ich nicht, dass es notwendig ist, Runas in PowerShell zu verwenden. exe。
Man muss diese Befehle einfach mit Session und Credential verwenden, richtig?

Überprüfen Sie die Befehle mit dem Namen [Credential] im Parameternamen:
get-command -ParameterName Credential

Sehen Sie Befehle mit dem [Session]-Charakter im Befehl an:
Get-Command *Sitzung*


F: Wie verschicke ich eine E-Mail mit PowerShell?
Ein:
Send-MailMessage -Betreff 'Subject'
-Von "dein Hotmail-Konto @hotmail.com" -Zu "deine QQ-E-Mail @qq.com" '
-SmtpServer "smtp.live.com" -Port 587 -useSsl -Zugangsdaten "Ihr Hotmail-Konto @hotmail.com" '
-Anhänge $Attachments -BodyAsHTML -Body $HTML den Inhalt der E-Mail

Anmerkung:
1 Verwendungxxx@QQ.com+ Dein QQ-Passwort + der obige Befehl Das Senden einer E-Mail funktioniert nicht. Denn für die Sicherheit von QQ-Passwörtern benötigt Tencent unabhängige E-Mail-Passwörter.  
2 Das Senden aus dem QQ-Postfach ist standardmäßig nicht möglich. Es ist deaktiviert, und du musst SMTP in den Einstellungen aktivieren.
3 PowerShell 3.0 und höher unterstützen nur Port-Parameter. Für Win7 musst du zuerst die neueste Version von PS installieren




F: Überwachen Sie Windows CPU, Festplatte, Netzwerk, IO usw.
Ein:
Performance Monitor oder
Get-Counter ruft Leistungszählerdaten sowohl von lokalen als auch von entfernten Computern ab.

F: Wie kann ich sehen, welche Kontergegenstände verfügbar sind?
Ein:
Das steht alles im Handbuch.
Überprüfen Sie, welche Hauptkategorien der Verwendungen gelten:
Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Tabelle CounterSetName


Zum Beispiel weiß ich jetzt, dass die Festplattenkategorie (PhysicalDisk) ist, und überprüfe dann die Unterkategorien auf der Festplatte, verwende:
(get-counter -listSet PhysicalDisk). Wege




F: Wie sehe ich die Protokolle an?
Ein:
Event Viewer, oder
get-eventlog



F: Wie führe ich Strings aus?
Ein:
$cmd 1 = 'xxxx'
Invoke-Expression $cmd 1


Nun, wir haben viel über einzelne Befehle gelernt, schauen wir uns die Ausführung von Powershell-Skripten an.


---------- Kapitel 7 PS1-Skripting, Debugging und Ausführen --------------
Ein Skript ist eine Kombination und Überlagerung von Befehlsanweisungen. Das Skript ist wie Klebstoff, herumgehen und nach anderen suchen, die sie anrufen können, nach Rädern suchen, um das Auto zusammenzubauen. Statt Räder herzustellen, die andere benutzen können.



Cainiao fragte: Wie schreibt man ein Drehbuch?
Der alte Vogel antwortete:
1 Die Details des Problems müssen geklärt werden. Zum Beispiel: Mondkuchen machen.
2 Die Problemlösungsideen sind ebenfalls im Grunde abgeschlossen. Mehl und Wasser, die Füllung dazugeben, dampfen.
3 Welche Befehle und Variablen zu verwenden sind. Gib fünf Körner dazu, gib sie in eine Form und drücke sie aus.
4 Schreibe grob zuerst, schreibe grob.
5 Debugging bestanden.
6 Schreibe im Detail. Betrachten Sie die Fehlersituation plus den Fehlercode und die Fehlermeldung. Entfernen Sie fehleranfälligen Code, der nicht leicht kompatibel ist. Schreibe Code um, der nicht gut funktioniert.
Bis zu diesem Punkt sieht ein gutes Skript vielleicht nicht gut aus, aber es sollte sehr nützlich sein.
7 Fein gefertigt. Refaktorisierung, das Schreiben von wiederverwendeten Codeschnipseln in Funktionen. Schreibe Variablennamen um, damit die Leute sie auf einen Blick verstehen können. Formatiere den Code gut und mache den Einzug.


F: Welche IDE wird verwendet, um PS1 zu schreiben?
Ein:
Am meisten wird empfohlen, Visual Studio Code sowie das PowerShell-Plugin zu verwenden.
Funktionen: Code-Eingaben, Autovervollständigung, Codeformatierung, Einzug zur Wahl von Leerzeichen oder Tabulatur, Dateikodierungseinstellungen.
Es gibt ein Plugin namens FTP-sync, das PS1-Skripte im VSCode von Win schreiben und sie beim Speichern automatisch mit dem Linux-Verzeichnis synchronisieren kann.



F: Welche Werkzeuge werden zum Debuggen der PS1 verwendet?
Ein:
Das am meisten empfohlene PowerGui Life verwendet keine Lokomotive, selbst wenn es ein Hero ist, springt das PS-Skript ebenfalls und meldet einen Fehler!
VSCode ist auch in Ordnung



F: Welche Werkzeuge verwenden Sie für die Code-Formatierung?
Ein:
Alles, was eingerückt werden sollte, ist eingerückt, und die Gleichheitszeichen sind ausgerichtet.

PowerShell ISE + ISE Plugin [ISESteroids]

Installation:
Install-Module -Name ISESteroids

ISE läuft:
Start-Steroide





F: Welche Werkzeuge verwenden Sie, um die Codefarbe schön zu gestalten?
Ein:
1 Verwenden Sie die oben genannten Werkzeuge, um den Code zu formatieren.
2 Verwenden Sie PowerShellise + Missionary DIY Color Matching 2016 Edition.
3 Nimm das Bild. Der ansprechendste und schönste farbige PowerShell-Code der Welt wird produziert.

Alle oben genannten IDEs sind auf Chinesisch.




F: Wie benenne ich ein Skript? xxx.ps1
Ein:
Es wird empfohlen, mit 1---2 Buchstaben zu beginnen und für den Rest den chinesischen Dateinamen zu verwenden. z. B. [BF sichert alle alten files_ und löscht .ps1 von vor 10 Tagen]
Auf diese Weise tippen Sie zuerst [bf] ein und drücken Sie dann auf Tab, um den Skriptnamen zu vervollständigen.




F: Wie aktiviere ich die PowerShell-Skriptausführungsberechtigung?
Ein:
echo Folgender Code kann im cmd mit Administratorrechten oder in PowerShell mit Administratorrechten ausgeführt werden.
Echo, wenn ich PowerShell Remote-Fernbedienung benutze. Sowohl die lokale Maschine als auch die entfernte Maschine müssen mit Administratorrechten ausgeführt werden.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -Befehl "Set-ExecutionPolicy -ExecutionPolicy Unrelimited"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -Befehl "Set-ExecutionPolicy -ExecutionPolicy Unrelimited"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -Befehl "Set-ExecutionPolicy -ExecutionPolicy Unrelimited"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -Befehl "Set-ExecutionPolicy -ExecutionPolicy Unrelimited"
Pause



F: Was sind die Nachteile der Lokomotive (powergui)?
Ein:
Hintergrundfarbe kann nicht eingestellt werden.




F: Was sind die Nachteile von vscode?
Ein:
$ und der Name der Variablen haben nicht die gleiche Farbe.
Debugging-Funktionen sind langsam und manchmal blockieren.




F: Was sind die Nachteile von ISE?
Ein:
Du kannst nicht wählen, ob du die Codierung speicherst oder konvertierst.
Einzug auf [Leerzeichen], [Tab] beides. In anderer Textbearbeitungssoftware wird Einzug angezeigt.




---------- Kapitel 8 Tatsächlicher Kampf-Drill --------------
Die Gruppe 6504748 und hat diesen Teil selbst geschrieben.

5. Beispiel 1: Den Dienst ein- und ausschalten
6. Beispiel 2: Kontrollfirewall (Öffnen, Schließen, Regel)
7. Beispiel 3: Setzen Sie eine Richtlinie (Passwortrichtlinie als Beispiel)



---------- Kapitel 9 – diese zusätzlichen Wahlfächer – interessieren Sie sich? --------------
PowerShell-Skript, Kommandozeilen-Argumente übergeben Werte und binden Variablen-Beispiele
http://www.cnblogs.com/piapia/p/5910255.html




Lass PowerShell jeweils nur ein Skript ausführen (Beispiel für gegenseitigen Ausschluss des Prozesses).
http://www.cnblogs.com/piapia/p/5647205.html



powershell-Charakteroberfläche, PowerShell plus WPF-Oberfläche, 2048-Spiel
http://www.cnblogs.com/piapia/p/5531945.html


Zwei Crawler in PowerShell
http://www.cnblogs.com/piapia/p/5367556.html



PowerShell-Skript: Zufälliger Passwortgenerator
http://www.cnblogs.com/piapia/p/5184114.html



Beispiel für einen PowerShell-rekursiven Algorithmus
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



PowerShell Sprachrechner
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Liste alle EFS-verschlüsselten Dateien auf. 2Entschlüsseln Sie alle EFS-verschlüsselten Dateien
http://www.cnblogs.com/piapia/p/4702514.html
Es ist ein Werkzeug, das für Systemadministratoren und Netzwerkadministratoren entwickelt wurde.
Nachdem ein Mitarbeiter seinen Arbeitsplatz verlassen hat, geht seine Festplatte davon aus, dass es 10.000 Dateien (Verzeichnisse) gibt, von denen 3 von EFS verschlüsselte Dateiverzeichnisse enthalten. Im Explorer sind diese drei Dateien grün.
Aber wenn man einen nach dem anderen auf (10.000 Kataloge) klickt, egal ob es grün ist oder nicht, ist man erschöpft.
Zu diesem Zeitpunkt verwendet der Netzwerkadministrator das WIN-Konto des Mitarbeiters, loggt sich am PC des Mitarbeiters an und verwendet dieses Skript, um alle EFS-verschlüsselten Dateien aufzulisten.


---------- Kapitel 10 Bitte stellen Sie eine Frage--------------
Meine Damen und Herren, wenn es etwas zu berichten gibt, verlassen Sie den Gerichtssaal ohne irgendetwas.



----------Kapitel 11 Linux Kapitel--------------

Missionar: Solange du die Linux-Version von PowerShell installieren kannst, brauchst du nur PS1-Skripte, keine SH-Skripte.
Auslegung:
1 Kurz gesagt, Bash hat nur Syntax, keine Befehle und Bibliotheken.
2 Bash hat nur 1 % Syntaxfunktionen, PowerShell kann das nicht implementieren. Das ist normal, keine zwei Blätter auf der Welt sind genau gleich.
Das bedeutet, du brauchst nur das PS1-Skript, kein Fehler.
3 Bash ist zu alt, dieselbe Funktion, Powershell kann implementiert werden, und es kann auch Zeit sparen, zum Beispiel 10.000 leere Karten, Powershell muss 90 % der Zeit sparen.
4 Lerne, /usr/bin/powershell statt /usr/bin/bash zu verwenden. Andere Linux-Befehle, Pipelines, alte Kung-Fu usw. werden genau wie in Bash verwendet.
5 Verwenden Sie nach und nach objektorientierte, einfache und leistungsstarke PowerShell-Befehle und -Bibliotheken, anstatt aufwendige Linux-Befehle oder beides. ---Das ist das allgemeine Prinzip, die allgemeine Gliederung.


F: Welche Linux-Versionen können PowerShell installieren?
Ein:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 und höher
◦öffne SUSE 42 und höher
◦Arch Linux (archl inux hat keine Versionsnummer)
◦LINUX docker Container
◦Linux AppImage-Container (portable Anwendungs-Einzelbinär) https://github.com/probonopd/AppImageKit





F: Warum wird gesagt, dass die Kommandozeile von win stärker ist als bei Linux?
Ein:
Befehle in 1 win haben sich zu objektorientiertem PowerShell entwickelt. Linux funktioniert noch nicht. Von win7 zu win2012r2 endet die Entwicklung.

2 Ich habe früher gehört, dass Unix viele Linux-Befehle hat und sehr leistungsfähig ist. Aber jetzt sage ich dir, dass Powershell-Befehle mindestens zehnmal so teuer sind wie Linux-Befehle. Jedenfalls habe ich mein ganzes Leben lang nichts gelernt.

3 Linux ist stärker graphabhängig und hat zu wenige Befehle. Und der Win-Befehl ist viel mehr als nur Linux.
3.1 In jedem Linux sind die Befehle im Mailserver immer vollständiger als in Exchange? Bequemer als Austausch?
3.2 Die DNS-Serverbindung von Linux ist nicht so bequem wie der DNS-Befehl win. Hat Bind einen [Befehl], um einen IPv4 A-Datensatz zu einem Domainnamen hinzuzufügen? Noch nicht abhängig von Webgrafiken?
Manche sagen, man solle nsupdate verwenden. Dabei geht es nicht darum, einen Text zu schreiben und ihn dann auszuführen. Was ist der Unterschied zwischen dem Ersetzen der [DNS-Zone-Datei] durch Sed und dem Neuladen der [DNS-Zone]?

4 In der neuen Version von win, oder in PowerShell, ist es alles [Befehl + Parameter]. Und der Großteil von Linux ist immer noch [sed-Text].
4.1 Nehmen wir als Beispiel die der Netzwerkkarte zugewiesene IP-Adresse.
NMCLI-Anschluss Hinzufügen des Typs Ethernet Con-Name NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
Ist das nicht bequemer, als die ifcfg-eth0-Datei mit sed zu scrapen?

5 Jede Sprache verarbeitet Daten, ebenso wie das Scripting. Mit Hilfe von Objekten ist PowerShell bequemer als awk. Shenma csv, excel, xml, json
SQL-Tabelle, NoSQL-Tabelle. HTML usw.




F: Wie implementiert PowerShell [sed -i "s/what to look for/replace with /g" Dateinamen]?
Ein:
@(Get-Content Dateiname) -ersetzen Sie 'aaa', 'bbb' | Set-Content-Dateiname $aaa
Das heißt, die Datei öffnen, ersetzen, speichern.



F: Warum nutzen immer weniger Menschen SED unter Linux?
Ein:
Argument 1: AWK kann SED ersetzen, aber SED kann AWK nicht ersetzen.
sed, das heißt, finde einfach die Substitution. awk hat für und Ähnliches, um komplexe Verarbeitung zu implementieren.

Argument 2: AWK verwendet den Standard-Regular, und der Regular von Sed ist derselbe wie der von Sed, aber die Teile sind unterschiedlich.
Das Erlernen von SED bedeutet, dass zwei Sätze unvereinbarer regulärer Standards im Gehirn gegeneinander kämpfen.



F: Also ist es richtig, AWK zu lernen?
Ein:
PowerShell zu lernen ist einfacher als AWK.
PowerShell verwendet [split and then split], [if and if], where-object, string.substing(), string[-3] usw.
Zerlege das Stringproblem Schicht für Schicht. Einfacher als Awk Normal.




F: Können Pipelines und AWK in PowerShell verwendet werden?
Ein:
Du kannst awk in PowerShell aufrufen, genau wie in Bash. Die alten Kampfkünste sind komplett Turin.



F: Wie implementiert man die Funktion [awk '{print $3}'] in PowerShell?
Ein:
($line -split "\s+|\t+") [0] #第一行
($line -split "\s+|\t+") [2] #第三行       

Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'


F: Wie implementiert man die Funktion [awk -f a.awk file] mit PowerShell?
Ein:
Im Wesentlichen handelt es sich dabei um eine Filterfunktion, die ein Rohr verwendet. In PowerShell wird dies als Filter oder Filter bezeichnet.
PowerShell unterstützt die Kombination aus Befehl + Pipe + Filter. Wie in Kommando 1 | Filter 1 | Kommando 2 | Filter 2 | Filter 3
Filterfilter1
{
AWK-ähnliche Funktionalität
}





F: Gibt es [xargs] in PowerShell?
Ein:
Die in der Pipeline verwendete Pipe-Variable heißt [$psitem], und ihr Alias ist [$_].
PowerShell verwendet foreach-object und $_, um die Funktion xargs zu implementieren.





F: Gibt es in PowerShell eine [<] [<<]-Nummer?
Ein:
Nein.
Vielleicht ist das [<]-Symbol von rechts nach links anti-menschliches Denken. Viele Befehle in PowerShell wurden von links nach rechts geändert.
Wenn get-random < (1..100) in PowerShell nicht legal ist, sollte der legale get-random -inputobject (1..100) oder 1 sein. 100 |get-random
Weniger als 1 % der ungewöhnlichen Befehle [müssen] auf das [<]-Symbol angewiesen sein, was durch das Aufrufen von cmd in PowerShell oder bash (PowerShell für Linux) in PowerShell erreicht werden kann.
Zum Beispiel $a = bash -x "Befehl 1 < Befehl 2" #linux
Zum Beispiel $a = cmd -c "Befehl 1 < Befehl 2" #cmd




F: Gibt es einen erwarteten Befehl in PowerShell? Wie verbindet man sich mit einem Linux-SSH-Server von Windows aus mit PowerShell?
Ein:
1. Ja. Für einige seltsame und teilweise Türantwort-Bedürfnisse gibt es Drittanbieter-Module.
2 Nein. PowerShell verwendet nicht den Befehl expect, sondern eine Sitzung.

Verwenden Sie Powershell + SSH Client-Bibliothek + IP + Port + Benutzername + Passwort, um diese Verbindung zu kombinieren und Befehle an diese Verbindung zu senden. Der Code lautet wie folgt:
$connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1

Diese Standardfunktionen wie (MongoDB, mysql, ssh, ftp, http, telnet usw.) verfügen über Treiber oder Module. PS und. .netprogram, über die Treiberverbindung, Befehle senden und Daten akzeptieren.
Die Vorteile der Verwendung von Modulen oder Treibern zum Senden und Empfangen von [Daten] sind:
Die Daten werden in ein .net-Objekt umgewandelt, das wiederum in ein PS-Objekt umgewandelt wird. Ansonsten sind alles nur Strings, und die [objektorientierten Kampfkünste] der PS-Sekte sind alle nutzlos.


Nehmen wir MongoDB als Beispiel: Was sind die Vorteile der Verwendung von Modulen oder Treibern zum Senden von Befehlen? Wer redet?
Ich finde, die Vorteile sind:
1 Multithreading. Der Hintergrundthread läuft und besetzt nicht den aktuellen Thread.
2. Wir können jederzeit die Sitzung auf halbem Weg trennen, anderen PS-Code, Funktionen ausführen und jederzeit zur Sitzung zurückkehren. Skripte sind flexibler zu schreiben und einfach zu debuggen.
3Session bringt mehrere Nutzer zusammen, und verschiedene Benutzer können unterschiedliche Serverberechtigungen haben.




F: Gibt es den Befehl su, runas in PowerShell? Wie führt man den Befehl eines anderen Benutzers mit PowerShell aus?
Ein:
Nein.
In PowerShell ist das Ausführen von Linux-nativen Befehlen und Pipelines mühelos. Zum Beispiel:
sshaaa@127.0.0.1"Ausgeführt mit Benutzer-AAA-Rechten, Befehl xxx"  
sshpass -p user_password sshaaa@192.168.1.1



F: Zwei Linux-Rechner mit SSHD? Wie verbindet man sich mit PowerShell und sendet Befehle?
Ein:
Zusätzlich zur oben genannten Methode können Sie auch die Methode verwenden, eine neue Linux-Sitzung zu erstellen. (Von Linux mit einem anderen SSHD verbunden)
Hinweis: Diese Methode erfordert die Bearbeitung der Datei /etc/ssh/sshd_config. Fügen Sie folgende Zeile hinzu
Subsystem-Powershell-Powershell -sshs -NoLogo -NoProfile
Danach starte ich den SSHD-Server neu.
Das ausführliche Handbuch finden Sie hier:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Befehl:
$connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath-Option
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


Zusammenfassung:
Win-Client, verbunden mit dem Linux-Server. Derzeit sind Module von Drittanbietern erforderlich, natürlich ist dies ein Modul in der offiziellen Bibliothek, benutze einfach das Installationsmodul PoshSSH.
Linux-Client, verbunden mit dem Linux-Server. Du musst die Datei /etc/ssh/sshd_config bearbeiten.
Linux-Client, verbunden mit einem Win-Server. Du musst den Dienst auf dem Server einschalten. Vertraue dem Server auf dem Client.
Win-Client, verbunden mit dem Win-Server. Du musst den Dienst auf dem Server einschalten. Vertraue dem Server auf dem Client.


F: Gibt es [grep] in PowerShell?
Ein:
Der Select-String-Befehl wird in PowerShell verwendet.
Aus Sicht der Codingierung allein haben select-string=smart, grep=dumm + einen harten Fehler :mrgreen:
Wenn es einen BOM-Header gibt, erkennt select-string automatisch den Dateikodierungstyp.
Wenn es keinen BOM-Header gibt, ist es nicht nötig, die Shell-Umgebung wie linux+grep zu ändern, und es ist nicht nötig, Dateien nach einem bestimmten Code zu speichern. Du musst nur den -Codierungsparameter entsprechend der Dateikodierung angeben.
Grep besitzt diese Funktion nicht, das heißt, es gibt einen harten Fehler bei [Dateikodierungstyp kann nicht angegeben werden].
Natürlich ist grep nicht nutzlos, grep hat einige Parameter, zusätzliche eindeutige Funktionen, select-string nicht, hier ist grep stärker als select-string.



F: Gibt es eine [Eval] in PowerShell?
Ein:
Verwenden Sie Invoke-Expression, um Strings in PowerShell auszuführen.



F: Gibt es in PowerShell ein Tail -f? Es ist möglich, die neu generierten Zeilen einer Datei in Echtzeit auszugeben.
Ein:
Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Warten



F: Ich möchte eine kleine Tastatur verwenden und außerdem ein 256-Farben-Terminal, wie sollte die Xbox eingerichtet werden?
Ein:
Terminal --- Terminal Typ --- [Kitten-256Farbe] oder [Export TERM=Knetmasse-256Farbe]
Terminal --- Tastatur --- Standard oder Linux.

Eterm-256color kann
gnome-256color funktioniert nicht
Konsole-256color funktioniert nicht
Putty-256color
PowerShell Missionary Original Teilen am 15.02.2017
RXVT-256COLOR funktioniert nicht
Screen-256color funktioniert nicht
ST-256COLOR
VTE-256COLOR funktioniert nicht
xterm-256color funktioniert nicht
Das gleiche Prinzip gilt für SecureCRT




F: Wer ist mächtiger, Shell oder Python?
Ein:
Jede hat ihre eigenen Stärken und kann sich ergänzen. Aber sie ergänzen sich nicht. Mehr dazu unten.


F: Warum eignet sich die Linux-Version von PowerShell besser für Betriebs- und Wartungspersonal, um Skripte zu schreiben? (Im Vergleich zur Linux-Version von Python)
Ein:
1 Python verfügt über objektorientierte Funktionen, und die Linux-Version von PowerShell ist verfügbar.

2 Python hat keine Kommandozeile.
2.1 Python kann nicht das Standardterminal für SSH sein, aber PowerShell für Linux schon. Siehe das Kapitel: "Zwei Linux-Rechner mit SSHD? Wie verbindet man sich mit PowerShell und sendet Befehle? 》
2.2 Die Verwendung von Shell-Befehlen (awk, grep usw.) in Python ist sehr umständlich. Man muss viel Py-Syntax und Code hinzufügen. PowerShell für Linux führt die awk-Befehle genau wie Bash aus.

3 Python hat keine Pipes. Es ist sehr umständlich, Werte zwischen n [Kommandozeilenprogramme] zu übertragen. Man muss viel Py-Syntax und Code hinzufügen. Die Linux-Version von PowerShell hat Pipelines, und das Ausführen von awk-Befehlen ist dasselbe wie Bash.

4 Python hat Version 2, Version 3 ist nicht mit Krebs kompatibel! Frage. PowerShell für Linux hat dieses Problem nicht.
4.1 Diese Fragen enthalten Programmierprobleme.

Schlussfolgerung:
Shell-Befehle wie grep sind nicht gut für die Programmierunterstützung, nicht so gut wie die oben genannten Codierungsprobleme in PowerShell zu Hause in PowerShell. Plus die oben genannten 2,3 Punkte.
Das macht Linux-Nutzer unwohl, aber nur sehr wenige verwenden externe Befehle in py. [Py Command Library] und [Shell Command] sind tot und können sich im Grunde nicht ergänzen. Die Linux-Version von PS ist anders.




F: Warum heißt es, PowerShell sei besser als Shell?
Ein:
1 PowerShell ist objektorientiert, und Eigenschaften geben direkt verfügbare Daten zurück. Dies ist viel seltener als in Zeichenprogrammiersprachen (Bat, Shell), die String-Deduktionen erfordern.
Geboren mit weniger [Inhalt, dem man entkommen muss].
2 String-Suchsubstitution: Es gibt Methoden in PowerShell, die kein Escapen erfordern, in der .NET-Klasse. Zum Beispiel:
[String]$a = 'abc\\def'
$b = $a.replace('\\','when')
#返回: [ABC als Def]
Um festzustellen, ob eine IP legitim ist, können Sie die TryParse()-Methode in der IPAddress-Klasse verwenden.
Kurz gesagt, mein Vorschlag ist, so viele .net-Methoden wie möglich zu verwenden, so wenig Regex wie möglich zu verwenden oder einfach einfache Regulars zu verwenden.
3 PowerShell verwendet ['] als Escape-Symbol. ['] wird seltener verwendet als [\] und viel seltener als Fluchtsymbol.
3.1 Beim Schreiben von Datenbankskripten gibt es mehr Konflikte von ['].
Zum Beispiel wird ['table'] mit ['t] kollidieren, zum Beispiel ['biao'] mit ['b], und ich habe es später mit ['table' gelöst].
4ps String-Suche und -Ersetzung, hat eine reguläre Engine, ist mit Linux kompatibel und nutzt auch [\] als Flucht.
Es gibt jedoch eine spezielle Zeichenketten-Escape-Funktion [[Regex]::Escape()], die zuerst entweicht, dann gefunden und ersetzt wird, und der Code ist sehr lesbar.
$Original String vor der Flucht = '\+\&*|]'
$escaped String = [regex]::escape($original String before escaping)
-------------
Schriftbeispiele
[String]$a = 'abc\\def'
$Original String vor der Flucht = '\'
$Escaped String = [Regex]::Escape($Original String Before Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'When')
$b #返回 [ABC Dangdang DEF]
-------------
5 Bash und Awk, jeder hat sein eigenes For, jeder hat seinen eigenen Fluchtweg. Zusammen wirkt A leicht auf B, und A schluckt B ab.
Es ist auch leicht, Probleme zu haben, wenn man auf ['], ["], [\] und [*] trifft.
Es ist, als würde man zwei Lagen lange Hosen tragen: Du ziehst eine Schicht an, und die andere Schicht bewegt sich auch, du musst auf ihre Kompatibilität achten.
Das ist Krebs und schwer zu lösen.
Aber dieses Problem kann bis zu einem gewissen Grad vermieden werden. Dafür muss die Person, die die Hülle geschrieben hat, das stinkende Problem beheben.
[Den AWK-Code separat in der .awk-Datei eintragen, nicht in die Kommandozeile]
PowerShell hat dieses Problem nicht, setze es in die Kommandozeile, gib es ins Skript, es hat keinen Effekt.








Vorhergehend:.net/C# verwendet Attribute, um einfaches AOP zu implementieren
Nächster:.net/c# Speedy IP Open Port Scanner v2.0 Ultimate-Version
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com