Programmering

Go pro: Strømbrugervejledningen til PowerShell

Hvis du har kæmpet med Windows 10, har du utvivlsomt hørt om PowerShell. Hvis du for nylig har forsøgt at gøre noget fancy med Win7 / 8.1, kommer PowerShell sandsynligvis også op. Efter år med at stole på Windows-kommandolinjen og kastede batchfiler, er det tid til at sætte dine synspunkter på noget mere kraftfuldt, mere adaptivt - bedre.

PowerShell er en enorm tilføjelse til Windows-værktøjskassen, og det kan fremkalde lidt frygt i betragtning af den enorme størrelse. Er det et skriptsprog, en kommandoskal, en gulvvoks? Skal du linke en cmdlet til en instantieret .Net-klasse for at køre med udbydere? Og hvorfor taler alle supportdokumenterne om administratorer - skal jeg være en professionel Windows-administrator for at gøre brug af det?

Slap af. PowerShell er stærk, men det behøver ikke være skræmmende.

Den følgende vejledning er rettet mod dem, der har kørt en Windows-kommando eller to eller jimmied en batchfil. Overvej det som en trinvis transformation fra PowerShell nysgerrig til PowerShell-kompatibel.

Trin 1: Skru den op

Den første ting, du har brug for, er selve PowerShell. Hvis du bruger Windows 10, har du allerede PowerShell 5 - den seneste version - installeret. (Win10 jubilæumsopdatering har 5.1, men du ved ikke forskellen med Fall Update's 5.0.) Windows 8 og 8.1 leveres med PowerShell 4, hvilket er godt nok til at få dine fødder våde. Installation af PowerShell på Windows 7 er ikke svært, men det er ekstra forsigtigt - og du skal installere .Net Framework separat. JuanPablo Jofre beskriver, hvordan du installerer WMF 5.0 (Windows Management Framework), som inkluderer PowerShell, ud over værktøjer, som du sandsynligvis ikke bruger, når du starter, på MSDN.

PowerShell tilbyder to grænseflader. Avancerede brugere vil gå efter den fuldblæste GUI, kendt som Integrated Scripting Environment (ISE). Begyndere serveres dog bedst af PowerShell Console, en simpel tekstgrænseflade, der minder om Windows-kommandolinjen eller endda DOS 3.2.

For at starte PowerShell som administrator fra Windows 10 skal du klikke på Start og rulle ned på listen over apps til Windows PowerShell. Klik på den linje, højreklik på Windows PowerShell, og vælg Kør som administrator. I Windows 8.1 skal du kigge efter Windows PowerShell i Windows System-mappe. I Win7 er det i mappen Tilbehør. Du kan køre PowerShell som en “normal” bruger ved at følge den samme sekvens, men med et venstre klik.

I enhver version af Windows kan du bruge Windows-søgning til at lede efter PowerShell. I Windows 8.1 og Windows 10 kan du placere det på din Ctrl-X “Power-menu” (højreklik på et tomt sted på proceslinjen og vælg Egenskaber; på fanen Navigation skal du markere afkrydsningsfeltet for Erstat kommandoprompt). Når du har åbnet det, er det en god ide at fastgøre PowerShell til din proceslinje. Ja, du vil kunne lide det så meget.

Trin 2: Skriv gammeldags Windows-kommandoer

Du vil blive forbløffet over, hvor meget Windows-kommandolinjesyntaks fungerer som forventet i PowerShell.

For eksempel, cd skifter mapper (aka mapper) og dir viser stadig alle de filer og mapper, der er inkluderet i den aktuelle mappe.

Afhængigt af hvordan du starter PowerShell-konsollen, kan du starte ved c: \ Windows \ system32 eller kl c: \ Brugere \. I eksemplet på skærmbilledet bruger jeg cd .. (bemærk mellemrummet) for at flytte et niveau ad gangen, og kør derefter dir for at liste alle filer og undermapper i C: \ vejviser.

Trin 3: Installer hjælpefiler

Kommandoer som cd og dir er ikke native PowerShell-kommandoer. De er aliasser - erstatninger for ægte PowerShell-kommandoer. Aliaser kan være nyttige for os med fingerhukommelse, der er svær at overvinde. Men de begynder ikke engang at røre ved de vigtigste dele af PowerShell.

For at begynde at få en fornemmelse for selve PowerShell skal du skrive Hjælp efterfulgt af en kommando, du kender. For eksempel skriver jeg på skærmbilledet hjælp dir.

PowerShell-hjælp fortæller mig det dir er et alias for PowerShell-kommandoen Get-ChildItem. Sikker nok, hvis du skriver få barnebarn ved PS C: \> hurtig, du ser nøjagtigt, hvad du så med dir kommando.

Som bemærket nederst på skærmbilledet installeres hjælpefiler til PowerShell ikke automatisk. For at hente dem (dig gør vil hente dem), skal du logge på PowerShell i administratortilstand og derefter skrive opdateringshjælp. Installation af hjælpefilerne vil tage flere minutter, og du mangler muligvis et par moduler — Hjælp til NetWNV og SecureBoot kunne ikke installeres på min testmaskine. Men når du er færdig, vil det fulde hjælpesystem være lige ved din telefon.

Fra det tidspunkt skal du skrive få hjælp efterfulgt af kommandoen ("cmdlet" i PowerShell tale, udtales "kommando-lad"), der vedrører dig, og se al hjælp til det element. For eksempel, get-help get-childitem producerer et resumé af få barnebarn muligheder. Det beder dig også om at skrive variationer på temaet. Således følgende:

get-help get-childitem-eksempler

producerer syv detaljerede eksempler på, hvordan man bruger få barnebarn. PowerShell-kommandoen

get-help get-childitem -detailed

inkluderer disse syv eksempler samt en detaljeret forklaring af alle tilgængelige parametre til få barnebarn cmdlet.

Trin 4: Få hjælp til parametrene

I hjælp dir skærmbillede, har du måske bemærket, at der er to lister under SYNTAX til få barnebarn. Det faktum, at der er to separate syntakser for cmdlet betyder, at der er to måder at køre cmdlet på. Hvordan holder du syntaksen adskilt - og hvad betyder parametrene? Svaret er let, hvis du kender tricket.

For at få alle detaljer om parametre til få barnebarn cmdlet eller enhver anden cmdlet, brug -fuld parameter som denne:

get-help get-childitem -full

Det giver en linje for linje-liste over, hvad du kan gøre med cmdlet, og hvad der kan (eller måske ikke!) Ske. Se skærmbilledet.

Det er med rimelighed let at se det ved at gennemse parameteroplysningerne få barnebarn kan bruges til at hente "underordnede" emner (såsom navnene på undermapper eller filnavne) på et sted, som du angiver, med eller uden specifikke karaktertilpasninger. For eksempel:

get-childItem "* .txt" -recurseur

henter en liste over alle “* .txt”Filer i den aktuelle mappe og alle undermapper (på grund af -gælder parameter). Der henviser til følgende:

get-childitem “HKLM: \ Software”

returnerer en liste med alle registreringsdatabasenøgler på højt niveau i HKEY_LOCAL_MACHINE \ Software.

Hvis du nogensinde har forsøgt at komme ind i registreringsdatabasen ved hjælp af en Windows-kommandolinje eller en batchfil, er jeg sikker på, at du kan se, hvor kraftig denne form for adgang skal være.

Trin 5: Spik navnene

Der er en grund til, at de cmdlets, vi hidtil har set, ser ens ud: få barnebarn, opdateringshjælpog få hjælp alle følger den samme verb-substantiv-konvention. Barmhjertigt bruger alle PowerShells cmdlets denne konvention, med et verb forud for et (ental) substantiv. De af jer, der tilbragte uger med at kæmpe over inkonsekvent navngivne VB- og VBA-kommandoer, kan trække vejret.

For at se, hvor vi skal hen, skal du se på nogle af de mest almindelige cmdlets (takket være Ed Wilsons Hey, Scripting Guy! -Blog). Start med de cmdlets, der når ind i dit system, og træk nyttige oplysninger ud som følgende:

  • sæt-placering: Indstiller den aktuelle arbejdsplads til en bestemt placering
  • få indhold: Henter indholdet af en fil
  • få-vare: Henter filer og mapper
  • kopi-vare: Kopierer et element fra et sted til et andet
  • fjern-element: Sletter filer og mapper
  • få-proces: Henter de processer, der kører på en lokal eller ekstern computer
  • få service: Henter tjenesterne, der kører på en lokal eller ekstern computer
  • påkalde-webforespørgsel: Henter indhold fra en webside på internettet

Brug for at se, hvordan en bestemt cmdlet fungerer få hjælp, som i

get-help copy-item -full

Baseret på dens hjælpebeskrivelse kan du let finde ud af, hvad cmdlet'en ønsker. For eksempel, hvis du vil kopiere alle dine filer og mapper fra Dokumenter til c: \ temp, ville du bruge:

kopi-element c: \ brugere \ [brugernavn] \ dokumenter \ * c: \ temp

Når du skriver denne kommando, ser du et par gode detaljer indbygget i PowerShell-miljøet. For eksempel, hvis du skriver kopi-i og tryk på tabulatortasten, PowerShell udfyldes Kopi-vare og et mellemrum. Hvis du fejlagtigt skriver en cmdlet, og PowerShell ikke kan finde ud af det, får du en meget grundig beskrivelse af, hvad der gik galt.

Prøv denne cmdlet. (Det kan prøve at få dig til at installere et program til at læse "om" -feltet. I så fald skal du ignorere det.)

påkalde-webforespørgsel askwoody.com

Du får en kortfattet liste over websidens indholdsdeklarationer, overskrifter, billeder, links og mere. Se hvordan det fungerer? Bemærk i få hjælp notering for påkalde-webforespørgsel at den påkalde-webforespørgsel cmdlet “returnerer samlinger af formularer, links, billeder og andre vigtige HTML-elementer” - nøjagtigt hvad du skal se på skærmen.

Nogle cmdlets hjælper dig med at kontrollere eller grok PowerShell selv:

  • få kommando: Viser alle tilgængelige cmdlets (det er en lang liste!)
  • få-verb: Viser alle tilgængelige verb (venstre halvdel af cmdlets)
  • klar vært: Rydder displayet i værtsprogrammet

Forskellige parametre (husk, få hjælp) lad dig nedbryde kommandoerne og indsnævre indstillinger, der kan være til nytte for dig. For eksempel for at se en liste over alle cmdlets, der fungerer med Windows-tjenester, skal du prøve dette:

get-command * -service

Den viser alle de verb, der er tilgængelige med service som substantiv. Her er resultatet:

Få service

Ny service

Genstart-service

CV-service

Set-Service

Start-service

Stop-service

Suspend-service

Du kan kombinere disse cmdlets med andre cmdlets for at grave ned i næsten enhver del af PowerShell. Det er her rør kommer ind i billedet.

Trin 6: Bring rørene ind

Hvis du nogensinde har brugt Windows-kommandolinjen eller slog igennem en batchfil, ved du om omdirigering og rør. Enkelt sagt, begge omdirigering (> karakter) og rør (den | tegn) tag output fra en handling og læg den et andet sted. Du kan for eksempel omdirigere output fra en dir kommando til en tekstfil, eller "rør" resultatet af en ping kommando til en finde, for at filtrere interessante resultater ud som sådan:

dir> temp.txt

ping askwoody.com | find "pakker"> temp2.txt

I den anden kommando ovenfor er finde kommando ser efter strengen pakker i den pipede output på en askwoody.com ping og stikker alle de linjer, der matcher i en fil, der hedder temp2.txt.

Måske overraskende fungerer den første af disse kommandoer fint i PowerShell. For at køre den anden kommando vil du have noget som dette:

ping askwoody.com | vælg strengpakker | ud-fil temp2.txt

Brug af omdirigering og rør udvider i høj grad Windows-kommandolinjens muligheder: I stedet for at rulle uendeligt ned ad en skærm på udkig efter en tekststreng, for eksempel, kan du sammensætte en piped Windows-kommando, der udfører visningen for dig.

PowerShell har en piping-kapacitet, men det er ikke begrænset til tekst. I stedet giver PowerShell dig mulighed for at overføre et helt objekt fra en cmdlet til den næste, hvor et "objekt" er en kombination af data (kaldet egenskaber) og de handlinger (metoder), der kan bruges på dataene.

Den hårde del ligger imidlertid i at tilpasse objekterne. Den type objekt, der leveres af en cmdlet, skal matche de slags objekter, der accepteres af den modtagende cmdlet. Tekst er en meget simpel form for objekt, så hvis du arbejder med tekst, er det nemt at foretage opstillinger. Andre objekter er ikke så rudimentære.

Hvordan finder man ud af det? Velkommen til get-medlem cmdlet. Hvis du vil vide, hvilken type objekt en cmdlet producerer, rør den igennem get-medlem. For eksempel, hvis du prøver at finde ud af de processer, der kører på din computer, og du har indsnævret indstillingerne til få-proces cmdlet, her finder du ud af, hvad få-proces cmdlet producerer:

get-proces | get-medlem

At køre denne kommando producerer en lang liste med egenskaber og metoder til få-proces, men i begyndelsen af ​​listen kan du se den type objekt, der få-proces skaber:

TypeName: System.Diagnostics.Process

Nedenstående skærmbillede fortæller dig også det få-proces har egenskaber kaldet Håndtag, Navn, NPM, OM EFTERMIDDAGEN, SI, VMog WS.

Hvis du vil manipulere output fra få-proces så du kan arbejde med det (i modsætning til at have det vist en lang liste med aktive processer på skærmen), skal du finde en anden cmdlet, der fungerer med System.Diagnostics.Process som input. For at finde en villig cmdlet skal du blot bruge ... vent på det ... PowerShell:

get-command -Parametertype System.Diagnostics.Process

Det producerer en liste over alle de cmdlets, der kan håndtere System.Diagnostics.Process.

Nogle cmdlets er berygtede for at tage næsten enhver form for input. Hoved blandt dem: hvor-objekt. Måske forvirrende, hvor-objekt sløjfer gennem hvert emne, der sendes ned i rørledningen, en efter en, og anvender de udvælgelseskriterier, du anmoder om. Der hedder en speciel markør $_. der lader dig gå igennem hvert emne i røret, en ad gangen.

Sig, at du ville komme med en liste over alle de processer, der kører på din maskine, der kaldes “svchost”- i PowerShell tale, vil du matche på en Navn ejendom afsvchost. Prøv denne PowerShell-kommando:

get-proces | hvor-objekt {$ _. Navn -eq “svchost”}

Det hvor-objekt cmdlet ser på hver System.Diagnostics.Process punkt, sammenligner .Navn af denne vare til “svchost”; hvis varen matcher, bliver den spyttet ud af enden af ​​røret og skrevet på din skærm. Se skærmbilledet.

$config[zx-auto] not found$config[zx-overlay] not found