Slik sikkerhetskopierer og gjenoppretter du Microsoft Defender Windows 11
Du kan sikkerhetskopiere og gjenopprette Microsoft Defender-innstillingene dine på en ny datamaskin eller feilsøke eventuelle problemer du måtte ha med programmet.
Hva om PC-en din kunne håndtere de trivielle oppgavene for deg? Med Windows PowerShell kan den det. Slik bruker du PowerShell til å automatisere de repeterende, hverdagslige oppgavene som ingen vil gjøre om og om igjen.
Innholdsfortegnelse
Microsoft PowerShell er et kommandolinjeverktøy og skriptspråk som er et kraftig verktøy for administratorer for å automatisere en rekke oppgaver for datamaskiner og nettverk. PowerShell inneholder komponenter fra kommandolinjen og er bygget på .NET-rammeverket. Hvis du leser om WebTech360, bør du vite at PowerShell er det foretrukne verktøyet for IT-administratorer for å administrere store nettverk.
Å lære å bruke PowerShell vil forenkle mange kjedelige daglige oppgaver. Du kan også gjøre systemomfattende endringer over nettverket uten å måtte konfigurere hver server individuelt. PowerShell er i ferd med å bli en viktig del av å kjøre hybride skymiljøer .
PowerShell har mange forskjellige bruksområder for å hjelpe deg med å jobbe mer effektivt og holde nettverket ditt i gang. De mest grunnleggende bruksområdene inkluderer: planlegging av daglige oppdateringer på systemer, generering av rapporter om gjeldende prosesser, periodiske tjenester og mer. Selv om mange av disse oppgavene kan gjøres via det grafiske brukergrensesnittet, er poenget med PowerShell å gjøre dem raskere.
Hvis du har en rutinemessig vedlikeholdsoppgave som tar noen minutter å sette opp, kan du lage et skript for den samme funksjonaliteten i én kommando, kalt PowerShell. Neste gang du åpner skriptet, vil det kjøre i bakgrunnen. Å mestre PowerShell-skriptlogikk, forstå hvordan objekter og variabler fungerer, og distribuere det intelligent på tvers av nettverket ditt, vil få deg til å lure på hvorfor du ikke brukte PowerShell tidligere.
Denne veiledningen vil dekke det grunnleggende om PowerShell, noe som vil være nyttig for de som er nye innen IT, spesielt hvis du er kjent med Windows-ledeteksten. Den vil dekke hvordan du bruker grunnleggende verktøy og kommandoer, hvordan du arbeider med filer og mapper, forstår objekter, bruker variabler og administrerer eksterne servere.
Etter utgivelsen av Windows NT ble CMD.EXE kommandolinjeverktøyet for Windows. Selv om CMD.EXE arvet noen elementer fra sin DOS-forgjenger (COMMAN.COM), var det fortsatt basert på et ganske "primitivt" skriptspråk: bruk av Windows Command-filer (.CMD og .BAT). Tillegget av Windows Scripting Host og VBScript- og JScript-språkene forbedret skriptfunksjonene til verktøyet betraktelig.
Disse teknologiene er en ganske balansert blanding av avanserte kommandolinjeverktøy og skriptmiljøer. Den virkelige bekymringen er ikke hvor mange CMD.EXE-, .CMD- og Windows Scripting Host-filer som kan manipuleres med dem. Hovedklagen og bekymringen er å få gjort noen tilsynelatende enkle oppgaver.
Ved å bruke et «rammeverk» av kommandolinje- og skriptverktøy krever ethvert moderat omfattende skript en kombinasjon av batchkommandoer, Windows Scripting Host og frittstående kjørbare filer. Hvert skript bruker forskjellige konvensjoner for utførelse og forespørsler, parsing og retur av data.
Dårlig variabelstøtte i CMD.EXE, inkonsekvente grensesnitt og begrenset tilgang til Windows-innstillinger, kombinert med en annen svakhet, gjør kommandolinjeskripting vanskelig å implementere og bruke. Hva er denne «andre svakheten», lurer du kanskje på? Det er tekst. I disse teknologiene er alt tekst. Utdataene fra en kommando eller et skript er tekst og må analyseres og formateres på nytt for å fungere som input for neste kommando. Dette er det grunnleggende utgangspunktet som PowerShell tar fra alle tradisjonelle skall.
De tre konseptene som introduseres i denne delen er bare det aller grunnleggende for å forstå nøkkelkonseptene som danner grunnlaget for PowerShell. Du må bruke mer tid på å lære og mestre de mer avanserte konseptene etter hvert som du nærmer deg PowerShell-kommandoer.
PowerShell er installert som standard i Windows 10, Windows 7, Windows Server 2008 R2 og nyere versjoner av Windows. Nyere versjoner av PowerShell legger til nye funksjoner og «cmdlets» (Microsofts betegnelse for PowerShell-kommandoer – uttales «command-lets») og installeres med den tilsvarende versjonen av Windows Management Framework (WMF).
For øyeblikket er WMF 5.1 den nyeste anbefalte versjonen. I noen tilfeller er noen nye funksjoner avhengige av operativsystemet i tillegg til WMF-versjonen. For eksempel støtter Windows 8 og Windows Server 2012 cmdleten Test-NetConnection, som lar deg teste tilkoblingen til en bestemt TCP/IP- port , men denne cmdleten er ikke tilgjengelig i Windows 7 selv når du kjører den nyeste versjonen av WMF.
På de fleste Windows-systemer vil brukere ha to PowerShell-miljøer tilgjengelig, PowerShell-konsollen og PowerShell ISE (Integrated Scripting Environment). PowerShell-konsollen vises som en tradisjonell kommandolinje, men med full funksjonalitet fra PowerShell bak seg. Variabelnavn, løkker, autofullføring av kommandoer og piping er alle tilgjengelige fra PowerShell-konsollen.
For mer avansert bruk (som skripting) tilbyr PowerShell ISE automatisk kommandofullføring, kodeutheving og Microsofts Intellisense-kodefullføring for å hjelpe deg med å opprette og teste PowerShell-kode. PowerShell ISE lar deg også jobbe med flere PowerShell-skript samtidig ved hjelp av fanebasert navigasjon.
Grunnlaget for PowerShell-kommandoer er cmdlet-en. Microsoft brukte flere designstrategier da de opprettet cmdleter i PowerShell.
For det første er det muligheten til enkelt å utlede cmdlet-navn, eller i det minste gjøre dem lettere å finne. PowerShell-kommandoer eller cmdleter er også utformet for å være enklere å bruke, med standardisert syntaks, noe som gjør det enklere å lage skript fra kommandolinjegrensesnittet.
Cmdleter bruker Verb-Noun-formatet, som i Get-Service, Stop-Service eller Import-Csv. Verbdelen av cmdlet-navnet indikerer handlingen som utføres på substantivet. Vanligvis vil cmdleter som brukes til å hente informasjon ha verbet Get i navnet sitt, for eksempel Get-Process eller Get-Content . Kommandoer som brukes til å endre noe starter vanligvis med verbet Set , og kommandoer som brukes til å legge til en ny enhet til noe starter vanligvis med Add eller New .
For det andre får parametere som vanligvis brukes i PowerShell også standardiserte navn. For eksempel lar parameteren -ComputerName cmdleten kjøres på en eller flere eksterne datamaskiner. -Credential brukes til å gi et autentiseringsobjekt, som inneholder brukerlegitimasjon, for å kjøre kommandoen som en bestemt bruker.
Du kan bruke aliaser for både cmdleter og parametere for å spare tastetrykk og forkorte den totale lengden på kommandoen (nyttig når du kjeder flere kommandoer sammen). Selv om disse aliasene ikke alltid bruker standard navnekonvensjoner, gjenspeiler de fortsatt tradisjonelle kommandolinjeverktøy.
I PowerShell korresponderer aliaser som DIR, CD, DEL og CLS med henholdsvis cmdletene Get-ChildItem, Set-Location, Remove-Item og Clear-Host. Parameteraliaser kan fungere på to måter: de kan bruke et forhåndsdefinert alias levert av cmdleten, eller de kan aliaseres ved å skrive inn nok tegn til å opprette et unikt samsvar mellom cmdletens støttede parametere.
De fleste systemadministratorer må manipulere filer og mapper i løpet av arbeidet sitt, enten det er å flytte en mappe til et annet sted på serveren, arkivere loggfiler eller søke etter store filer. I tilfeller der de samme operasjonene gjentas på mange filer, vil det å bruke PowerShell til å automatisere dem være en effektiv tidsbesparende løsning.
For å finne filer og mapper var et av de første kommandolinjeverktøyene en administrator lærte i gamle dager med databehandling dir-kommandoen. Dir vil liste opp filene og mappene som finnes i den angitte katalogen.
PowerShell har en lignende kommando i form av Get-ChildItem Cmdlet . Get-ChildItem lar deg raskt bygge en liste over filer i en katalog på en slik måte at du kan manipulere filene via en pipe-kommando eller tilordne utdataene til en variabel.
Get-ChildItem kan brukes ved å oppgi en sti, enten gjennom en pipeline, ved å bruke -Path- parameteren eller rett etter cmdlet-navnet. For å endre svaret som returneres av Get-ChildItem, er det nødvendig å vurdere noen parametere som er gjort tilgjengelige av cmdlet-en.
Parameteren -Filter er én måte du kan søke etter filer på. Som standard returnerer Get-ChildItem bare direkte underfiler til målkatalogen. Denne funksjonaliteten kan utvides ved å bruke parameteren -Recurse , som rekursivt søker i kataloger som finnes i gjeldende katalog.
I PowerShell 4.0 la Get-ChildItem til muligheten til å begrense resultater til filer eller mapper ved hjelp av –File- eller –Directory- bryteren . Tidligere versjoner av PowerShell måtte sende resultatene til Where-Object, og filtrere på PSIsContainer-egenskapen for å gjøre denne bestemmelsen. Et eksempel på begge teknikkene som brukes til å returnere mapper i C:Users vises her:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
For å oppdage skjulte filer eller systemfiler må -Force brukes . Get-ChildItem i PowerShell 4.0 og senere kan også brukes til å returnere bare skjulte, skrivebeskyttede eller systemfiler ved å bruke henholdsvis -Hidden, -ReadOnly og –System . Lignende funksjonalitet kunne oppnås i tidligere versjoner ved å filtrere Mode-egenskapen ved hjelp av Where-Object:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Sjekk om filen finnes
Normalt sett når vi jobber med filer, trenger vi bare å vite om filen finnes eller om katalogstien er gyldig. PowerShell tilbyr en cmdlet for å gjøre dette i form av Test-Path, som returnerer verdien sann eller usann.
Test-Path brukes som et forholdsregel før du prøver å kopiere eller slette en bestemt fil.
Kopier, flytt og slett filer
Copy-Item: Kopierer én eller flere filer eller mapper fra en plassering, angitt av -Path-parameteren, til plasseringen angitt av -Destination-alternativet.
Flytt-element: Flytter en fil eller mappe.
Når en katalogstruktur kopieres eller flyttes, bør -Recurse brukes for å få cmdleten til å utføre handlingen på katalogen og dens innhold. I noen tilfeller kreves også -Force , for eksempel når en skrivebeskyttet fil overskrives av en kopieringsoperasjon.
Fjern element: Slett fil, mappe.
Switch -Force bør brukes når du støter på en skrivebeskyttet fil, og -Recurse bør brukes når du sletter en katalog og dens innhold.
Bruk av PowerShell -WhatIf og -Confirm
Før du utfører en alvorlig massesletting, bruk -WhatIf . -WhatIf lar deg se hva som ville skje hvis du kjørte et skript eller en kommando, og om det ville ha noen potensiell negativ innvirkning ved å slette viktige forretningsdata. Det er også verdt å merke seg at -WhatIf ikke er begrenset til filoperasjoner, det er mye brukt i PowerShell.
For skript som du har tenkt å kjøre manuelt, eller enda verre, har avhengige kommandoer som kjører manuelt, bør du vurdere å bruke -Confirm . Dette lar deg kreve brukermedvirkning før operasjonen faktisk finner sted.
PowerShell-skript = Batch-filer på steroider
PowerShell er i seg selv skrevet i .NET-språket og er sterkt basert på .NET Framework. Som sådan er PowerShell designet som et objektorientert skall- og skriptspråk. Alt i PowerShell behandles som et objekt med alle funksjonene til .NET Framework. En kommando eksponerer en samling objekter som kan brukes ved hjelp av egenskapene og metodene til den objekttypen. Når du vil sende utdataene fra én kommando til en annen, sender PowerShell faktisk objektet gjennom, ikke bare tekstutdataene fra den første kommandoen. Dette gir den neste kommandoen full tilgang til alle egenskapene og metodene til objektet i pipelinen.
Å behandle alt som et objekt og kunne godta objekter mellom kommandoer er en stor endring i teorien bak kommandolinjeverktøy. Når det er sagt, fungerer PowerShell fortsatt som et tradisjonelt skall. Kommandoer, skript og kjørbare filer kan skrives og kjøres fra kommandolinjen, og resultatene vises som tekst. Windows .CMD- og .BAT-filer, VBScripts, JScripts og de kjørbare filene som kjører i CMD.EXE kjører fortsatt i PowerShell. Men fordi de ikke er objektorienterte, har de ikke full tilgang til objektene som opprettes og brukes i PowerShell. Disse eldre skriptene og kjørbare filene vil fortsatt behandle alt som tekst, men du kan kombinere PowerShell med en rekke andre teknologier. Dette er spesielt viktig hvis du vil begynne å bruke PowerShell med en samling av eksisterende skript som du ikke kan konvertere samtidig.
Cmdleter kan godta parametere for å endre oppførselen sin. Når du kjører en cmdlet eller funksjon, kan du oppgi parameterverdier for å spesifisere hva, når, hvor og hvordan hver PowerShell-kommando kjøres.
For eksempel vil Get-Process hente og liste opp alle kjørende prosesser i operativsystemet ditt:
Men hva om du bare vil hente en spesifikk prosess? Du kan gjøre det ved hjelp av parametere. For eksempel, for å hente alle Slack-prosesser, kan du bruke Name-parameteren med Get-Process-cmdlet-en:
Get-Process -Name Slack
Da vil du bare se prosesser med navnet «slack»:
Tips : Noen parametere er «posisjonelle», som betyr at navnene deres er valgfrie. I dette tilfellet utfører både Get-Process -Name Slack og Get-Process Slack den samme oppgaven.
Hver cmdlet godtar forskjellige typer parametere. Bruk Get-Help-kommandoen for å se de aksepterte parameterne for cmdleten i syntaksdelen.
Get-Help Get-Process
Du vil se en liste over alle mulige måter du kan kjøre den gitte cmdleten på:
I dette tilfellet godtar Get-Process-cmdleten parametere som Navn, Id, ComputerName, Modul, FileVersionInfo og andre vanlige parametere. Symbolene her betyr:
Symbol |
Navn |
Betydning |
---|---|---|
Tromme |
Parameteren godtar ikke inndata |
|
- |
Bindestrek |
Angi parameternavnet |
<> |
krøllparenteser |
Plassholder for tekst |
[] |
Parenteser |
Parameteren kan akseptere én eller flere verdier. |
{} |
krøllparenteser |
Parameteren aksepterer et sett med verdier. |
Parametre godtar et sett med verdier som angir hvilken type data de trenger, for eksempel streng, heltall, boolsk verdi eller DateTime. For eksempel følgende kommando:
Get-Process [[-Name] ]
... betyr at Navn -parameteren godtar én eller flere strengverdier, mens denne kommandoen:
Get-Process -Id
... betyr at Id -parameteren godtar én eller flere heltallsverdier.
Det forrige Get-Process-eksemplet brukte Name-parameteren for å snevre inn resultatene. Hvis du imidlertid vil snevre det inn til en mer spesifikk prosess, kan du bruke ID- parameteren , som krever et heltall som angitt i syntaksen.
Get-Process -Id 3016
Da vil du bare se én prosess i listen:
PowerShell behandler alle data som objekter. For å bygge et skript kjøres disse objektene gjennom en serie cmdleter eller funksjoner som er koblet sammen med pipeline-symbolet (|). Å velge riktige cmdleter og koble dem sammen i en logisk rekkefølge ved hjelp av en pipeline er viktig for et effektivt skript.
La oss si at du lager et skript for å sortere og vise de fem filene som tar opp mest plass i en katalog. Det finnes kraftigere måter å skrive et filsorteringsskript på, men denne enkle er lett å forstå:
For å gjøre dette i PowerShell, bruk en pipeline som ser slik ut:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Nå som vi har en fungerende pipeline, kan du lagre den som en PS1-skriptfil, slik at du ikke trenger å importere den hver gang du bruker den.
Den enkleste måten å opprette en PS1-fil på er å lime inn skriptet ditt i Notisblokk og lagre filen med filtypen .ps1.
Når du har opprettet PS1-filen, kan du bruke den i PowerShell ved å kjøre ./ScriptName.ps1 :
Tips : Hvis du får en tillatelsesfeil, er den raskeste løsningen å kjøre PowerShell med administratorrettigheter når du kjører skriptet ditt.
Gratulerer! Du kan nå opprette PowerShell PS1-skript.
Å lese om og forstå hvor fantastisk ny teknologi er er én ting, men å faktisk bruke den er noe annet! I resten av denne artikkelen skal vi utvikle et PowerShell-skript for å demonstrere dens funksjoner og hvordan man bruker det.
DIR er en av de vanligste kommandoene i CMD.EXE . Denne kommandoen viser alle filene og underkatalogene som finnes i en overordnet katalog (som vist i figur 1). Sammen med navnet på hvert objekt inkluderer informasjonen som gis dato og klokkeslett for siste oppdatering og størrelsen på hver fil. DIR viser også den kombinerte størrelsen på alle filene i katalogen, samt det totale antallet filer og underkataloger.
Figur 1
Å kjøre DIR i PowerShell produserer også en katalogliste som figur 2, men på en litt annen måte. PowerShell har ikke en DIR-kommando, men har i stedet Get-ChildItem, som utfører samme funksjon. I PowerShell er DIR et alias for Get-ChildItem. Jeg har ikke tenkt å gå inn på aliaser i denne artikkelen. Du kan tenke på DIR i PowerShell som en forkortelse for Get-ChildItem.
DIR i PowerShell gir mye av den samme informasjonen som nevnt ovenfor: en liste over filer og mapper, dato og klokkeslett de sist ble endret, og størrelsen på hver fil. Den mangler imidlertid den sammendragsinformasjonen som DIR i CMD.EXE gir: den totale størrelsen på alle filene i mappen, det totale antallet filer og det totale antallet undermapper.
Figur 2
For eksempelscenarioet må du opprette et PowerShell-skript som simulerer CMD.EXE DIR-kommandoen. Nedenfor vil jeg forklare de viktigste delene av et skript.
DIR.PS1: Topptekst
Et PowerShell-skript består av PowerShell-kommandoer i en ren tekstfil med filtypen .PS1. I stedet for DIR bruker du en tekstfil kalt DIR.PS1.
For å kjøre skriptet, skriv inn følgende kommando i PowerShell-skjermen:
.DIR.PS1 X:Folder
Der X er bokstaven til diskpartisjonen (som C, D, E) og Folder er mappenavnet.
Hvis du vil vite litt informasjon om en diskpartisjon, må du bruke Windows Management Instrumentation (WMI). Detaljene om WMI er utenfor rammen av denne artikkelen, så vi går ikke inn på dem her. Men PowerShell-koden nedenfor er enkel nok å forstå uten å bruke WMI. Du kan opprette en "$filter"-variabel som skal brukes med Get-WmiObject-kommandoen. Dette filteret forteller Get-WmiObject-kommandoen at du bare vil ha informasjon om en bestemt disk. Resultatene av Get-WmiObject-kommandoen lagres i en variabel kalt $volInfo. Husk at i PowerShell er alt et objekt; $volInfo er nå et objekt som returneres av Get-WmiObject.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Nå har du tilgang til alle objektene og metodene som er knyttet til objektet. Volumets serienummer er tilgjengelig via VolumeSerialNumber-egenskapen. Det returnerte tallet er en streng på 8 tegn. Men ofte vil du formatere det som fire tall, atskilt med en bindestrek. Dette kan gjøres på samme måte som i den følgende linjen. Bindestreken på slutten av den første linjen er linjefortsettelsestegnet i PowerShell. Den forteller i utgangspunktet PowerShell at linjen ikke brytes, og at den inkluderer den neste linjen. Linjeskift er ikke nødvendige når du skriver kode, men for å redusere bredden og gjøre koden mer lesbar, bør du gjøre det.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Nå som du har et $volInfo-objekt, kan du skrive DIR-headerinformasjonen til skjermen. Hvis stasjonen ikke har noe navn, vil teksten som skrives til skjermen være litt annerledes enn om stasjonen har et navn. En enkel If-Else-setning brukes til å sjekke om VolumeName-egenskapen er en tom streng. Write-Host-setningen brukes til å skrive hver tekstlinje til skjermen.
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 begynnelsen og slutten av Write-Host-kommandoen brukes til å sette inn en ny linje før og etter teksten. Write-Host-kommandoen legger til en ny linje på slutten av hver linje. Effekten av «`n» er derfor å lage en blank linje før og etter teksten.
La du merke til «-eq» i If-kommandoen? Det er en likhetssammenligningsoperator. Tabellen nedenfor viser alle sammenligningsoperatorene:
-ekv, -iekv | Sammenlign etter |
-ne, -ine | Sammenligning er ikke lik |
-gt, -igt | Sammenlign større enn |
-ge, -ige | Sammenlign større enn eller lik |
-lt, -ilt | Sammenlign mindre enn |
-le, -ile | Sammenlign mindre enn eller lik |
Tegnet -i før sammenligningsoperatorene indikerer at operatoren ikke skiller mellom store og små bokstaver.
Figur 3: Utdata for skriptet du har nå
DIR.PS1: Liste over filer/mapper
Nå er du klar til å vise innholdet og egenskapene til denne mappen. Det første du må gjøre er å kalle PowerShell Get-ChildItem-kommandoen for å hente en samling filer og sende den til skriptet som en parameter. Get-ChildItem-kommandoen vil hente en samling av fil- og mappeobjekter, ikke bare navnene deres, men vil også sende disse objektene direkte inn i Sort-Object-kommandoen for å sortere dem. Som standard vil Sort-Object-kommandoen sortere objekter basert på Navn-egenskapen. Så du trenger ikke å spesifisere noen andre parametere. Den sorterte samlingen av objekter vil deretter bli lagret i en variabel kalt $items.
$items = Get-ChildItem $args[0] | Sort-Object
Når du har en samling av fil- og mappeobjekter, må du gå gjennom dem i løkke og vise de riktige egenskapene. Kommandoen for dette er ForEach. For hver fil eller mappe vil egenskapene som vises være dato og klokkeslett, navn, lengde eller størrelse på filen for siste endring. De merkelige strengene i parentesene er .NET-strengformatkoder. De brukes til å venstre-/høyrejustere felt og formatere datoer, klokkeslett og tall. Det er ikke veldig viktig å forstå disse strengformatkodene, da de ikke er essensielle for skriptets natur.
If-setningen er der du avgjør om et objekt er en katalog eller ikke. Hvis det første tegnet i Mode-attributtet er «d», er objektet en katalog. Du må dobbeltsjekke fordi koden for kataloger ofte er forskjellig fra koden for filer.
Legg merke til $totalDirs++-linjen i If-setningen. Dette er en teller som er ansvarlig for å holde oversikt over antall mapper. På samme måte finnes det en $totalFiles-variabel som brukes til å holde oversikt over den totale størrelsen på alle filene. Disse verdiene beregnes alltid under kjøring. Men de vises bare når filopplistingsprosessen er fullført.
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
}
Figur 4: Viser utdataene for det oppdaterte skriptet.
DIR.PS1: Bunntekst
Det eneste som gjenstår å gjøre er å skrive det totale antallet filer, mapper, den totale størrelsen på alle filer og ledig plass på denne diskpartisjonen til skjermen. For å gjøre dette må du bruke tellervariablene ($totalFiles, $totalDirs, $totalSize) som ble opprettet i forrige avsnitt. Du kan finne ut mengden ledig plass fra $volInfo-variabelen som ble opprettet i begynnelsen av skriptet.
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")
Figur 5: Viser de komplette utdataene for skriptet.
Prognoser og forbedringer kan være
Selv om skriptet du lager produserer nesten identisk utdata som CMD.EXE DIR-kommandoen, er det noen forbehold du bør være oppmerksom på og noen forbedringer som kan gjøres.
Du kan bruke PowerShell til å automatisere nesten hva som helst, som å gi filer nytt navn i flere grupper for å sikre konsistens eller automatisk starte programmer. La oss skrive noen enkle Windows PowerShell-skript for å se hvordan det fungerer.
Merk : Hvis du støter på en feil angående utførelsespolicyen når du kjører skriptet, må du kanskje midlertidig tillate at skriptet kjøres ved å kjøre «Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass».
Gi filer i en mappe et nytt navn i en batch
Du kan bruke PowerShell til å kopiere, flytte og slette filer på PC-en. Du kan også gi nytt navn til filer av en bestemt filtype samtidig. For eksempel, her er hvordan du kan gi nytt navn til flere tekstfiler ved å erstatte prefikset «oldco» med «newco» i filnavnene deres:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
I skriptet ovenfor er «.txt» filteret for filtypen. Du kan endre det og sette det til .jpg, .docx osv. for å søke etter forskjellige filtyper.
Automatisk start av applikasjon
Hvis du åpner det samme settet med applikasjoner hver dag, kan du skrive et PowerShell-skript for å starte dem med et enkelt klikk:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Lim inn skriptet i en Notisblokk-fil og lagre det som LaunchFavoriteApps.ps1. Dobbeltklikk deretter på filen for å starte alle appene som er oppført i skriptet.
Kopier viktige filer til en sikkerhetskopiplassering
Du kan sikkerhetskopiere viktige filer til en sikkerhetskopiplassering med jevne mellomrom ved hjelp av følgende skript. Sørg for å endre kilde- og målbanene etter behov:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Siden mange typer filer lastes ned hver dag, kan Nedlastinger- mappen fort bli overfylt med alle slags filer spredt rundt omkring. For å fikse dette kan vi skrive et PowerShell-skript som sorterer nedlastede filer i mapper etter filtype på slutten av hver dag.
Åpne en ny Notisblokk-fil og lim inn følgende skript. Sørg for å endre kildemappebanen i skriptet slik at den samsvarer med nedlastingsmappebanen:
# 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 å lagre filen, klikk på Fil > Lagre som og skriv inn OrganizeDownloadsFolder.ps1 som filnavn. Klikk deretter på Lagre som type og velg Alle filer . Dobbeltklikk på OrganizeDownloadsFolder.ps1 -filen for å kjøre skriptet.
Selvfølgelig er det å skrive et skript en del av automatiseringsprosessen. Den andre delen er å sørge for at skriptet kan kjøres automatisk for å utføre oppgaven. For å gjøre dette kan vi opprette planlagte oppgaver for å kjøre skriptet daglig eller etter behov.
Åpne PowerShell, kopier og lim inn følgende skript, og trykk Enter . Sørg for å erstatte 'J:\OrganizeDownloadsFolder.ps1' med hele filbanen til OrganizeDownloadsFolder.ps1 -skriptet ditt .
$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 ferdig, trykker du på Enter . Skriptet oppretter en planlagt oppgave i Oppgaveplanleggeren for å kjøre filorganiseringsskriptet hver dag klokken 17:00. Hvis du foretrekker et annet tidspunkt, kan du endre det i skriptet ovenfor.
I tillegg kan du bruke PowerShell til å automatisere andre hverdagsoppgaver, for eksempel et skript for plassovervåking som varsler deg når du går tom for ledig plass på hoveddisken, passordbeskytte grupper med PDF-dokumenter og til og med bruke levende bakgrunnsbilder fra bildemappen din.
Selv om PowerShell er et kraftig verktøy og skriptspråk, tar det litt tid å forstå og bruke det, spesielt hvis du ikke er kjent med .NET Framework-miljøet. Jeg håper denne artikkelen og eksempelskriptet vil være nyttig for alle som ønsker å forstå PowerShell. Men eksempelskriptet som er laget i artikkelen er ganske enkelt. Jeg tror det kan bygges og utvikles mer fullstendig for å betjene mer komplekse applikasjoner.
Du kan sikkerhetskopiere og gjenopprette Microsoft Defender-innstillingene dine på en ny datamaskin eller feilsøke eventuelle problemer du måtte ha med programmet.
Store mapper på systemet er en av synderne som spiser opp mye systemplass. Mange mapper du oppretter etter å ha slettet, vil komme tilbake etter en stund. Kanskje det er søppelmapper som du prøver å fjerne.
GodeMode kalles snarveien Windows Master Control Panel. GodMode (eller God Mode) er et kontrollpanel som lar deg konfigurere og få tilgang til alt på Windows-operativsystemet ditt.
Denne artikkelen vil forsøke å dekke CCNA-kommandoene i både ICND del 1 og 2, samt den nåværende CCNA-eksamenen (640-802).
Ved å slå sammen flere disker med lagringsplasser i Windows 11 kan brukere beskytte filer mot diskfeil samtidig som de konsoliderer lagring til én enkelt, brukervennlig virtuell disk.
Mange har opplevd problemet med at nettverkskortet forsvinner fra Enhetsbehandling eller mottar en melding om manglende nettverkskort. Denne artikkelen vil veilede deg om hvordan du løser problemet med manglende nettverkskortdriver i Windows 10.
Windows oppretter automatisk systemgjenopprettingspunkter opptil en angitt grense, slik at du får dusinvis av gjenopprettingspunkter du aldri bruker.
Hvis resultatene virker tregere enn forventet, ikke vær for rask til å skylde på internettleverandøren din – feil når du utfører testen kan forvrenge tallene dine.
I artikkelen nedenfor vil vi introdusere og veilede deg i å lære om konseptet QoS – Quality of Service – på ruterenheter.
Fra å slette midlertidige filer til å oppdatere programvare, finnes det mange enkle og effektive måter å holde datamaskinen din i gang som ny.
Windows Defender er innebygd i Windows 10 for å finne skadelig programvare. For å forbedre ytelsen for oppgaver som å kompilere kode eller kjøre virtuelle maskiner, kan du legge til unntak slik at Windows Defender aldri skanner disse filene.
En rask måte å fikse de vanligste problemene med kablede nettverk på er å tilbakestille Ethernet-tilkoblingen. Her er trinnene for å tilbakestille Ethernet-tilkoblingen i Windows 11.
Feilkode 0xc0000098 i Windows forårsaker en blåskjermfeil ved oppstart. ACPI.sys-driveren er ofte årsaken, spesielt på ikke-støttede versjoner av Windows 11 som 23H2 eller 22H2 eller Windows 10.
Å endre visningsspråket i Windows 11 kan føre til at noen programmer ikke viser tekst på språket du ønsker. Hvis dette er tilfelle, bør du aktivere Unicode UTF-8 for å hjelpe Windows med å vise tekst riktig på språket du ønsker.
Gjennom årene har folk oppdaget en samling gratis Windows-verktøy som hjelper med å diagnostisere hva som forårsaker at systemet deres blir tregere.
SuperFetch er tilgjengelig på Windows-versjoner, men er kjent av svært få brukere. I artikkelen nedenfor vil WebTech360 veilede deg i hvordan du aktiverer eller deaktiverer SuperFetch på Windows 10/8/7.
Microsoft Store (Windows Store) er ikke den mest populære appbutikken, da den er full av feil, problemer og har en tendens til å være ustabil.
Windows Filutforsker tilbyr mange alternativer for å endre hvordan du viser filer. Det du kanskje ikke vet er at ett viktig alternativ er deaktivert som standard, selv om det er avgjørende for systemets sikkerhet.
USB-enheter har blitt uunnværlige i hverdagen, slik at vi kan koble et bredt utvalg av viktig maskinvare til PC-ene våre.
Selv om Windows Storage Sense effektivt sletter midlertidige filer, er noen typer data permanente og fortsetter å hope seg opp.
Du kan sikkerhetskopiere og gjenopprette Microsoft Defender-innstillingene dine på en ny datamaskin eller feilsøke eventuelle problemer du måtte ha med programmet.
Store mapper på systemet er en av synderne som spiser opp mye systemplass. Mange mapper du oppretter etter å ha slettet, vil komme tilbake etter en stund. Kanskje det er søppelmapper som du prøver å fjerne.
GodeMode kalles snarveien Windows Master Control Panel. GodMode (eller God Mode) er et kontrollpanel som lar deg konfigurere og få tilgang til alt på Windows-operativsystemet ditt.
Denne artikkelen vil forsøke å dekke CCNA-kommandoene i både ICND del 1 og 2, samt den nåværende CCNA-eksamenen (640-802).
Ved å slå sammen flere disker med lagringsplasser i Windows 11 kan brukere beskytte filer mot diskfeil samtidig som de konsoliderer lagring til én enkelt, brukervennlig virtuell disk.
Mange har opplevd problemet med at nettverkskortet forsvinner fra Enhetsbehandling eller mottar en melding om manglende nettverkskort. Denne artikkelen vil veilede deg om hvordan du løser problemet med manglende nettverkskortdriver i Windows 10.
Windows oppretter automatisk systemgjenopprettingspunkter opptil en angitt grense, slik at du får dusinvis av gjenopprettingspunkter du aldri bruker.
Hvis resultatene virker tregere enn forventet, ikke vær for rask til å skylde på internettleverandøren din – feil når du utfører testen kan forvrenge tallene dine.
I artikkelen nedenfor vil vi introdusere og veilede deg i å lære om konseptet QoS – Quality of Service – på ruterenheter.
Fra å slette midlertidige filer til å oppdatere programvare, finnes det mange enkle og effektive måter å holde datamaskinen din i gang som ny.