Powershell Essentials (Del 6)

Gjennom denne artikkelserien, har mitt mål vært å svare på noen av de vanligste spørsmålene om Windows Powershell i et forsøk på å gi deg en solid base av Powershell kunnskap. I denne artikkelen, jeg ønsker å bryte opp serien ved å snakke om skript og funksjoner

La ’ s. Start med å snakke om Powershell script. En Powershell script er egentlig ikke noe mer enn en tekstfil. Hovedideen bak Powershell script er at du kanskje trenger å automatisere oppgaver, og skript lar deg gjøre det uten å angi en serie kommando av manuelt. Skript er også nyttig når du vil lage store blokker av kode. I slike situasjoner, skript ikke bare gjøre koden din gjenbrukbare, de gir deg også muligheten til å redigere koden din.

Før jeg vise deg hvordan du oppretter en Powershell script, jeg trenger å ta et øyeblikk og snakke om gjennomføringsreglene. Når Powershell ble først annonsert for publikum (før det ble noen gang gjort tilgjengelig), husker jeg skriver at Powershell var intet mindre enn en drøm for malware forfattere. Jeg gikk på å teoretisere at Powershell vil gjøre det mye enklere å utvikle ondsinnet kode, og at malware forfattere snart ville være i stand til å gjøre ting som de tidligere bare hadde forestilt seg.

Det som holdt min apokalyptisk profeti fra å komme sant var henrettelsen politikk. En henrettelse politikk avgjør hvilke typer Powershell script kan kjøres på et system. Microsoft tilbyr fire forskjellige typer gjennomføringsreglene inkludert:

Restricted – Dette er standardutførelse. Det tillater ikke skript som skal kjøres. Powershell cmdlets kan bare legges inn manuelt

AllSigned &ndash.; Skript kan kjøres hvis de er signert av en klarert utgiver

RemoteSigned &ndash.; Skript kan lastes ned og kjøres hvis de er signert av en klarert utgiver

Fri &ndash.; Det er ingen restriksjoner på å kjøre Powershell script.

Det er verdt å merke seg at det er mulig å skape gjennomføring politiske scopes og å bruke Bypass parameter for å blokkere en henrettelse politikk eller å bruke Undefined parameter for å fjerne en henrettelse politikk fra den aktuelle ramme. Likevel, de fire prosessorpolicyinnstillinger er nevnt ovenfor er de mest brukte. Hvis du vil ha mer detaljert kontroll over kjøringen politikk så jeg anbefaler å sjekke ut denne TechNet-artikkelen.

Sette en henrettelse politikk er enkel. For eksempel, hvis du ønsker å sette henrettelsen politikken til ubegrenset, kan du bruke følgende kommando:

Set-ExecutionPolicy Fri

Så med det sagt, la ’ s snakke om skript. Som tidligere nevnt, er et skript noe mer enn en tekstfil. Den mest brukte filtypen for Powershell script er .PS1.

Hvis du tenker tilbake til den forrige artikkelen i denne serien, vil du huske at jeg viste deg et par linjer med kode som setter en variabel som heter $ X til en verdi av 4 og senere sjekket for å se om X ble større enn 0. Hvis du ser på figur A, du kan se at jeg har slått disse kommandoene i et skript ved å kopiere dem til Notisblokk, og deretter lagre filen med et .PS1 forlengelse. For å få til demonstrasjon, heter jeg manuset MyScript.ps1

Figur A:.. Dette er et eksempel på en Powershell script

Så hvordan skal vi gå om gjennomføring av et skript. Vel, det første trinnet er å sørge for at henrettelsen politikken gjør skript for å bli henrettet. Du kan bekrefte utførelsen politikk ved hjelp av Get-ExecutionPolicy cmdlet, som vist i figur B.

Figur B:. Du kan bruke Get-ExecutionPolicy cmdlet for å kontrollere utførelsen politikk som i realiteten

Når du har bekreftet henrettelsen politikk, kan du kjøre skriptet ved å navigere til mappen som inneholder manuset og deretter taste ./fulgt av manuset navn. For å vise deg hva jeg mener, la ’ s kjøre MyScript.ps1 filen. Jeg reddet meg manuset til C: \\ Brukere \\ Brien \\ Documents. Derfor kommandoene som jeg ville bruke til å endre til riktig mappe og deretter utføre skriptet er:

CD \\
CD Brukere \\ Brien \\ Documents
./MyScript.ps1

Du kan se at dette ser ut som i figur C.

Figur C:. Du kan bruke ./fulgt av manuset navn å kjøre et script

Så nå som jeg har vist deg hvordan du kan lage og gjennomføre et skript, la ’ s vende oppmerksomheten mot Powershell funksjoner. En funksjon er en blokk med kode som kan kalles ved navn. Normalt eksisterer en funksjon i et skript og blir brukt når et bestemt kodeblokk må brukes mer enn én gang. Selvfølgelig dette isn ’ t den eneste måten å sette opp en funksjon. En funksjon kan brukes utenfor et script. Siden fungerer normalt ligge i skript men la ’ s endre vår script for å inkludere en funksjon

Jeg vil prøve å holde ting enkelt, slik at jeg virkelig don ’. T ønsker å legge til en stor, komplisert blokk med kode til vår script. I stedet la ’ s bruke litt fantasi. La ’ s late at scriptet er faktisk mye lenger enn det egentlig er. La ’ s også late som gjennom i løpet av kjører skriptet endrer verdien av $ X flere ganger, og at vi trenger å regelmessig sjekke for å se om den variable ’ s. Verdien er større enn null

I denne type situasjon, kunne vi skrive en IF-setning hver gang at variabelen er tildelt en ny verdi, men det ville resultere i en masse repeterende kode. Jeg tror alltid det er bedre å skrive mindre kode når det er mulig, fordi kortere kodeblokker er mindre utsatt for kodefeil

Så med det i tankene, la ’ s. Plassere vår IF-setningen inne i en funksjon. Siden funksjonene har å bli navngitt, vil jeg kalle funksjonen VarCheck.

Å erklære en funksjon, er alt vi trenger å gjøre skrive inn ordet Funksjon, etterfulgt av funksjonsnavnet og koden blokk som vi ønsker å inkludere i funksjonen. Koden blokken må i klammeparenteser {}

Så la ’ s. Plassere vår IF-setningen til en funksjon som heter VarCheck. Funksjonen vil se omtrent slik ut:

Funksjon VarCheck
{
Hvis ($ X -GT 0) {"Bigger Than Zero"} Anmeldelser }

Hver gang du ønsker å kalle funksjonen, du må bare skriv funksjon ’ s navn. Hvis for eksempel, setter vi verdien av $ X og deretter ønsket å sjekke om $ X var større enn 0, kan vi bruke følgende linjer med kode:

$ X = 4
VarCheck

Hele funksjon, med skriptet ser slik ut:

Funksjon VarCheck
{
Hvis ($ X -GT 0) {"Bigger Than Zero"}
}

$ X = 4
VarCheck

Dette er åpenbart en veldig enkelt eksempel, men det illustrerer den måten at en funksjon fungerer. Hvis vi ønsket å overføre og kontrollerer verdien av $ X et par ganger, vi kunne gjøre noe sånt som dette:

Funksjon VarCheck
{
hvis ($ X -GT 0) {"Større enn Zero"}
}

$X=4
VarCheck
$X=0
VarCheck
$X=1
VarCheck

You kan se resultatet av dette skriptet i figur D.

Figur D: Dette skriptet kaller VarCheck funksjon flere ganger

Legg merke til at hver gang vi ønsker å sjekke verdien av X, er vi. bare kaller funksjonen i stedet for å skrive inn sammenligning strengen. En ting å huske på er at selv om min prøve funksjonen består av en enkel kommando, kan du like gjerne lage funksjoner som inneholder flere kommandoer.

Konklusjon

Jeg hadde opprinnelig tenkt at dette skal være den siste artikkelen i min Powershell essensielle serien, men jeg kommer til å skrive en mer. Grunnen til dette er at i den virkelige verden er det noen ganger nødvendig å sende parametre til en funksjon og jeg gjorde ’.. t får en sjanse til å snakke om det Derfor ønsker jeg å tilbringe Del 7 snakker mer om funksjonene Anmeldelser