Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Historesch sinn Kommando-Linn Utilities op Unix Systemer besser entwéckelt wéi op Windows, awer mat der Entstoe vun enger neier Léisung huet d'Situatioun geännert.

Windows PowerShell erlaabt Systemadministratoren déi meescht Routine Aufgaben ze automatiséieren. Mat et kënnt Dir Astellungen änneren, Servicer stoppen an starten, an och Ënnerhalt op déi meescht installéiert Uwendungen ausféieren. Et wier falsch déi blo Fënster als en anere Kommando-Interpreter ze gesinn. Dës Approche reflektéiert net d'Essenz vun den Innovatiounen, déi vu Microsoft proposéiert ginn. Tatsächlech sinn d'Méiglechkeete vu Windows PowerShell vill méi breet: an enger kuerzer Serie vun Artikelen wäerte mir probéieren erauszefannen, wéi d'Microsoft-Léisung sech vun den Tools ënnerscheet, mat deenen mir méi vertraut sinn.

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Schlëssel Features 

Natierlech ass Windows PowerShell haaptsächlech eng Skript-Shell, ursprénglech am .NET Framework a spéider op .NET Core gebaut. Am Géigesaz zu Shells déi Textdaten akzeptéieren an zréckginn, funktionnéiert Windows PowerShell mat .NET Klassen déi Eegeschaften a Methoden hunn. PowerShell erlaabt Iech gemeinsam Kommandoen ze lafen a gëtt Iech och Zougang zu COM, WMI, an ADSI Objeten. Et benotzt verschidde Späicheren, wéi zum Beispill de Dateiesystem oder de Windows Registry, fir Zougang zu deem sougenannte. Ubidder. Et ass derwäert ze notéieren d'Méiglechkeet fir PowerShell ausféierbar Komponenten an aner Uwendungen z'integréieren fir verschidde Operatiounen ëmzesetzen, inkl. duerch eng grafesch Interface. De Géigendeel ass och wouer: vill Windows Uwendungen bidden Zougang zu hire Management Interfaces iwwer PowerShell. 

Windows PowerShell erlaabt Iech:

  • Änneren Betribssystem Astellunge;
  • Verwalte Servicer a Prozesser;
  • Server Rollen a Komponenten konfiguréieren;
  • Software installéieren;
  • Managen installéiert Software duerch speziell Schnëttplazen;
  • Ausféierbar Komponenten an Drëtt Partei Programmer integréiert;
  • Erstellt Scripte fir d'Administratiounsaufgaben ze automatiséieren;
  • Schafft mam Dateiesystem, Windows Registry, Zertifikat Store, etc.

Shell an Entwécklung Ëmfeld

Et gëtt Windows PowerShell an zwou Formen: Nieft dem Konsolemulator mat enger Kommandoshell gëtt et eng Integrated Scripting Environment (ISE). Fir Zougang zum Kommandozeil-Interface ze kréien, wielt einfach déi entspriechend Ofkiirzung aus dem Windows-Menü oder lafen powershell.exe aus dem Run-Menü. Eng blo Fënster erschéngt um Bildschierm, merkbar anescht a Fäegkeeten vun der antediluvian cmd.exe. Et gëtt Autocompletion an aner Funktiounen vertraut fir Benotzer vu Kommando Shells fir Unix Systemer.

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Fir mat der Shell ze schaffen, musst Dir e puer Tastatur Ofkiirzungen erënneren:

  • D'Up an Down Pfeile scrollen duerch d'Geschicht fir virdru getippten Kommandoen ze widderhuelen;
  • De rietse Pfeil um Enn vun enger Zeil retypéiert de virege Kommando Charakter fir Charakter;
  • Ctrl+Home läscht den getippten Text vun der Cursorpositioun bis zum Ufank vun der Zeil;
  • Ctrl + End läscht Text vum Cursor bis zum Enn vun der Linn.

F7 weist eng Fënster mat getippten Kommandoen an erlaabt Iech ee vun hinnen ze wielen. D'Konsole funktionnéiert och mat Textauswiel mat der Maus, Copy-Paste, Cursorpositionéierung, Läschen, Backspace - alles wat mir gär hunn.

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Windows PowerShell ISE ass e komplett Entwécklungsëmfeld mat engem Tabbed a Syntax-markéiert Code Editor, Kommando Builder, agebauten Debugger an aner Programméierungsfreed. Wann Dir e Bindestrich no dem Kommandonumm am Entwécklungsëmfeld Editor schreift, kritt Dir all verfügbar Optiounen an der Dropdown-Lëscht mat enger Indikatioun vum Typ. Dir kënnt PowerShell ISE entweder duerch eng Ofkiirzung vum Systemmenü starten oder mat der ausführbarer Datei powershell_ise.exe.

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Cmdlets 

Am Windows PowerShell gëtt de sougenannte. cmdlets. Dëst sinn spezialiséiert .NET Klassen déi eng Vielfalt vu Funktionalitéit ubidden. Si gi genannt Action-Object (oder Verb-Noun, wann Dir et wëllt), an de Bindestrich getrennte Link gläicht dem Prädikat an dem Thema an natierleche Sprooche Sätz. Zum Beispill, Get-Help heescht wuertwiertlech "Get-Help", oder an engem PowerShell Kontext: "Show-Help". Tatsächlech ass dëst en Analog vum Man Kommando an Unix Systemer, an Handbücher an PowerShell mussen op dës Manéier ugefrot ginn, an net andeems Dir cmdlets mam --help oder /?-Schlëssel urufft Vergiesst net iwwer d'online PowerShell Dokumentatioun: Microsoft huet et ganz detailléiert.

Zousätzlech zu Get, benotzen cmdlets aner Verben fir Aktiounen ze bezeechnen (an net nëmme Verben, strikt geschwat). An der Lëscht hei drënner gi mir e puer Beispiller:

Add - addéieren;
Clear - kloer;
Enable - umaachen;
Disable - ausschalten;
New - schafen;
Remove - läschen;
Set - froen;
Start - lafen;
Stop - stoppen;
Export - exportéieren;
Import - importéieren.

Et gi System, Benotzer an optional Cmdlets: als Resultat vun der Ausféierung ginn se all en Objet oder eng Array vun Objeten zréck. Si sinn net casesensitiv, d.h. aus der Siicht vum Kommando Dolmetscher gëtt et keen Ënnerscheed tëscht Get-Help a Get-Hëllef. De Charakter ';' gëtt fir Trennung benotzt, awer et ass obligatoresch et nëmmen ze setzen wann e puer cmdlets op der selwechter Linn ausgefouert ginn. 

Windows PowerShell cmdlets ginn a Moduler gruppéiert (NetTCPIP, Hyper-V, etc.), an et gëtt e Get-Command cmdlet fir no Objekt an Handlung ze sichen. Dir kënnt Hëllef dofir weisen wéi:

Get-Help Get-Command

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Par défaut weist de Kommando kuerz Hëllef, awer Parameteren (Argumenter) ginn op cmdlets weidergeleet wéi néideg. Mat hirer Hëllef kënnt Dir zum Beispill detailléiert (Parameter -Detailed) oder voll (Parameter -Full) Hëllef kréien, souwéi Beispiller weisen (Parameter -Beispiller):

Get-Help Get-Command -Examples

Hëllef am Windows PowerShell gëtt vum Update-Help cmdlet aktualiséiert. Wann d'Kommandozeil ze laang ass, kënnen d'Cmdlet Argumenter op déi nächst geplënnert ginn andeems Dir de Service Charakter '`' schreift an Enter dréckt - just d'Schreiwen vum Kommando op enger Zeil fäerdeg ze schreiwen an op eng aner weiderzemaachen funktionnéiert net.

Hei sinn e puer Beispiller vu gemeinsame cmdlets: 

Get-Process - weisen Lafen Prozesser am System;
Get-Service - weisen Servicer an hire Status;
Get-Content - weist den Inhalt vun der Datei.

Fir heefeg benotzt cmdlets an extern Utilities huet Windows PowerShell kuerz Synonyme - Aliasen (vum Englesch. Alias). Zum Beispill, dir ass en Alias ​​​​fir Get-ChildItem. D'Lëscht vun de Synonyme enthält och Analoga vu Kommandoen aus Unix Systemer (ls, ps, etc.), an de Get-Help cmdlet gëtt vum Hëllefskommando genannt. Eng komplett Lëscht vu Synonyme kann mat dem Get-Alias ​​​​cmdlet gekuckt ginn:

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Scripten, Funktiounen, Moduler an d'PowerShell Sprooch

Windows PowerShell Scripte ginn als Einfache Textdateien mat enger .ps1 Extensioun gespäichert. Dir kënnt se net starten andeems Dir Duebelklickt: Dir musst riets klickt fir de Kontextmenü opzeruffen a wielt den Element "Run in PowerShell". Vun der Konsole musst Dir entweder de komplette Wee zum Skript spezifizéieren, oder an de passenden Verzeechnes goen an den Dateinumm schreiwen. Scripte lafen ass och limitéiert duerch Systempolitik, a fir déi aktuell Astellungen ze kontrolléieren, kënnt Dir de Get-ExecutionPolicy cmdlet benotzen, deen ee vun de folgende Wäerter zréckkënnt:

Restricted - Scripte starten ass behënnert (par défaut);
AllSigned - nëmmen de Start vun Scripten ënnerschriwwen vun engem vertrauenswürdege Entwéckler ass erlaabt;
RemoteSigned - erlaabt ënnerschriwwen an eegen Scripten ze lafen;
Unrestricted - erlaabt all Scripten ze lafen.

Den Administrateur huet zwou Méiglechkeeten. Déi sécherste beinhalt d'Ënnerschreiwe vun Scripten, awer dëst ass eng zimlech sérieux Zauberer - mir wäerten et an zukünfteg Artikelen beschäftegen. Loosst eis elo de Wee vum mannsten Widderstand huelen an d'Politik änneren:

Set-ExecutionPolicy RemoteSigned

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
PowerShell muss als Administrateur ausgeführt ginn fir dëst ze maachen, obwuel Dir d'Politik fir den aktuelle Benotzer mat enger spezieller Astellung änneren kënnt.

Skripte ginn an enger objektorientéierter Programméierungssprooch geschriwwen, déi Kommandoen no dem selwechte Prinzip benannt ginn wéi déi virdru berücksichtegt cmdlets: "Action-Object" ("Verb-Noun"). Säin Haaptzweck ass d'administrativ Aufgaben ze automatiséieren, awer et ass eng vollwäerteg interpretéiert Sprooch déi all déi néideg Konstruktiounen huet: bedingte Sprong, Loops, Variablen, Arrays, Objeten, Fehlerhandhabung, asw. All Texteditor ass gutt fir Scripting, awer et ass am beschten Windows PowerShell ISE auszeféieren.

Dir kënnt Parameteren un d'Skript passéieren, se erfuerderlech maachen a Standardwäerter setzen. Zousätzlech erlaabt Windows PowerShell Iech Funktiounen op déiselwecht Manéier wéi cmdlets ze kreéieren an ze ruffen, andeems Dir d'Funktiounskonstruktioun a Curly Klammern benotzt. E Skript mat Funktiounen gëtt e Modul genannt an huet eng .psm1 Extensioun. Moduler mussen an Verzeichnisser gespäichert ginn, definéiert an de PowerShell Ëmfeldvariablen. Dir kënnt se mat dem folgenden Kommando kucken:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Conveyors

Am leschte Beispill hu mir e Konstrukt benotzt deen den Unix Shell Benotzer vertraut ass. Am Windows PowerShell erlaabt d'vertikal Bar och den Ausgang vun engem Kommando un den Input vun engem aneren ze passéieren, awer et gëtt e wesentlechen Ënnerscheed an der Ëmsetzung vun der Pipeline: mir schwätzen net méi iwwer eng Rei vu Personnagen oder eng Aart vu Text. Built-in Cmdlets oder Benotzerdefinéiert Funktiounen ginn Objeten oder Arrays vun Objeten zréck, a kënnen se och als Input kréien. Wéi d'Bourne Shell a seng vill Nofolger, PowerShell mécht komplex Aufgaben méi einfach mat enger Pipeline.

Dat einfachst Pipeline Beispill gesäit esou aus:

Get-Service | Sort-Object -property Status

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Als éischt gëtt de Get-Service cmdlet ausgefouert, an dann all d'Servicer, déi et kritt, ginn un den Sort-Object cmdlet weidergeleet fir no der Statuseigenschaft ze sortéieren. Op wéi eng Argument d'Resultat vun der viregter Sektioun vun der Pipeline weidergeleet gëtt hänkt vu senger Aart of - normalerweis ass et InputObject. Dëst Thema wäert méi detailléiert an engem Artikel diskutéiert ginn, deen der PowerShell Programmiersprache gewidmet ass. 

Wann Dir wëllt, kënnt Dir d'Kette weiderfueren an d'Resultat vun der Sort-Object Operatioun un en aneren cmdlet weiderginn (si gi vu lénks op riets ausgefouert). Iwwregens, Windows Benotzer hunn och Zougang zu der Konstruktioun fir Paginatioun vertraut fir all Unixoids: 

Get-Service | Sort-Object -property Status | more

Lafen Aufgaben am Hannergrond 

Ganz oft ass et néideg fir e bestëmmte Kommando am Hannergrond ze lafen, fir net op d'Resultat vu senger Ausféierung an der Shell-Sessioun ze waarden. Windows PowerShell huet e puer cmdlets fir dëse Fall:

Start-Job - eng Hannergrond Aufgab starten;
Stop-Job - stoppen den Hannergrond Aufgab;
Get-Job - kuckt d'Lëscht vun den Hannergrond Aufgaben;
Receive-Job - d'Resultat vun der Ausféierung vun der Hannergrondtask kucken;
Remove-Job - läschen eng Hannergrond Aufgab;
Wait-Job - Transfert vun der Hannergrond Aufgab zréck op d'Konsol.

Fir eng Hannergrondtask unzefänken, benotze mir den Start-Job cmdlet a spezifizéieren e Kommando oder Set vu Kommandoen a Curly Klammeren:

Start-Job {Get-Service}

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Background Aufgaben an Windows PowerShell kënne manipuléiert ginn andeems se hir Nimm kennen. Als éischt, loosst eis léieren wéi se se weisen:

Get-Job

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Loosst eis elo d'Resultat vum Job Job1 weisen:

Receive-Job Job1 | more

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Alles ass zimlech einfach.

Remote Kommando Ausféierung

Windows PowerShell erlaabt Iech Kommandoen a Skripte net nëmmen um lokalen Computer auszeféieren, awer och op engem Ferncomputer, a souguer op enger ganzer Grupp vu Maschinnen. Et gi verschidde Weeër fir dëst ze maachen:

  • Vill cmdlets hunn e Parameter -ComputerName, awer op dës Manéier funktionnéiert et net, zum Beispill, e Fërderband ze kreéieren;
  • Cmdlet Enter-PSSession erlaabt Iech eng interaktiv Sessioun op enger Fernmaschinn ze kreéieren; 
  • Benotzt de cmdlet Invoke-Command Dir kënnt Kommandoen oder Skripte op engem oder méi Ferncomputer ausféieren.

Versioune vu PowerShell

PowerShell huet vill geännert zënter senger éischter Verëffentlechung am 2006. D'Tool ass verfügbar fir vill Systemer déi op verschidden Hardwareplattformen lafen (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux an OS X. Déi lescht Verëffentlechung 6.2 verëffentlecht den 10. Januar 2018. Scripte geschriwwen fir fréier Versioune si méiglecherweis a spéider Versioune funktionnéieren, awer Backporting ka problematesch sinn, well PowerShell eng grouss Zuel vun neie cmdlets iwwer d'Jore vun der Entwécklung agefouert huet. Dir kënnt d'Versioun vun der Kommandoshell erausfannen, déi um Computer installéiert ass mat der PSVersion Eegeschafte vun der $PSVersionTable agebauter Variabel:

$PSVersionTable.PSVersion

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Dir kënnt och den cmdlet benotzen:

Get-Variable -Name PSVersionTable –ValueOnly

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen
Datselwecht gëtt mam Get-Host cmdlet gemaach. Tatsächlech ginn et vill Méiglechkeeten, awer fir se ze benotzen musst Dir d'PowerShell Programmiersprache léieren, wat mir maachen an nächsten Artikel

Resultater 

Microsoft huet et fäerdeg bruecht eng wierklech mächteg Shell mat engem prakteschen integréierten Ëmfeld ze kreéieren fir Scripten z'entwéckelen. Et ënnerscheet sech vun den Tools déi eis an der Unix Welt vertraut sinn duerch déif Integratioun mat Betribssystemer vun der Windows Famill, souwéi mat Software fir si an der .NET Core Plattform. PowerShell kann eng objektorientéiert Shell genannt ginn, well cmdlets a Benotzerdefinéiert Funktiounen Objekter oder Arrays vun Objeten zréckginn a kënnen se als Input huelen. Mir mengen datt all Serveradministratoren op Windows dëst Tool sollten besëtzen: d'Zäit ass vergaang wéi se ouni d'Kommandozeil konnte maachen. Eng fortgeschratt Konsol Shell ass besonnesch gebraucht eis bëlleg VPS mat Windows Server Core, mee dat ass eng ganz aner Geschicht.

Wat ass Windows PowerShell a mat wat gëtt et giess? Deel 1: Schlëssel Fonctiounen

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Wéi eng Theme sollen als éischt an den nächsten Artikelen an der Serie behandelt ginn?

  • 53,2%Programméiere an PowerShell123

  • 42,4%PowerShell98 Funktiounen a Moduler

  • 22,1%Wéi ënnerschreiwen ech Är eege Scripten?51

  • 12,1%Schafft mat Repositories duerch Ubidder (Ubidder)28

  • 57,6%Automatiséieren Computerverwaltung mat PowerShell133

  • 30,7%Software Gestioun an embedding PowerShell ausführbar an Drëtt Partei Produkter71

231 Benotzer hunn gestëmmt. 37 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire