Programmering

Gå proff: Strømbrukerhåndboken til PowerShell

Hvis du har kjempet med Windows 10, har du utvilsomt hørt om PowerShell. Hvis du nylig har prøvd å gjøre noe fancy med Win7 / 8.1, kommer sannsynligvis også PowerShell. Etter mange år med å stole på Windows-kommandolinjen og kastede batchfiler, er det på tide å sette blikket mot noe kraftigere, mer adaptivt - bedre.

PowerShell er et enormt tillegg til Windows-verktøykassen, og det kan fremkalle litt frykt gitt den enorme størrelsen. Er det et skriptspråk, et kommandoskall, et gulvvoks? Må du koble en cmdlet med en nettbasert .Net-klasse for å kjøre med leverandører? Og hvorfor snakker alle støttedokumentene om administratorer - må jeg være en profesjonell Windows-administrator for å kunne bruke den?

Slappe av. PowerShell er kraftig, men det trenger ikke være skremmende.

Følgende guide er rettet mot de som har kjørt en Windows-kommando eller to eller jimmied en batchfil. Vurder det som en trinnvis transformasjon fra PowerShell nysgjerrig til PowerShell-kompatibel.

Trinn 1: Vri den opp

Det første du trenger er PowerShell selv. Hvis du bruker Windows 10, har du allerede PowerShell 5 - den siste versjonen - installert. (Win10 Anniversary Update har 5.1, men du vet ikke forskjellen med Fall Update's 5.0.) Windows 8 og 8.1 leveres med PowerShell 4, som er god nok til å få føttene våte. Installering av PowerShell på Windows 7 er ikke vanskelig, men det er ekstra forsiktig - og du må installere .Net Framework separat. JuanPablo Jofre beskriver hvordan du installerer WMF 5.0 (Windows Management Framework), som inkluderer PowerShell, i tillegg til verktøy du sannsynligvis ikke vil bruke når du starter, på MSDN.

PowerShell tilbyr to grensesnitt. Avanserte brukere vil gå for den fullstendige GUI, kjent som Integrated Scripting Environment (ISE). Nybegynnere serveres imidlertid best av PowerShell Console, et enkelt tekstgrensesnitt som minner om Windows-kommandolinjen, eller til og med DOS 3.2.

For å starte PowerShell som administrator fra Windows 10, klikk Start og bla ned listen over apper til Windows PowerShell. Klikk på den linjen, høyreklikk Windows PowerShell og velg Kjør som administrator. I Windows 8.1, se etter Windows PowerShell i Windows System-mappen. I Win7 er den i Tilbehør-mappen. Du kan kjøre PowerShell som en “normal” bruker ved å følge samme sekvens, men med et venstre klikk.

I hvilken som helst versjon av Windows kan du bruke Windows-søk til å se etter PowerShell. I Windows 8.1 og Windows 10 kan du sette den på Ctrl-X "Power-menyen" (høyreklikk på et tomt sted på oppgavelinjen og velg Egenskaper. I kategorien Navigering merker du av for Erstatt ledetekst). Når du har åpnet det, er det lurt å feste PowerShell til oppgavelinjen. Ja, du kommer til å like det så mye.

Trinn 2: Skriv inn gammeldagse Windows-kommandoer

Du vil bli overrasket over hvor mye Windows-kommandolinjesyntaks fungerer som forventet i PowerShell.

For eksempel, cd endrer kataloger (aka mapper), og dir viser fremdeles alle filene og mappene som er inkludert i den gjeldende mappen.

Avhengig av hvordan du starter PowerShell-konsollen, kan du starte på c: \ Windows \ system32 eller på c: \ Brukere \. I skjermbildeksemplet bruker jeg cd .. (legg merke til mellomrom) for å flytte opp et nivå om gangen, og løp deretter dir for å liste alle filer og undermapper i C: \ katalog.

Trinn 3: Installer hjelpefilene

Kommandoer som cd og dir er ikke innfødte PowerShell-kommandoer. De er aliaser - erstatninger for ekte PowerShell-kommandoer. Aliaser kan være nyttige for de av oss med fingerhukommelse som er vanskelig å overvinne. Men de begynner ikke engang å berøre de viktigste delene av PowerShell.

For å begynne å få en følelse av selve PowerShell, skriv hjelp etterfulgt av en kommando du kjenner. For eksempel skriver jeg på skjermbildet hjelp dir.

PowerShell-hjelp forteller meg det dir er et alias for PowerShell-kommandoen Get-ChildItem. Sikkert nok, hvis du skriver få barnebarnPS C: \> spør, ser du nøyaktig hva du så med dir kommando.

Som nevnt nederst på skjermbildet installeres ikke hjelpefiler for PowerShell automatisk. Å hente dem (du gjøre ønsker å få dem), logg deg på PowerShell i administratormodus, og skriv deretter inn oppdateringshjelp. Installasjon av hjelpefilene vil ta flere minutter, og det kan hende du mangler noen få moduler — Hjelp for NetWNV og SecureBoot kunne ikke installeres på testmaskinen min. Men når du er ferdig, vil hele hjelpesystemet være tilgjengelig.

Fra det tidspunktet skriver du inn få hjelp etterfulgt av kommandoen ("cmdlet" i PowerShell speak, uttales "command-let") som gjelder deg og ser all hjelpen til det elementet. For eksempel, få hjelp få barnebarn produserer et sammendrag av få barnebarn alternativer. Det ber deg også om å skrive inn varianter på temaet. Dermed følgende:

get-help get-childitem -eksempler

produserer syv detaljerte eksempler på hvordan du bruker få barnebarn. PowerShell-kommandoen

get-help get-childitem -detaljert

inkluderer de syv eksemplene, samt en detaljert forklaring av alle tilgjengelige parametere for få barnebarn cmdlet.

Trinn 4: Få hjelp til parametrene

I hjelp dir skjermbilde, har du kanskje lagt merke til at det er to oppføringer under SYNTAX til få barnebarn. Det faktum at det er to separate syntakser for cmdleten, betyr at det er to måter å kjøre cmdleten på. Hvordan holder du syntaksen atskilt - og hva betyr parametrene? Svaret er enkelt, hvis du kjenner trikset.

For å få alle detaljer om parametere for få barnebarn cmdlet, eller en hvilken som helst annen cmdlet, bruk -full parameter, slik:

get-help get-childitem -full

Det gir en linje for linje-liste over hva du kan gjøre med cmdleten og hva som kan (eller ikke!) Skje. Se skjermbildet.

Det er rimelig enkelt å se gjennom parameterdetaljene få barnebarn kan brukes til å hente "underordnede" elementer (for eksempel navnene på undermapper eller filnavn) på et sted du spesifiserer, med eller uten spesifikke tegnsamsvar. For eksempel:

get-childItem "* .txt" -recurse

henter en liste over alle “*.tekst”Filer i den gjeldende mappen og alle undermapper (pga -gjenopprette parameter). Mens følgende:

get-childitem “HKLM: \ Software”

returnerer en liste med alle registernøklene på høyt nivå i HKEY_LOCAL_MACHINE \ Programvare.

Hvis du noen gang har prøvd å komme inn i registeret ved hjelp av en Windows-kommandolinje eller en batchfil, er jeg sikker på at du kan se hvor kraftig denne typen tilgang må være.

Trinn 5: Spikre navnene

Det er en grunn til at cmdlets vi har sett så langt, ser like ut: få barnebarn, oppdateringshjelp, og få hjelp alle følger den samme verb-substantivkonvensjonen. Nådig, alle PowerShells cmdlets bruker denne konvensjonen, med et verb som går foran et (entall) substantiv. De av dere som brukte uker på å kjempe over inkonsekvent navngitte VB- og VBA-kommandoer, kan puste lettet ut.

For å se hvor vi skal, ta en titt på noen av de vanligste cmdlets (takket være Ed Wilsons Hey, Scripting Guy! -Blogg). Start med cmdlets som kommer inn i systemet ditt og trekk ut nyttig informasjon, som følgende:

  • innstillingssted: Angir gjeldende arbeidssted til et spesifisert sted
  • få innhold: Henter innholdet i en fil
  • få-vare: Henter filer og mapper
  • kopi-element: Kopierer et element fra ett sted til et annet
  • fjerne gjenstand: Sletter filer og mapper
  • få prosess: Henter prosessene som kjører på en lokal eller ekstern datamaskin
  • get-service: Får tjenestene som kjører på en lokal eller ekstern datamaskin
  • påkalle-webforespørsel: Henter innhold fra en webside på internett

Bruk for å se hvordan en bestemt cmdlet fungerer få hjelp, som i

få-hjelp kopi-varen -full

Basert på hjelpebeskrivelsen, kan du lett finne ut hva cmdleten vil ha. For eksempel hvis du vil kopiere alle filer og mapper fra Dokumenter til c: \ temp, vil du bruke:

kopi-element c: \ brukere \ [brukernavn] \ dokumenter \ * c: \ temp

Når du skriver inn den kommandoen, vil du se noen få fine detaljer innebygd i PowerShell-miljøet. For eksempel hvis du skriver kopi-i og trykk på Tab-tasten, PowerShell fylles ut Kopi-vare og et mellomrom. Hvis du skriver feil på en cmdlet og PowerShell ikke kan finne ut av det, får du en veldig grundig beskrivelse av hva som gikk galt.

Prøv denne cmdleten. (Det kan prøve å få deg til å installere et program for å lese "om" -boksen. I så fall ignorere det.)

påkalle-webforespørsel askwoody.com

Du får en kortfattet liste over nettsidens innholdsdeklarasjoner, overskrifter, bilder, lenker og mer. Se hvordan det fungerer? Legg merke til i få hjelp oppføring for påkalle-webforespørsel at påkalle-webforespørsel cmdlet “returnerer samlinger av skjemaer, lenker, bilder og andre viktige HTML-elementer” - nøyaktig hva du skal se på skjermen.

Noen cmdlets hjelper deg med å kontrollere eller grok PowerShell selv:

  • få kommando: Viser alle tilgjengelige cmdlets (det er en lang liste!)
  • få-verb: Viser alle tilgjengelige verb (venstre halvdel av cmdlets)
  • klar vert: Tømmer skjermen i vertsprogrammet

Ulike parametere (husk, få hjelp) lar deg redusere kommandoene og begrense alternativene som kan være til nytte for deg. Hvis du for eksempel vil se en liste over alle cmdletene som fungerer med Windows-tjenester, kan du prøve dette:

get-command * -service

Den viser alle verbene som er tilgjengelige med service som substantiv. Her er resultatet:

Get-Service

Ny tjeneste

Start service på nytt

Fortsett-service

Set-Service

Start-Service

Stopp-tjeneste

Suspend-Service

Du kan kombinere disse cmdlets med andre cmdlets for å grave ned i nesten hvilken som helst del av PowerShell. Det er der rør kommer inn i bildet.

Trinn 6: Ta inn rørene

Hvis du noen gang har brukt Windows-kommandolinjen eller slo gjennom en batchfil, vet du om omdirigering og rør. Enkelt sagt, både omdirigering (> karakter) og rør (den | tegn) ta utdataene fra en handling og hold den et annet sted. Du kan for eksempel omdirigere utdataene fra en dir kommando til en tekstfil, eller "rør" resultatet av en ping kommando til en finne, for å filtrere ut interessante resultater, slik:

dir> temp.txt

ping askwoody.com | finn “pakker”> temp2.txt

I den andre kommandoen ovenfor, den finne kommando ser etter strengen pakker i piped output fra en askwoody.com ping og stikker alle linjene som samsvarer i en fil som heter temp2.txt.

Kanskje overraskende, fungerer den første av disse kommandoene bra i PowerShell. For å kjøre den andre kommandoen, vil du ha noe slikt:

ping askwoody.com | velg strengpakker | ut-fil temp2.txt

Ved å bruke omdirigering og rør utvides funksjonene til Windows-kommandolinjen sterkt: I stedet for å bla uendelig nedover en skjerm på jakt etter en tekststreng, for eksempel, kan du sette sammen en Windows-kommando med piping som gjør kontrollen for deg.

PowerShell har en piping-evne, men det er ikke begrenset til tekst. I stedet lar PowerShell deg overføre et helt objekt fra en cmdlet til den neste, hvor et “objekt” er en kombinasjon av data (kalt egenskaper) og handlingene (metodene) som kan brukes på dataene.

Den vanskelige delen ligger imidlertid i å justere gjenstandene. Objekttypen som leveres av en cmdlet må samsvare med den typen objekter som er akseptert av den mottatte cmdleten. Tekst er en veldig enkel type gjenstand, så hvis du jobber med tekst, er det enkelt å stille opp elementer. Andre gjenstander er ikke så rudimentære.

Hvordan finne ut av det? Velkommen til få-medlem cmdlet. Hvis du vil vite hvilken type gjenstand en cmdlet produserer, rør den gjennom få-medlem. For eksempel hvis du prøver å finne ut prosessene som kjører på datamaskinen din, og du har begrenset alternativene til få prosess cmdlet. Slik finner du ut hva få prosess cmdlet produserer:

få prosess | få-medlem

Å kjøre den kommandoen produserer en lang liste med egenskaper og metoder for få prosess, men helt på begynnelsen av listen kan du se hvilken type objekt som få prosess skaper:

TypeName: System.Diagnostics.Process

Skjermbildet nedenfor forteller deg også det få prosess har egenskaper kalt Håndtak, Navn, NPM, PM, SI, VM, og WS.

Hvis du vil manipulere utdataene fra få prosess slik at du kan jobbe med den (i motsetning til at den viser en lang liste med aktive prosesser på skjermen), må du finne en annen cmdlet som vil fungere med System.Diagnostics.Prosess som innspill. For å finne en villig cmdlet bruker du bare ... vent på den ... PowerShell:

get-command -Parametertype System.Diagnostics.Process

Det produserer en liste over alle cmdlets som kan håndtere System.Diagnostics.Prosess.

Noen cmdlets er beryktet for å ta nesten alle slags input. Sjef blant dem: hvor-objekt. Kanskje forvirrende, hvor-objekt sløyfer gjennom hvert element som sendes ned rørledningen, en etter en, og bruker uansett utvalgskriterier du ber om. Det heter en spesiell markør $_. som lar deg gå gjennom hvert element i røret, en om gangen.

Si at du ønsket å komme opp med en liste over alle prosessene som kjører på maskinen din som kalles “svchost”- i PowerShell snakk, vil du matche på en Navn tilhørersvchost. Prøv denne PowerShell-kommandoen:

få prosess | hvor-objekt {$ _. Navn -eq “svchost”}

De hvor-objekt cmdlet ser på hver System.Diagnostics.Prosess element, sammenligner .Navn av den varen til “svchost”; hvis varen samsvarer, blir den spyttet ut på enden av røret og skrevet på skjermen. Se skjermbildet.

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