PowerShell og alt hvad du behøver at vide om dette værktøj

Hvad nu hvis din pc kunne håndtere de trivielle opgaver for dig? Med Windows PowerShell kan den. Sådan bruger du PowerShell til at automatisere de gentagne, hverdagsopgaver, som ingen ønsker at gøre igen og igen.

Indholdsfortegnelse

Hvad er PowerShell?

Microsoft PowerShell er et kommandolinjeværktøj og scriptsprog, der er et effektivt værktøj for administratorer til at automatisere en bred vifte af opgaver på computere og netværk. PowerShell indeholder komponenter fra kommandoprompten og er bygget på .NET framework. Hvis du læser om WebTech360, bør du vide, at PowerShell er det foretrukne værktøj for IT-administratorer til at administrere store netværk.

At lære at bruge PowerShell vil forenkle mange kedelige daglige opgaver. Du kan også foretage systemomfattende ændringer over netværket uden at skulle konfigurere hver server individuelt. PowerShell er ved at blive en essentiel del af at køre hybride cloud -miljøer .

PowerShell har mange forskellige anvendelser til at hjælpe dig med at arbejde mere effektivt og holde dit netværk kørende effektivt. De mest grundlæggende anvendelser inkluderer: planlægning af daglige opdateringer på systemer, generering af rapporter om aktuelle processer, periodiske tjenester og mere. Selvom mange af disse opgaver kan udføres via den grafiske brugergrænseflade, er pointen med PowerShell at gøre dem hurtigere.

Hvis du har en rutinemæssig vedligeholdelsesopgave, der tager et par minutter at konfigurere, kan du scripte den samme funktionalitet ind i en enkelt kommando med navnet PowerShell. Næste gang du åbner scriptet, kører det i baggrunden. At mestre PowerShell-scriptlogik, forstå hvordan objekter og variabler fungerer, og at implementere det intelligent på tværs af dit netværk vil få dig til at undre dig over, hvorfor du ikke brugte PowerShell før.

Denne vejledning dækker det grundlæggende i PowerShell, hvilket vil være nyttigt for dem, der er nye inden for IT, især hvis du er bekendt med Windows-kommandoprompten. Den dækker, hvordan man bruger grundlæggende værktøjer og kommandoer, hvordan man arbejder med filer og mapper, forstår objekter, bruger variabler og administrerer eksterne servere.

En kort historie om Windows-kommandolinjeværktøjer

Efter udgivelsen af ​​Windows NT blev CMD.EXE kommandolinjeværktøjet til Windows. Selvom CMD.EXE arvede nogle elementer fra sin DOS-forgænger (COMMAN.COM), var det stadig baseret på et ret "primitivt" scriptsprog: brug af Windows Command-filer (.CMD og .BAT). Tilføjelsen af ​​Windows Scripting Host og sprogene VBScript og JScript forbedrede værktøjets scriptfunktioner betydeligt.

Disse teknologier er en ret afbalanceret blanding af avancerede kommandolinjeværktøjer og scriptmiljøer. Den virkelige bekymring er ikke, hvor mange CMD.EXE-, .CMD- og Windows Scripting Host-filer, der kan manipuleres med dem. Den største klage og bekymring er at få nogle tilsyneladende simple opgaver udført.

Ved hjælp af et "framework" af kommandolinje- og scriptværktøjer kræver ethvert moderat omfattende script en kombination af batchkommandoer, Windows Scripting Host og separate eksekverbare filer. Hvert script bruger forskellige konventioner til udførelse og anmodninger, parsing og returnering af data.

Dårlig variabelunderstøttelse i CMD.EXE, inkonsistente grænseflader og begrænset adgang til Windows-indstillinger, kombineret med en anden svaghed, gør kommandolinjeskripting vanskeligt at implementere og bruge. Hvad er denne 'anden svaghed', spørger du måske? Det er tekst. I disse teknologier er alt tekst. Outputtet fra en kommando eller et script er tekst og skal parses og omformateres for at fungere som input til den næste kommando. Dette er det grundlæggende udgangspunkt, som PowerShell tager fra alle traditionelle skaller.

Introduktion til PowerShell-værktøjer, -kommandoer og -moduler

De tre koncepter, der introduceres i dette afsnit, er blot det helt grundlæggende for at forstå de vigtigste koncepter, der danner grundlaget for PowerShell. Du skal bruge mere tid på at lære og mestre de mere avancerede koncepter, efterhånden som du tilgår PowerShell-kommandoer.

PowerShell-værktøjer

PowerShell er som standard installeret i Windows 10, Windows 7, Windows Server 2008 R2 og nyere versioner af Windows. Nyere versioner af PowerShell tilføjer nye funktioner og "cmdlets" (Microsofts betegnelse for PowerShell-kommandoer - udtales "command-lets") og installeres med den tilsvarende version af Windows Management Framework (WMF).

I øjeblikket er WMF 5.1 den seneste anbefalede version. I nogle tilfælde afhænger nogle nye funktioner af operativsystemet ud over WMF-versionen. For eksempel understøtter Windows 8 og Windows Server 2012 cmdlet'en Test-NetConnection, som giver dig mulighed for at teste forbindelsen til en bestemt TCP/IP- port , men denne cmdlet er ikke tilgængelig i Windows 7, selv når du kører den seneste version af WMF.

På de fleste Windows-systemer har brugerne to PowerShell-miljøer tilgængelige, PowerShell-konsollen og PowerShell ISE (Integrated Scripting Environment). PowerShell-konsollen vises som en traditionel kommandolinje, men med PowerShells fulde funktionalitet bag sig. Variabelnavne, løkker, kommandoautofuldførelse og piping er alle tilgængelige fra PowerShell-konsollen.

Til mere avanceret brug (f.eks. scripting) tilbyder PowerShell ISE automatisk kommandofuldførelse, kodefremhævning og Microsofts Intellisense-kodefuldførelse, der hjælper dig med at oprette og teste PowerShell-kode. PowerShell ISE giver dig også mulighed for at arbejde med flere PowerShell-scripts på samme tid ved hjælp af fanebladsnavigation.

cmdlets i PowerShell

Fundamentet for PowerShell-kommandoer er cmdlet'en. Microsoft anvendte flere designstrategier, da de oprettede cmdlets i PowerShell.

For det første er der muligheden for nemt at udlede cmdlet-navne, eller i det mindste gøre dem lettere at finde. PowerShell-kommandoer eller cmdlets er også designet til at være nemmere at bruge med standardiseret syntaks, hvilket gør det nemmere at oprette scripts fra kommandolinjegrænsefladen.

Cmdlets bruger Verb-Noun-formatet, som i Get-Service, Stop-Service eller Import-Csv. Verbumdelen af ​​cmdlet-navnet angiver den handling, der udføres på substantivet. Typisk vil cmdlets, der bruges til at hente information, have verbet Get i deres navn, f.eks. Get-Process eller Get-Content . Kommandoer, der bruges til at ændre noget, starter normalt med verbet Set , og kommandoer, der bruges til at tilføje en ny enhed til noget, starter normalt med Add eller New .

For det andet får parametre, der almindeligvis bruges i PowerShell, også standardiserede navne. For eksempel tillader parameteren -ComputerName , at cmdlet'en udføres på en eller flere fjerncomputere. -Credential bruges til at angive et godkendelsesobjekt, der indeholder brugerlegitimationsoplysninger, for at køre kommandoen som en bestemt bruger.

Moduler i PowerShell

Du kan bruge aliasser til både cmdlets og parametre for at spare tastetryk og forkorte kommandoens samlede længde (nyttigt, når du kæder flere kommandoer sammen). Selvom disse aliasser ikke altid bruger standard navngivningskonventioner, afspejler de stadig traditionelle kommandolinjeværktøjer.

I PowerShell svarer aliasser som DIR, CD, DEL og CLS til henholdsvis cmdlet'erne Get-ChildItem, Set-Location, Remove-Item og Clear-Host. Parameteraliasser kan fungere på to måder: de kan bruge et foruddefineret alias leveret af cmdlet'en, eller de kan aliaseres ved at indtaste nok tegn til at skabe et unikt match mellem cmdlet'ens understøttede parametre.

Fil- og mappehåndtering

De fleste systemadministratorer er nødt til at manipulere filer og mapper i løbet af deres arbejde, uanset om det drejer sig om at flytte en mappe til en anden placering på serveren, arkivere logfiler eller søge efter store filer. I tilfælde hvor de samme handlinger gentages på mange filer, vil det være en effektiv tidsbesparende løsning at bruge PowerShell til at automatisere dem.

For at finde filer og mapper var et af de første kommandolinjeværktøjer, som en administrator lærte i gamle dage inden for computerbrug, dir-kommandoen. Dir viser en liste over filer og mapper, der er indeholdt i den angivne mappe.

PowerShell har en lignende kommando i form af Get-ChildItem Cmdlet . Get-ChildItem giver dig mulighed for hurtigt at opbygge en liste over filer i en mappe på en sådan måde, at du kan manipulere filerne via en pipe-kommando eller tildele outputtet til en variabel.

Get-ChildItem kan bruges ved blot at angive en sti, enten gennem en pipeline, ved hjælp af -Path- parameteren eller direkte efter cmdlet-navnet. For at ændre det svar, der returneres af Get-ChildItem, er det nødvendigt at overveje nogle parametre, der stilles til rådighed af cmdlet'en.

Parameteren -Filter er én måde, du kan søge efter filer på. Som standard returnerer Get-ChildItem kun direkte underfiler til målmappen. Denne funktionalitet kan udvides ved at bruge parameteren -Recurse , som rekursivt søger i mapper, der er indeholdt i den aktuelle mappe.

I PowerShell 4.0 tilføjede Get-ChildItem muligheden for at begrænse resultater til filer eller mapper ved hjælp af parameteren –File eller –Directory . Tidligere versioner af PowerShell skulle sende resultaterne til Where-Object og filtrere på egenskaben PSIsContainer for at foretage denne bestemmelse. Et eksempel på begge teknikker, der bruges til at returnere mapper indeholdt i C:Users, vises her:

Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}

For at detektere skjulte filer eller systemfiler skal  -Force bruges . Get-ChildItem i PowerShell 4.0 og nyere kan også bruges til kun at returnere skjulte, skrivebeskyttede eller systemfiler ved hjælp af henholdsvis -Hidden, -ReadOnly og –System . Lignende funktionalitet kunne opnås i tidligere versioner ved at filtrere egenskaben Mode ved hjælp af Where-Object:

Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}

Tjek om filen findes

Normalt, når vi arbejder med filer, behøver vi kun at vide, om filen findes, eller om stien til mappen er gyldig. PowerShell stiller en cmdlet til rådighed til at gøre dette i form af Test-Path, som returnerer værdien sand eller falsk.

Test-Path bruges som et sikkerhedsforanstaltning, før man forsøger at kopiere eller slette en bestemt fil.

Kopier, flyt og slet filer

Copy-Item: Kopierer en eller flere filer eller mapper fra en placering, angivet af parameteren -Path, til den placering, der er angivet af indstillingen -Destination.

Flyt-element: Flytter en fil eller mappe.

Når en mappestruktur kopieres eller flyttes, skal -Recurse bruges til at få cmdlet'en til at udføre handlingen på mappen og dens indhold. I nogle tilfælde kræves -Force også , f.eks. når en skrivebeskyttet fil overskrives af en kopieringshandling.

Fjern element: Slet fil, mappe.

Switch -Force bør bruges, når man støder på en skrivebeskyttet fil, og -Recurse bør bruges, når man sletter en mappe og dens indhold.

Brug af PowerShell -WhatIf og -Confirm

Før du udfører en alvorlig massesletning, skal du bruge -WhatIf . -WhatIf giver dig mulighed for at se, hvad der ville ske, hvis du kørte et script eller en kommando, og om det ville have en potentiel negativ indvirkning ved at slette vigtige forretningsdata. Det er også værd at bemærke, at -WhatIf ikke er begrænset til filhandlinger, det bruges i vid udstrækning i PowerShell.

For scripts, som du har til hensigt at køre manuelt, eller værre, har afhængige kommandoer, der kører manuelt, bør du overveje at bruge -Confirm . Dette giver dig mulighed for at kræve brugerinteraktion, før handlingen rent faktisk finder sted.

PowerShell-scripts = Batchfiler på steroider

PowerShell er i sig selv skrevet i .NET-sproget og er stærkt baseret på .NET Framework. Som sådan er PowerShell designet som et objektorienteret shell- og scriptsprog. Alt i PowerShell behandles som et objekt med .NET Frameworks fulde muligheder. En kommando eksponerer en samling af objekter, der kan bruges ved hjælp af egenskaberne og metoderne for den pågældende objekttype. Når du vil sende outputtet fra én kommando til en anden, sender PowerShell faktisk objektet igennem, ikke kun tekstoutputtet fra den første kommando. Dette giver den næste kommando fuld adgang til alle egenskaberne og metoderne for objektet i pipelinen.

At behandle alt som et objekt og være i stand til at acceptere objekter mellem kommandoer er en stor ændring i teorien om kommandolinjeværktøjer. Når det er sagt, fungerer PowerShell stadig som en traditionel shell. Kommandoer, scripts og eksekverbare filer kan skrives og køres fra kommandolinjen, og resultaterne vises som tekst. Windows .CMD- og .BAT-filer, VBScripts, JScripts og de eksekverbare filer, der kører i CMD.EXE, kører alle stadig i PowerShell. Men fordi de ikke er objektorienterede, har de ikke fuld adgang til de objekter, der oprettes og bruges i PowerShell. Disse ældre scripts og eksekverbare filer vil stadig behandle alt som tekst, men du kan kombinere PowerShell med en række andre teknologier. Dette er især vigtigt, hvis du vil begynde at bruge PowerShell med en samling af eksisterende scripts, som du ikke kan konvertere alle på én gang.

PowerShell-parametre forklaret

Cmdlets kan acceptere parametre for at ændre deres adfærd. Når du kører en cmdlet eller funktion, kan du angive parameterværdier for at angive, hvad, hvornår, hvor og hvordan hver PowerShell-kommando kører.

For eksempel vil Get-Process hente og liste alle kørende processer i dit operativsystem:

PowerShell og alt hvad du behøver at vide om dette værktøj
Get-Process viser alle kørende processer.

Men hvad nu hvis du bare vil hente en specifik proces? Det kan du gøre ved hjælp af parametre. For eksempel, for at hente alle Slack-processer, kan du bruge Name-parameteren med Get-Process-cmdlet'en:

Get-Process -Name Slack

Så vil du kun se processer med navnet "slack":

PowerShell og alt hvad du behøver at vide om dette værktøj
Brug af Get-Process med parametre

Tip : Nogle parametre er "positionelle", hvilket betyder, at deres navne er valgfrie. I dette tilfælde udfører Get-Process -Name Slack og Get-Process Slack begge den samme opgave.

Hver cmdlet accepterer forskellige typer parametre. Brug kommandoen Get-Help til at se de accepterede parametre for cmdlet'en i syntakssektionen.

Get-Help Get-Process

Du vil se en liste over alle mulige måder, du kan køre den givne cmdlet på:

PowerShell og alt hvad du behøver at vide om dette værktøj
cmdlet-syntaksparametre

I dette tilfælde accepterer Get-Process cmdlet parametre som Navn, Id, Computernavn, Modul, FileVersionInfo og andre almindelige parametre. Symbolerne her betyder:

Symbol

Navn

Mening

 

Tromme

Parameteren accepterer ikke input

-

Bindestreg

Angiv parameternavnet

<>

krøllede parenteser

Pladsholder til tekst

[]

Parenteser

Parameteren kan acceptere en eller flere værdier.

{}

krøllede parenteser

Parameteren accepterer et sæt værdier.

Parametre accepterer et sæt værdier, der angiver den type data, de kræver, såsom streng, heltal, boolsk værdi eller DateTime. For eksempel følgende kommando:

Get-Process [[-Name] ]

... betyder, at Navn -parameteren accepterer en eller flere strengværdier, hvorimod denne kommando:

Get-Process -Id 

... betyder, at Id -parameteren accepterer en eller flere heltalsværdier.

Det forrige Get-Process-eksempel brugte Name-parameteren til at indsnævre resultaterne. Hvis du vil indsnævre det til en mere specifik proces, kan du bruge ID- parameteren , som kræver et heltal, som angivet i dens syntaks.

Get-Process -Id 3016

Så vil du kun se én proces på listen:

PowerShell og alt hvad du behøver at vide om dette værktøj
Brug af Id-parameteren på cmdlets

Opret pipeline

PowerShell behandler alle data som objekter. For at bygge et script køres disse objekter gennem en række cmdlets eller funktioner, der er forbundet med pipe-symbolet (|). Det er vigtigt at vælge de rigtige cmdlets og forbinde dem i en logisk rækkefølge ved hjælp af en pipeline for at opnå et effektivt script.

Forestil dig, at du opretter et script til at sortere og vise de 5 filer, der optager mest plads i en mappe. Der er mere effektive måder at skrive et filsorteringsscript på, men denne enkle er nem at forstå:

PowerShell og alt hvad du behøver at vide om dette værktøj
Script Sort-LargeFiles PS1

For at gøre dette i PowerShell skal du bruge en pipeline, der ser sådan ud:

Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Gem pipeline som PS1-script

Nu hvor vi har en fungerende pipeline, kan du gemme den som en PS1-scriptfil, så du ikke behøver at importere den hver gang du bruger den.

Den enkleste måde at oprette en PS1-fil på er at indsætte dit script i Notesblok og gemme filen med filtypen .ps1.

PowerShell og alt hvad du behøver at vide om dette værktøj
Opret script med Notesblok

Når du har oprettet PS1-filen, kan du bruge den i PowerShell ved at køre ./ScriptName.ps1 :

PowerShell og alt hvad du behøver at vide om dette værktøj
Brug af PS1-script

Tip : Hvis du får en tilladelsesfejl, er den hurtigste løsning at køre PowerShell med administratorrettigheder, når du kører dit script.

Tillykke! Du kan nu oprette PowerShell PS1-scripts.

Eksempel på et PowerShell-script

At læse om og forstå den fantastiske ny teknologi er én ting, men rent faktisk at bruge den er noget andet! I resten af ​​denne artikel vil vi udvikle et PowerShell-script for at demonstrere dets muligheder og hvordan man bruger det.

DIR er en af ​​de mest almindelige kommandoer i CMD.EXE . Denne kommando viser alle filer og undermapper i en overordnet mappe (som vist i figur 1). Udover navnet på hvert objekt indeholder de angivne oplysninger dato og klokkeslæt for den seneste opdatering samt størrelsen på hver fil. DIR viser også den samlede størrelse af alle filerne i mappen samt det samlede antal filer og undermapper.

PowerShell og alt hvad du behøver at vide om dette værktøj
Figur 1

At køre DIR i PowerShell producerer også en mappeliste som figur 2, men på en lidt anderledes måde. PowerShell har ikke en DIR-kommando, men har i stedet Get-ChildItem, som udfører den samme funktion. I PowerShell er DIR et alias for Get-ChildItem. Jeg har ikke til hensigt at gå i detaljer med aliasser i denne artikel. Du kan tænke på DIR i PowerShell som en forkortelse for Get-ChildItem.

DIR i PowerShell giver mange af de samme oplysninger som nævnt ovenfor: en liste over filer og mapper, dato og klokkeslæt for deres sidste ændring, og størrelsen på hver fil. Den mangler dog de oversigtsoplysninger, som DIR i CMD.EXE giver: den samlede størrelse af alle filer i mappen, det samlede antal filer og det samlede antal undermapper.

PowerShell og alt hvad du behøver at vide om dette værktøj
Figur 2

I eksempelscenariet skal du oprette et PowerShell-script, der simulerer CMD.EXE DIR-kommandoen. Nedenfor vil jeg forklare de vigtigste dele af et script.

DIR.PS1: Header

Et PowerShell-script består af PowerShell-kommandoer i en almindelig tekstfil med filtypenavnet .PS1. I stedet for DIR ville du bruge en tekstfil kaldet DIR.PS1.

For at køre scriptet skal du skrive følgende kommando på PowerShell-skærmen:

.DIR.PS1 X:Folder

Hvor X er drevpartitionens bogstav (som C, D, E), og Folder er mappenavnet.

Hvis du vil vide noget om en diskpartition, skal du bruge Windows Management Instrumentation (WMI). Detaljerne om WMI ligger uden for denne artikels rammer, så vi vil ikke gå i dybden med dem her. Men PowerShell-koden nedenfor er nem nok at forstå uden at bruge WMI. Du kan oprette en "$filter"-variabel, der skal bruges sammen med Get-WmiObject-kommandoen. Dette filter fortæller Get-WmiObject-kommandoen, at du kun ønsker oplysninger om et bestemt drev. Resultaterne af Get-WmiObject-kommandoen gemmes i en variabel kaldet $volInfo. Husk, at alt i PowerShell er et objekt; $volInfo er nu et objekt, der returneres af Get-WmiObject.

$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter

Nu har du adgang til alle de objekter og metoder, der er knyttet til objektet. Volumens serienummer er tilgængeligt via egenskaben VolumeSerialNumber. Det returnerede tal er en streng på 8 tegn. Men ofte vil du formatere det som fire tal, adskilt af en bindestreg. Dette kan gøres på samme måde som i den følgende linje. Bindestregen i slutningen af ​​den første linje er linjefortsættelsestegnet i PowerShell. Det fortæller dybest set PowerShell, at linjen ikke brydes, og at den inkluderer den næste linje. Linjeskift er ikke nødvendige, når man skriver kode, men for at reducere bredden og gøre koden mere læsbar bør du gøre det.

$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)

Nu hvor du har et $volInfo-objekt, kan du skrive DIR-headeroplysningerne til skærmen. Hvis drevet ikke har noget navn, vil den tekst, der skrives til skærmen, være en smule anderledes, end hvis drevet har et navn. En simpel If-Else-sætning bruges til at kontrollere, om VolumeName-egenskaben er en tom streng. Write-Host-sætningen bruges til at skrive hver tekstlinje til skærmen.

If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")

Tegnet “`n” i begyndelsen og slutningen af ​​Write-Host-kommandoen bruges til at indsætte en ny linje før og efter teksten. Write-Host-kommandoen tilføjer en ny linje i slutningen af ​​hver linje. Effekten af ​​“`n” er derfor, at der oprettes en tom linje før og efter teksten.

Lagde du mærke til “-eq” i If-kommandoen? Det er en lighedssammenligningsoperator. Tabellen nedenfor viser alle sammenligningsoperatorerne:

-eq, -ieq Sammenlign efter
-ne, -ine Sammenligning er ikke ligeværdig
-gt, -igt Sammenlign større end
-ge, -ige Sammenlign større end eller lig med
-lt, -ilt Sammenlign mindre end
-le, -ile Sammenlign mindre end eller lig med

Tegnet -i før sammenligningsoperatorerne angiver, at operatoren ikke skelner mellem store og små bogstaver.

PowerShell og alt hvad du behøver at vide om dette værktøj
Figur 3: Outputdata for det script, du har i øjeblikket

DIR.PS1: Liste over filer/mapper

Nu er du klar til at vise indholdet og egenskaberne for denne mappe. Det første du skal gøre er at kalde PowerShell Get-ChildItem-kommandoen for at hente en samling af filer og sende den til scriptet som en parameter. Get-ChildItem-kommandoen henter en samling af fil- og mappeobjekter, ikke kun deres navne, men sender også disse objekter direkte til Sort-Object-kommandoen for at sortere dem. Som standard sorterer Sort-Object-kommandoen objekter baseret på egenskaben Navn. Så du behøver ikke at angive andre parametre. Den sorterede samling af objekter gemmes derefter i en variabel med navnet $items.

$items = Get-ChildItem $args[0] | Sort-Object

Når du har en samling af fil- og mappeobjekter, skal du gennemgå dem og vise de relevante egenskaber. Kommandoen til dette er ForEach. For hver fil eller mappe vises dato og klokkeslæt, navn, længde eller størrelse for filen sidst ændret. De mærkeligt udseende strenge i parenteserne er .NET-strengformatkoder. De bruges til at venstre-/højrejustere felter og formatere datoer, klokkeslæt og tal. Det er ikke særlig vigtigt at forstå disse strengformatkoder, da de ikke er afgørende for scriptets natur.

If-sætningen er der, hvor du afgør, om et objekt er en mappe eller ej. Hvis det første tegn i Mode-attributten er "d", er objektet en mappe. Du skal dobbelttjekke, da koden for mapper ofte er forskellig fra koden for filer.

Bemærk linjen $totalDirs++ i If-sætningen. Dette er en tæller, der er ansvarlig for at holde styr på antallet af mapper. Tilsvarende er der en $totalFiles-variabel, der bruges til at holde styr på den samlede størrelse af alle filerne. Disse værdier beregnes altid under udførelsen. Men de vises kun, når fillisteprocessen er færdig.

ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}

PowerShell og alt hvad du behøver at vide om dette værktøj
Figur 4: Viser outputdataene for det opdaterede script.

DIR.PS1: Sidefod

Det eneste, der mangler, er at skrive det samlede antal filer, mapper, den samlede størrelse af alle filer og den ledige plads på denne drevpartition til skærmen. For at gøre dette skal du bruge tællervariablerne ($totalFiles, $totalDirs, $totalSize), der blev oprettet i det forrige afsnit. Du kan finde ud af mængden af ​​ledig plads fra variablen $volInfo, der blev oprettet i begyndelsen af ​​scriptet.

Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")

PowerShell og alt hvad du behøver at vide om dette værktøj
Figur 5: Viser scriptets komplette outputdata.

Prognoser og forbedringer kan være

Selvom det script, du opretter, producerer næsten identisk output som CMD.EXE DIR-kommandoen, er der nogle forbehold, du bør være opmærksom på, og nogle forbedringer, der kan foretages.

  • Dette script udfører ingen fejlkontrol.
  • Hvis der ikke sendes en gyldig sti til scriptet, vil scriptet fejle med en PowerShell-fejlmeddelelse.
  • Det samlede antal mapper, der er angivet i scriptet, er 2 mindre end resultatet fra CMD.EXE DIR-kommandoen, fordi Get-ChildItem-kommandoen ikke tæller de to mapper "." og ".." som i CMD.EXE.
  • Dit script sorterer kun efter filnavn, mappenavn og tilbyder ingen anden sortering efter attributter.
  • Dit script kan ikke vise indholdet af mappen og alle undermapper.

Hvordan PowerShell hjælper dig med at automatisere alt på din pc

Skriv simple PowerShell-scripts

Du kan bruge PowerShell til at automatisere næsten alt, f.eks. batchomdøbning af filer for at sikre ensartethed eller automatisk start af programmer. Lad os skrive et par enkle Windows PowerShell-scripts for at se, hvordan det fungerer.

Bemærk : Hvis du støder på en fejl vedrørende udførelsespolitikken under udførelsen af ​​scriptet, skal du muligvis midlertidigt tillade scriptet at udføres ved at køre "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass".

Batch-omdøbning af filer i en mappe

Du kan bruge PowerShell til at kopiere, flytte og slette filer på din pc. Du kan også omdøbe filer af en bestemt filtype på én gang. For eksempel kan du her se, hvordan du kan omdøbe flere tekstfiler ved at erstatte præfikset "oldco" med "newco" i deres filnavne:

Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}

I ovenstående script er ".txt" filteret for filtypenavne. Du kan ændre det og indstille det til .jpg, .docx osv. for at søge efter forskellige filtyper.

Automatisk start af applikation

Hvis du åbner det samme sæt applikationer hver dag, kan du skrive et PowerShell-script for at starte dem med et enkelt klik:

#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"

Indsæt scriptet i en Notesblok-fil, og gem det som LaunchFavoriteApps.ps1. Dobbeltklik derefter blot på filen for at starte alle de apps, der er angivet i scriptet.

Kopier vigtige filer til en backupplacering

Du kan med jævne mellemrum sikkerhedskopiere vigtige filer til en sikkerhedskopiplacering ved hjælp af følgende script. Sørg for at ændre kilde- og destinationsstierne efter behov:

#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse

Skriv et PowerShell-script til automatisk at organisere filer dagligt

Da mange typer filer downloades hver dag, kan mappen Downloads hurtigt blive rodet med alle mulige slags filer spredt rundt omkring. For at løse dette kan vi skrive et PowerShell-script, der sorterer downloadede filer i mapper efter filtype i slutningen af ​​hver dag.

Åbn en ny Notesblok-fil, og indsæt følgende script. Sørg for at ændre kildemappestien i scriptet, så den matcher Downloads-mappestien:

# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"

For at gemme filen skal du klikke på Filer > Gem som og indtaste OrganizeDownloadsFolder.ps1 som filnavn. Klik derefter på Gem som type og vælg Alle filer . Dobbeltklik på filen OrganizeDownloadsFolder.ps1 for at køre scriptet.

Planlæg og udfør opgaver

Selvfølgelig er det at skrive et script en del af automatiseringsprocessen. Den anden del er at sikre, at scriptet kan udføres automatisk for at udføre opgaven. For at gøre dette kan vi oprette planlagte opgaver til at køre scriptet dagligt eller efter behov.

Åbn PowerShell, kopier og indsæt derefter følgende script, og tryk på Enter . Sørg for at erstatte 'J:\OrganizeDownloadsFolder.ps1' med den fulde filsti til dit OrganizeDownloadsFolder.ps1 -script.

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"

Når du er færdig, skal du trykke på Enter . Scriptet opretter en planlagt opgave i Opgavestyring for at køre filorganiseringsscriptet hver dag kl. 17:00. Hvis du foretrækker et andet tidspunkt, kan du ændre det i ovenstående script.

Derudover kan du bruge PowerShell til at automatisere andre daglige opgaver, f.eks. et pladsovervågningsscript, der advarer dig, når du løber tør for ledig plads på dit primære drev, adgangskodebeskyttelse af batches af PDF-dokumenter og endda anvendelse af levende baggrunde fra din billedmappe.

Selvom PowerShell er et kraftfuldt værktøj og scriptsprog, tager det lidt tid at forstå og bruge det, især hvis man ikke er bekendt med .NET Framework-miljøet. Jeg håber, at denne artikel og eksempelscriptet vil være nyttige for alle, der ønsker at forstå PowerShell. Men eksempelscriptet, der er oprettet i artiklen, er ret simpelt. Jeg mener, at det kan bygges og udvikles mere fuldstændigt til at betjene mere komplekse applikationer.

Tags: #System

Leave a Comment

Sådan nulstiller du programmer på Windows-computere

Sådan nulstiller du programmer på Windows-computere

Hvis dine Indstillinger eller Microsoft Store-appen ikke fungerer korrekt, går ned eller ikke kan åbnes, kan du nulstille appen.

Hvad er PING? Hvordan tester man PING?

Hvad er PING? Hvordan tester man PING?

I artiklen nedenfor inviterer vi dig til at lære nogle enkle eksempler på PING-kommandoen på Windows!

Sådan starter du planlagte opgaver med forsinkelse i Windows

Sådan starter du planlagte opgaver med forsinkelse i Windows

Denne funktion er yderst nyttig til at forsinke unødvendige opgaver, sikre netværksforbindelse før en opgave starter, køre opgaver i en bestemt rækkefølge, planlægge opdateringer eller udføre hardwarevedligeholdelse.

Hvad er VPN? Fordele og ulemper ved VPN virtuelt privat netværk

Hvad er VPN? Fordele og ulemper ved VPN virtuelt privat netværk

Hvad er VPN, hvad er fordelene og ulemperne ved VPN? Lad os diskutere definitionen af ​​VPN med WebTech360, og hvordan man anvender denne model og dette system i praksis.

Sådan inverterer du skærmfarver ved hjælp af Forstørrelsesglas i Windows 11

Sådan inverterer du skærmfarver ved hjælp af Forstørrelsesglas i Windows 11

Brug af forstørrelsesglasinversionsfunktionen i Windows 11 kan forbedre tekstlæsbarheden, især for personer, der er lysfølsomme.

Rettelse af problemet med at kommandoen Kopier indsæt ikke virker i Word og Excel (2007, 2010).

Rettelse af problemet med at kommandoen Kopier indsæt ikke virker i Word og Excel (2007, 2010).

Der er mange grunde til, at kommandoen Kopier/Sæt ind ikke virker på en Windows-computer, f.eks. at din computer er blevet angrebet af en virus, udklipsholderen ikke virker, og derfor virker kopieringskommandoen (Ctrl + C) og indsætningskommandoen (Ctrl + V) ikke. For at finde ud af, hvordan du retter denne fejl, henvises til nedenstående artikel fra WebTech360.

Få Windows Fotofremviser tilbage på Windows 10 for at se billeder hurtigere. Fotos er for langsom!

Få Windows Fotofremviser tilbage på Windows 10 for at se billeder hurtigere. Fotos er for langsom!

Hvis du ikke kan lide Fotos i Windows 10 og vil se fotos ved hjælp af Windows Fotofremviser i Windows 10, skal du følge denne vejledning for at få Windows Fotofremviser til Windows 10, så du kan se fotos hurtigere.

Sådan kloner du en Windows-harddisk uden tredjepartssoftware

Sådan kloner du en Windows-harddisk uden tredjepartssoftware

Kloningsprocessen involverer flytning af data fra én lagerenhed til en anden (i dette tilfælde en harddisk) med en nøjagtig kopi kopieret fra destinationsdrevet.

Sådan deaktiverer du hurtig opstart i Windows

Sådan deaktiverer du hurtig opstart i Windows

Hurtig opstart Windows 11 hjælper din computer med at starte hurtigere, men det kan også være årsagen til, at din Windows-computer ikke lukker helt ned.

Sådan tilføjer du Afslut opgave til Windows 11 proceslinjen

Sådan tilføjer du Afslut opgave til Windows 11 proceslinjen

Windows 11 har en funktion, der tilføjer en Afslut opgave-knap direkte på proceslinjen, så du ikke behøver at få adgang til Jobliste for at lukke programmer, der ikke reagerer.

Sådan sikkerhedskopierer du data uden at bruge en ekstern harddisk

Sådan sikkerhedskopierer du data uden at bruge en ekstern harddisk

Nogle gange kan man bare ikke finde en ekstern harddisk, når man har mest brug for den. Efter at have mistet vigtige filer et par gange, har nogle fundet en simpel og pålidelig måde at sikkerhedskopiere alt på, selv når harddisken ikke er tilgængelig.

Hvad er brugen af ​​genvejen Ctrl + Z i Windows? Sandsynligvis mere end du tror

Hvad er brugen af ​​genvejen Ctrl + Z i Windows? Sandsynligvis mere end du tror

Ctrl + Z er en ekstremt almindelig tastekombination i Windows. Ctrl + Z giver dig grundlæggende mulighed for at fortryde handlinger i alle områder af Windows.

Sådan sletter du gendannelsespartitionen og 450 MB gendannelsespartitionen i Windows 10

Sådan sletter du gendannelsespartitionen og 450 MB gendannelsespartitionen i Windows 10

Gendannelsespartitionen er en separat partition på computerens harddisk eller SSD, og ​​den bruges til at gendanne eller geninstallere operativsystemet i tilfælde af systemfejl.

10 tips til at fjerne programmer, der ikke kan afinstalleres

10 tips til at fjerne programmer, der ikke kan afinstalleres

En masse uønsket software kan gøre din computer langsom og rodet. Men det er ikke altid nemt at rydde op. Så tjek disse 10 måder til at afinstallere apps på en ren måde, fjerne gammel software i batches, afinstallere elementer, der ikke kan afinstalleres, og endda fjerne forudinstallerede Windows-programmer.

Instruktioner til aktivering af virtuelle maskiner på Windows 11

Instruktioner til aktivering af virtuelle maskiner på Windows 11

Virtuel maskine på Windows 11 understøtter brugere i at køre et andet operativsystem end Windows direkte på deres computer.

Windows 11s indbyggede sikkerhedsværktøjer kan ikke beskytte dig mod disse trusler

Windows 11s indbyggede sikkerhedsværktøjer kan ikke beskytte dig mod disse trusler

Windows er i dag meget bedre til at beskytte din sikkerhed end det plejede at være, men Windows Sikkerhed og de tilhørende værktøjer er stadig ikke perfekte. Du skal være på udkig efter trusler, som computersikkerhed ikke har en løsning på.

Forældede drivere gør din Windows-pc langsommere: Hvad skal man gøre?

Forældede drivere gør din Windows-pc langsommere: Hvad skal man gøre?

Windows-pc'er kan nogle gange føles langsomme, men Jobliste viser ikke noget mistænkeligt. På dette tidspunkt tjekker de fleste for malware eller lagerproblemer, men forældede drivere kan også forårsage problemer med ydeevnen.

Enkle ændringer, der hjælper din Windows-computer med at starte hurtigere

Enkle ændringer, der hjælper din Windows-computer med at starte hurtigere

At slukke for programmer, du ikke har brug for, er den mest effektive måde at hjælpe din Windows-computer med at starte hurtigere.

Instruktioner til at ændre baggrundsbilledet i Windows 11

Instruktioner til at ændre baggrundsbilledet i Windows 11

At ændre baggrundsbilledet i Windows 11 er en af ​​de bedste måder at tilpasse dit skrivebord på.

Sådan rettes en Windows-computer, der genstarter automatisk, når du trykker på nedlukningsknappen

Sådan rettes en Windows-computer, der genstarter automatisk, når du trykker på nedlukningsknappen

I denne artikel vil Quantrimang guide dig gennem nogle måder at rette fejlen med Windows-computere, der automatisk genstarter, når du trykker på nedlukningsknappen.

Sådan nulstiller du programmer på Windows-computere

Sådan nulstiller du programmer på Windows-computere

Hvis dine Indstillinger eller Microsoft Store-appen ikke fungerer korrekt, går ned eller ikke kan åbnes, kan du nulstille appen.

Hvad er PING? Hvordan tester man PING?

Hvad er PING? Hvordan tester man PING?

I artiklen nedenfor inviterer vi dig til at lære nogle enkle eksempler på PING-kommandoen på Windows!

Sådan starter du planlagte opgaver med forsinkelse i Windows

Sådan starter du planlagte opgaver med forsinkelse i Windows

Denne funktion er yderst nyttig til at forsinke unødvendige opgaver, sikre netværksforbindelse før en opgave starter, køre opgaver i en bestemt rækkefølge, planlægge opdateringer eller udføre hardwarevedligeholdelse.

Hvad er VPN? Fordele og ulemper ved VPN virtuelt privat netværk

Hvad er VPN? Fordele og ulemper ved VPN virtuelt privat netværk

Hvad er VPN, hvad er fordelene og ulemperne ved VPN? Lad os diskutere definitionen af ​​VPN med WebTech360, og hvordan man anvender denne model og dette system i praksis.

Sådan inverterer du skærmfarver ved hjælp af Forstørrelsesglas i Windows 11

Sådan inverterer du skærmfarver ved hjælp af Forstørrelsesglas i Windows 11

Brug af forstørrelsesglasinversionsfunktionen i Windows 11 kan forbedre tekstlæsbarheden, især for personer, der er lysfølsomme.

Rettelse af problemet med at kommandoen Kopier indsæt ikke virker i Word og Excel (2007, 2010).

Rettelse af problemet med at kommandoen Kopier indsæt ikke virker i Word og Excel (2007, 2010).

Der er mange grunde til, at kommandoen Kopier/Sæt ind ikke virker på en Windows-computer, f.eks. at din computer er blevet angrebet af en virus, udklipsholderen ikke virker, og derfor virker kopieringskommandoen (Ctrl + C) og indsætningskommandoen (Ctrl + V) ikke. For at finde ud af, hvordan du retter denne fejl, henvises til nedenstående artikel fra WebTech360.

Få Windows Fotofremviser tilbage på Windows 10 for at se billeder hurtigere. Fotos er for langsom!

Få Windows Fotofremviser tilbage på Windows 10 for at se billeder hurtigere. Fotos er for langsom!

Hvis du ikke kan lide Fotos i Windows 10 og vil se fotos ved hjælp af Windows Fotofremviser i Windows 10, skal du følge denne vejledning for at få Windows Fotofremviser til Windows 10, så du kan se fotos hurtigere.

Sådan kloner du en Windows-harddisk uden tredjepartssoftware

Sådan kloner du en Windows-harddisk uden tredjepartssoftware

Kloningsprocessen involverer flytning af data fra én lagerenhed til en anden (i dette tilfælde en harddisk) med en nøjagtig kopi kopieret fra destinationsdrevet.

Sådan deaktiverer du hurtig opstart i Windows

Sådan deaktiverer du hurtig opstart i Windows

Hurtig opstart Windows 11 hjælper din computer med at starte hurtigere, men det kan også være årsagen til, at din Windows-computer ikke lukker helt ned.

Sådan tilføjer du Afslut opgave til Windows 11 proceslinjen

Sådan tilføjer du Afslut opgave til Windows 11 proceslinjen

Windows 11 har en funktion, der tilføjer en Afslut opgave-knap direkte på proceslinjen, så du ikke behøver at få adgang til Jobliste for at lukke programmer, der ikke reagerer.