Maak een volledige PowerShell Utility
Dit artikel is een tekstversie van een les uit onze PowerShell en Active Directory Essentials videocursus (gebruik code ‘blog’ voor gratis toegang).
De cursus heeft bewezen erg populair te zijn omdat het je begeleidt bij het maken van een volledig Active Directory management utility vanuit first principles.,
haal de gratis Powershell-en Active Directory Essentials-videocursus
coderen met PowerShell
Het kan moeilijk zijn om aan de slag te gaan met PowerShell, vooral als je door de jaren heen gewend bent geraakt aan het werken met de cmd.exe command line of batch bestanden., In dit artikel (gebaseerd op Les 2 van onze PowerShell en Active Directory cursus), zullen we bespreken hoe en waarom je je vaardigheden moet upgraden naar PowerShell en de grondbeginselen van het starten van de PowerShell editor, het voltooien van commando ‘ s en hoe je altijd up-to-date hulp en voorbeelden kunt krijgen.
actieve opdrachten
De PowerShell-console is een interactieve console waarmee u verschillende opdrachten in real-time kunt uitvoeren. Het is niet nodig om een script in Kladblok te bewerken en vervolgens afzonderlijk uit te voeren, een big time saver.,
als je in een organisatie zit die al enige tijd bestaat, heb je waarschijnlijk al een aantal kleinere scripts, bat-bestanden of procedures die je vanuit de cmd uitvoert.exe commandoregel. Geweldig nieuws! Je kunt dat allemaal aanroepen vanuit PowerShell, dit was een diepe ontwerpbeslissing van Microsoft omdat ze probeerden de overgang zo gemakkelijk mogelijk te maken voor systeembeheerders.
in uiterlijk ziet de PowerShell-editor er net zo uit als de cmd.exe opdrachtprompt omgeving., De hulpprogramma ‘ s en vaardigheden die u al kent, werken nu binnen PowerShell zonder aanpassingen. Als je werkt aan het maken van de overgang van eenmalige taken naar het inschakelen van een meer geautomatiseerd netwerk, krijgen in de gewoonte van het afvuren van PowerShell in plaats van de command prompt is een goede manier om te beginnen.
al uw vaak gebruikte hulpprogramma ‘ s zoals ping, ipconfig, dir, etc zullen allemaal precies werken zoals u gewend bent.
hoe PowerShell-opdrachten te vinden
mensen houden van PowerShell omdat het zo krachtig is., Maar die kracht komt uit een absoluut krankzinnige hoeveelheid complexiteit. Het is gewoon niet haalbaar of praktisch voor iemand om alle verschillende commando ‘ s, cmdlets, vlaggen, filters en andere manieren om PowerShell te vertellen wat te doen onthouden.
gelukkig zijn er in de editor meerdere hulpmiddelen ingebouwd om u te helpen met dit feit om te gaan.
Tabvoltooiing
Het is niet nodig om alle verschillende commando ‘ s of de exacte spelling van een commando te onthouden., Typ
get-c
in de editor en druk op de TAB – toets-U zult alle commando ‘ s doorlopen die beginnen met wat u tot nu toe hebt ingevoerd. Dit werkt op elke sectie van het commando dat je probeert aan te roepen, de naam (zoals hieronder getoond), maar ook vlaggen en paden die je manipuleert om het gewenste resultaat te krijgen.
Get-Command
terwijl tabvoltooiing goed werkt, wat gebeurt er als u de naam van het commando dat u zoekt niet kent? In dat geval zou je een commando gebruiken voor het vinden van andere commando ‘ s: Get-Command.,
bij het zoeken naar commando ‘ s is het belangrijk om in gedachten te houden dat er een syntaxis is: werkwoord-zelfstandig naamwoord. Meestal zijn de werkwoorden dingen zoals Get, Set, Add, Clear, Write en Read en de zelfstandige naamwoorden zijn de bestanden, servers, of andere items binnen uw netwerk en toepassingen.
Get-Command is een discovery tool voor het verkennen van de beschikbare commando ‘ s op uw systeem.,
PowerShell ’s Command syntaxis
iemand beschreef ooit de Perl scripttaal als” executable line noise ” – een ongelooflijk handig hulpmiddel met een wild ondoorzichtige syntaxis en een navenant hoge leercurve.
hoewel niet helemaal tot dat niveau de traditionele opdrachtprompt in Windows is niet te ver weg. Beschouw een veelvoorkomende taak als het vinden van alle items in een directory waarvan de namen beginnen met de string ‘Foo’.
CMD: FOR /D /r %G in ("Foo*”) DO @Echo %G
voor en geven aan dat het een lus is.,
De /D vlag geeft aan dat dit voor Directories
De /r vlag geeft aan dat “Bestanden Geworteld op Pad”
Het patroon dat bepaalt de set van bestanden die moeten worden herhaald over aangeduid met “in”
@Echo geeft het script te schrijven uit het resultaat van elke lus en tot slot
%G is de “impliciete parameter” en is gekozen omdat in eerdere ontwikkelaars hadden al gebruikt de padnaam formaat letters a, d, f, n, p, s, t en x. Dus, beginnend met G is de traditionele geeft u de grootste verzameling van ongebruikte letters voor terug variabelen ( G, H, I, J, K, L, M) – met andere woorden, het is een lelijke hack.,
vergelijk dat met het equivalent van PowerShell:
PowerShell: Get-ChildItem -Path C:\Example -Filter ‘Foo*’
De uitvoer is functioneel hetzelfde, maar zelfs in dit triviale voorbeeld is het veel gemakkelijker om te begrijpen wat er gebeurt. Het is meteen duidelijk wat alle elementen in het commando doen en hoe je ze kunt wijzigen. Het enige wat niet voor de hand ligt is het * jokerteken (aanwezig in beide voorbeelden) dat aangeeft dat het patroon dat gebruikt wordt om items te matchen met ‘Foo’ moet beginnen en op iets anders moet eindigen.,
Het wordt steeds beter vanaf hier zoals zeggen dat je wilt weten hoe je alleen bestanden (geen mappen) in het pad te identificeren? Je zou kunnen graven de docs, Google rond en proberen om dat uit te zoeken met de command line versie, of als je in PowerShell, typ “-” en druk op het tabblad toets, rollen door de vlag opties totdat de voor de hand liggende oplossing verschijnt.
Eén grote tekenreeks vs Objecteigenschappen
Servers zijn niet goed voor iedereen als ze niet online zijn., Dat is waarom mensen een buitensporige hoeveelheid tijd besteden aan het doen alsof ze sonar-operators zijn op een onderzeeër en ze pingen (ja, dat is eigenlijk waarom het zo heet – https://en.wikipedia.org/wiki/Ping_(networking_utility)
terwijl de uitvoer van ping nuttig is (en je kunt ping gebruiken binnen PowerShell), aan het einde van de dag is de uitvoer gewoon een grote string – een reeks letter-en cijfertekens zonder gedefinieerde onderbrekingen tussen hen).
PowerShell heeft een commando dat analoog is aan ping, maar dat gegevens retourneert die gestructureerd zijn, waardoor het gemakkelijk is om mee te werken. Dat commando is Test-verbinding.,
hieronder kunt u de uitvoer zien van het pingen van een server (met de naam ‘DC’ op hun lokale netwerk) en de equivalente Test-Connection-uitvoer.
afgezien van het feit dat het makkelijker te lezen is, wat echt belangrijk is, is dat je deze informatie Nu kunt doorgeven aan een ander commando, het kunt opnemen in een groter hulpprogramma (zoals deze volledige cursus naar toe werkt) of gewoon aanpassen zodat het zinvoller is.,
Geting Help System
tot nu toe hebben we ons gericht op het manipuleren van een bepaald commando terwijl je er middenin zit (via tabvoltooiing), maar als je meer en meer gaat doen met PowerShell, worden de commando ‘ s complexer met nog complexere opties. Terwijl de syntaxis van het werkwoord helpt, helpt nog meer het hebben van:
1. Bijgewerkte documentatie
2. Veel voorbeelden
CmdLet Help
in de praktijk moet u Get-Command combineren (om te vinden wat u wilt gebruiken) en vervolgens Get-Help gebruiken om uit te vinden hoe u dat specifieke commando moet gebruiken.,
een praktisch voorbeeld van hoe u dit kunt doen: stel dat u alle actieve Windows-Services op een machine moet identificeren.
u begint met het zoeken naar opdrachten voor service-interactie:
Get-Command service
die u in een oogopslag zouden vertellen dat u op het juiste spoor was. Als je terugdenkt aan de standaard werkwoord-zelfstandig naamwoord syntaxis van PowerShell commando ‘s, wil je onderzoeken hoe je’Get-Service’ goed kunt gebruiken.
Microsoft ‘ s Office Get-Service documentatie
hiervoor gebruikt u een nieuw commando ‘Get-Help’., Begin met
“Get-Help -” te typen en druk op de Tab-toets
U zult snel de beschikbare opties vinden, de meest geschikte is” – Name”, dus u zou proberen:
Get-Help -Name Get-Service
onmiddellijk krijgt u de volledige syntaxis (en dat u Namen kunt opnemen of uitsluiten op basis van filters).,
Als je wilde diepe duik in een bepaald aspect van de opdracht kunt u een niveau omlaag analyseert verder met Get-Help met inbegrip van elke parameter
Get-Help -Name Get-Service - Parameter Name
PowerShell Helpen Voorbeelden
Omdat we alle mensen die dit lezen (geen strafbaar feit Google bot), hebben we dezelfde mentale hindernissen te overwinnen met betrekking tot patroonherkenning en het vertalen van abstracte opdracht syntaxis in wat wij eigenlijk een type om te bereiken wat we nodig hebben om de dag door.,
door “-examples” in te voeren of in te voegen met de “-detail” Vlag voor Get-Help, krijgt u een set voorbeelden te zien voor het gebruik van het commando.
Hier is de uitvoer voor:
Get-Help -Name Get-Service -Examples
Up To Date blijven
niets is frustrerender dan precies in te voeren wat een voorbeeld zegt dat je zou moeten doen, alleen om het niet te laten werken zoals gedocumenteerd. Vaak wordt dit veroorzaakt door verouderde documentatie, slechte voorbeelden of bijgewerkte bibliotheken.,
Omzeil deze frustraties en krijg nieuwe voorbeelden en fixes met het
update-help
Commando. je start het downloadproces.
volgende stappen met PowerShell
wilt u meer weten? Gebruik unlock code ‘blog’ voor gratis toegang tot de volledige PowerShell en Active Directory Essentials videocursus.