Kaip atkurti programas „Windows“ kompiuteriuose
Jei jūsų „Nustatymai“ arba „Microsoft Store“ programėlė neveikia tinkamai, stringa arba neatsidaro, galite programėlę nustatyti iš naujo.
O jeigu jūsų kompiuteris galėtų atlikti įprastas užduotis už jus? Su „Windows PowerShell“ jis tai gali. Štai kaip naudoti „PowerShell“, norint automatizuoti pasikartojančias, kasdienes užduotis, kurių niekas nenori daryti vėl ir vėl.
Turinys
„Microsoft PowerShell“ yra komandinės eilutės įrankis ir scenarijų kalba, galingas įrankis administratoriams, skirtas automatizuoti įvairias užduotis kompiuteriams ir tinklams. „PowerShell“ sudėtyje yra komandinės eilutės komponentai ir ji sukurta remiantis .NET sistema. Jei skaitote apie „WebTech360“, turėtumėte žinoti, kad „PowerShell“ yra IT administratorių pasirinkta priemonė dideliems tinklams valdyti.
Išmokę naudotis „PowerShell“, supaprastinsite daugelį varginančių kasdienių užduočių. Taip pat galėsite atlikti visos sistemos pakeitimus tinkle, nereikės atskirai konfigūruoti kiekvieno serverio. „PowerShell“ tampa esmine hibridinių debesų aplinkų veikimo dalimi .
„PowerShell“ turi daug skirtingų panaudojimo būdų, kurie padeda jums dirbti efektyviau ir užtikrinti efektyvų tinklo veikimą. Pagrindiniai panaudojimo būdai: kasdienių sistemų atnaujinimų planavimas, ataskaitų apie dabartinius procesus generavimas, periodinės paslaugos ir kt. Nors daugelį šių užduočių galima atlikti naudojant grafinę sąsają, „PowerShell“ tikslas yra jas atlikti greičiau.
Jei turite įprastinę priežiūros užduotį, kurios nustatymas trunka kelias minutes, galite tą pačią funkciją sutalpinti į vieną komandą, pavadintą „PowerShell“. Kitą kartą atidarius tą scenarijų, jis veiks fone. Įvaldę „PowerShell“ scenarijų rašymo logiką, supratę, kaip veikia objektai ir kintamieji, bei sumaniai juos diegdami tinkle, susimąstysite, kodėl anksčiau nenaudojote „PowerShell“.
Šiame vadove apžvelgsime „PowerShell“ pagrindus, kurie bus naudingi naujokams IT srityje, ypač jei esate susipažinę su „Windows“ komandų eilute. Jame apžvelgsime, kaip naudoti pagrindinius įrankius ir komandas, kaip dirbti su failais ir aplankais, suprasti objektus, naudoti kintamuosius ir valdyti nuotolinius serverius.
Išleidus „Windows NT“, CMD.EXE tapo „Windows“ komandinės eilutės įrankiu. Nors CMD.EXE paveldėjo kai kuriuos elementus iš savo DOS pirmtako (COMMAN.COM), jis vis dar buvo pagrįstas gana „primityvia“ scenarijų kalba: naudojo „Windows“ komandų failus (.CMD ir .BAT). Pridėjus „Windows Scripting Host“ ir VBScript bei JScript kalbas, programos scenarijų rašymo galimybės gerokai padidėjo.
Šios technologijos yra gana subalansuotas pažangių komandinės eilutės įrankių ir scenarijų aplinkų derinys. Tikrasis rūpestis yra ne tai, kiek CMD.EXE, .CMD ir „Windows Scripting Host“ failų galima apdoroti jomis. Pagrindinis nusiskundimas ir rūpestis yra tai, kaip atlikti kai kurias, atrodytų, paprastas užduotis.
Naudojant komandinės eilutės ir scenarijų kūrimo įrankių „sistemą“, bet kokiam vidutiniškai išsamiam scenarijui reikalingas paketinių komandų, „Windows Scripting Host“ ir atskirų vykdomųjų failų derinys. Kiekvienas scenarijus naudoja skirtingas vykdymo ir užklausų, duomenų analizės ir grąžinimo konvencijas.
Prastas kintamųjų palaikymas CMD.EXE faile, nenuoseklios sąsajos ir ribota prieiga prie „Windows“ nustatymų kartu su kitu trūkumu apsunkina komandinės eilutės scenarijų įdiegimą ir naudojimą. Galite paklausti, koks tas „kitas trūkumas“? Tai tekstas. Šiose technologijose viskas yra tekstas. Komandos ar scenarijaus išvestis yra tekstas, kurį reikia išanalizuoti ir performatuoti, kad jis veiktų kaip įvestis kitai komandai. Tai yra pagrindinis atspirties taškas, kurį „PowerShell“ ima iš visų tradicinių apvalkalų.
Trys šiame skyriuje pristatytos sąvokos yra tik pačios pagrindinės, norint suprasti pagrindines „PowerShell“ pagrindus sudarančias sąvokas. Naudodamiesi „PowerShell“ komandomis, turėsite skirti daugiau laiko sudėtingesnių sąvokų mokymuisi ir įvaldymui.
„PowerShell“ pagal numatytuosius nustatymus įdiegiama „Windows 10“, „Windows 7“, „Windows Server 2008 R2“ ir naujesnėse „Windows“ versijose. Naujesnėse „PowerShell“ versijose pridedama naujų funkcijų ir „cmdlet“ („Microsoft“ terminas, reiškiantis „PowerShell“ komandas – tariamas „komandų-let“) ir jos įdiegiamos kartu su atitinkama „Windows Management Framework“ (WMF) versija.
Šiuo metu naujausia rekomenduojama versija yra WMF 5.1. Kai kuriais atvejais, be WMF versijos, kai kurios naujos funkcijos priklauso ir nuo operacinės sistemos. Pavyzdžiui, „Windows 8“ ir „Windows Server 2012“ palaiko „Test-NetConnection“ cmdlet, kuri leidžia patikrinti ryšį su konkrečiu TCP/IP prievadu , tačiau ši cmdlet nėra pasiekiama „Windows 7“ net ir naudojant naujausią WMF versiją.
Daugumoje „Windows“ sistemų vartotojai gali naudotis dviem „PowerShell“ aplinkomis: „PowerShell“ konsole ir „PowerShell ISE“ (integruota scenarijų aplinka). „PowerShell“ konsolė atrodo kaip tradicinė komandinė eilutė, tačiau joje yra visos „PowerShell“ funkcijos. Kintamųjų pavadinimai, ciklai, automatinis komandų užbaigimas ir perdavimas pasiekiami „PowerShell“ konsolėje.
Pažangesniam naudojimui (pvz., scenarijų kūrimui) „PowerShell ISE“ teikia automatinio komandų užbaigimo, kodo paryškinimo ir „Microsoft Intellisense“ kodo užbaigimo funkcijas, kurios padeda kurti ir testuoti „PowerShell“ kodą. „PowerShell ISE“ taip pat leidžia vienu metu dirbti su keliais „PowerShell“ scenarijais naudojant naršymą skirtukais.
„PowerShell“ komandų pagrindas yra cmdlet. Kurdama cmdlet „PowerShell“ sistemoje, „Microsoft“ taikė kelias projektavimo strategijas.
Pirma, tai galimybė lengvai nustatyti cmdlet pavadinimus arba bent jau padaryti juos lengviau aptinkamus. „PowerShell“ komandos arba cmdlet taip pat sukurtos taip, kad būtų lengviau naudoti, naudojant standartizuotą sintaksę, todėl lengviau kurti scenarijus iš komandinės eilutės sąsajos.
„cmdlet“ naudoja veiksmažodžio-daiktavardžio formatą, pvz., „Get-Service“, „Stop-Service“ arba „Import-Csv“. Veiksmažodžio dalis „cmdlet“ pavadinime nurodo veiksmą, atliekamą su daiktavardžiu. Paprastai „cmdlet“, kurios naudojamos informacijai gauti , pavadinime turi veiksmažodį „ Get“ , pvz., „Get-Process“ arba „Get-Content“ . Komandos, naudojamos kažkam modifikuoti, paprastai prasideda veiksmažodžiu „ Set“ , o komandos, naudojamos naujam objektui pridėti, paprastai prasideda „ Add“ arba „New“ .
Antra, „PowerShell“ dažniausiai naudojamiems parametrams taip pat suteikiami standartizuoti pavadinimai. Pavyzdžiui, parametras „-ComputerName“ leidžia cmdlet vykdyti viename ar keliuose nuotoliniuose kompiuteriuose. „-Credential“ naudojamas autentifikavimo objektui, kuriame yra vartotojo kredencialai, pateikti, kad komanda būtų vykdoma kaip konkretus vartotojas.
Galite naudoti slapyvardžius tiek cmdlet, tiek parametrams, kad sutaupytumėte klavišų paspaudimų ir sutrumpintumėte bendrą komandos ilgį (naudinga, kai sujungiamos kelios komandos). Nors šie slapyvardžiai ne visada naudoja standartines pavadinimų suteikimo konvencijas, jie vis tiek atspindi tradicines komandinės eilutės priemones.
„PowerShell“ programoje tokie slapyvardžiai kaip DIR, CD, DEL ir CLS atitinka atitinkamai „Get-ChildItem“, „Set-Location“, „Remove-Item“ ir „Clear-Host“ cmdlet. Parametrų slapyvardžiai gali veikti dviem būdais: jie gali naudoti iš anksto apibrėžtą cmdlet pateiktą slapyvardį arba jiems gali būti suteikti slapyvardžiai įvedant pakankamai simbolių, kad būtų sukurtas unikalus atitikmuo tarp cmdlet palaikomų parametrų.
Dauguma sistemos administratorių dirbdami turi tvarkyti failus ir aplankus – perkelti aplanką į kitą vietą serveryje, archyvuoti žurnalų failus ar ieškoti didelių failų. Tais atvejais, kai tos pačios operacijos kartojasi su daugeliu failų, „PowerShell“ naudojimas joms automatizuoti bus efektyvus laiko taupymo sprendimas.
Vienas pirmųjų komandinės eilutės įrankių, kurį administratorius išmokdavo senais kompiuterių laikais, norint rasti failus ir aplankus, buvo komanda „dir“. Komanda „Dir“ išvardins nurodytame kataloge esančius failus ir aplankus.
„PowerShell“ turi panašią komandą „Get-ChildItem“ cmdlet formatu . „Get-ChildItem“ leidžia greitai sukurti failų sąrašą kataloge taip, kad galėtumėte manipuliuoti failais naudodami „pipe“ komandą arba priskirti išvestį kintamajam.
Funkciją „Get-ChildItem“ galima naudoti tiesiog pateikiant kelią – per srautą naudojant parametrą „-Path“ arba tiesiai po cmdlet pavadinimo. Norint modifikuoti „Get-ChildItem“ grąžinamą atsakymą, būtina atsižvelgti į kai kuriuos cmdlet teikiamus parametrus.
Parametras „-Filter“ yra vienas iš failų paieškos būdų. Pagal numatytuosius nustatymus „Get-ChildItem“ grąžina tik tiesioginius tikslinio katalogo antrinius failus. Šią funkciją galima išplėsti naudojant parametrą „-Recurse“ , kuris rekursyviai ieško katalogų, esančių dabartiniame kataloge.
„PowerShell 4.0“ versijoje „Get-ChildItem“ pridėjo galimybę apriboti rezultatus failais arba katalogais naudojant jungiklį „–File“ arba „–Directory“ . Ankstesnėse „PowerShell“ versijose rezultatai turėjo būti perduoti „Where-Object“, filtruojant pagal „PSIsContainer“ savybę, kad būtų galima tai nustatyti. Abiejų metodų, naudojamų C:Users katalogams grąžinti, pavyzdys pateiktas čia:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
Norint aptikti paslėptus arba sisteminius failus, reikia naudoti „-Force“ . „Get-ChildItem“ „PowerShell 4.0“ ir naujesnėse versijose taip pat gali būti naudojamas norint grąžinti tik paslėptus, tik skaitomus arba sisteminius failus, atitinkamai naudojant „-Hidden“, „-ReadOnly“ ir „-System“ . Panašias funkcijas ankstesnėse versijose buvo galima pasiekti filtruojant „Mode“ savybę naudojant „Where-Object“:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Patikrinkite, ar failas yra
Paprastai dirbant su failais, tereikia žinoti, ar failas egzistuoja, ir ar katalogo kelias yra galiojantis. „PowerShell“ tam pateikia cmdlet „Test-Path“ formatu, kuris grąžina reikšmę „true“ arba „false“.
Testavimo kelias naudojamas kaip atsargumo priemonė prieš bandant kopijuoti arba ištrinti konkretų failą.
Failų kopijavimas, perkėlimas ir ištrynimas
Kopijuoti elementą: Nukopijuoja vieną ar kelis failus arba katalogus iš vietos, nurodytos parametru „-Path“, į vietą, nurodytą parinktimi „-Destination“.
Perkelti elementą: Perkelti failą arba aplanką.
Kai kopijuojama arba perkeliama katalogo struktūra, norint, kad cmdlet atliktų veiksmą su katalogu ir jo turiniu, turėtų būti naudojama „-Recurse“ . Kai kuriais atvejais taip pat reikalinga „-Force“ , pavyzdžiui, kai kopijavimo operacija perrašo tik skaitomą failą.
Pašalinti elementą: Ištrinti failą, aplanką.
„Switch -Force“ turėtų būti naudojamas, kai susiduriama su tik skaitymui skirtu failu, o „-Recurse“ – kai ištrinamas katalogas ir jo turinys.
Naudojant „PowerShell -WhatIf“ ir „-Confirm“
Prieš atlikdami rimtą, masinį trynimą, naudokite komandą „-WhatIf“ . „-WhatIf“ leidžia pamatyti, kas nutiktų, jei paleistumėte scenarijų ar komandą, ir ar tai turėtų kokį nors neigiamą poveikį, ištrinant svarbius verslo duomenis. Taip pat verta paminėti, kad „-WhatIf“ neapsiriboja failų operacijomis, ji plačiai naudojama „PowerShell“.
Scenarijuose, kuriuos ketinate vykdyti rankiniu būdu arba, dar blogiau, turinčiuose priklausomas komandas, kurios paleidžiamos rankiniu būdu, apsvarstykite galimybę naudoti „-Confirm“ . Tai leidžia reikalauti vartotojo įsikišimo prieš faktiškai įvykstant operacijai.
„PowerShell“ scenarijai = paketiniai failai steroiduose
Pati „PowerShell“ programa parašyta .NET kalba ir yra labai paremta .NET Framework. Todėl „PowerShell“ yra sukurta kaip objektinė apvalkalo ir scenarijų kalba. Viskas „PowerShell“ programoje traktuojama kaip objektas, turintis visas .NET Framework galimybes. Komanda pateikia objektų rinkinį, kurį galima naudoti naudojant to objekto tipo ypatybes ir metodus. Kai norite perduoti vienos komandos išvestį kitai, „PowerShell“ iš tikrųjų perduoda objektą, o ne tik pirmosios komandos tekstinę išvestį. Tai suteikia kitai komandai visišką prieigą prie visų objekto ypatybių ir metodų sraute.
Visko traktavimas kaip objekto ir galimybė priimti objektus tarp komandų yra didelis komandinės eilutės įrankių teorijos pokytis. Nepaisant to, „PowerShell“ vis dar veikia kaip tradicinis apvalkalas. Komandas, scenarijus ir vykdomuosius failus galima įvesti ir vykdyti iš komandinės eilutės, o rezultatai rodomi kaip tekstas. „Windows .CMD“ ir „.BAT“ failai, VBScript, JScript ir vykdomieji failai, kurie veikia CMD.EXE viduje, vis dar veikia „PowerShell“. Tačiau kadangi jie nėra objektiškai orientuoti, jie neturi visiškos prieigos prie objektų, sukurtų ir naudojamų „PowerShell“. Šie seni scenarijai ir vykdomieji failai vis tiek viską laikys tekstu, tačiau „PowerShell“ galite derinti su daugybe kitų technologijų. Tai ypač svarbu, jei norite pradėti naudoti „PowerShell“ su esamų scenarijų rinkiniu, kurio negalite konvertuoti visų iš karto.
„Cmdlet“ gali priimti parametrus, kad pakeistų savo elgseną. Paleidus „Cmdlet“ arba funkciją, galite pateikti parametrų reikšmes, kad nurodytumėte, kas, kada, kur ir kaip vykdoma kiekviena „PowerShell“ komanda.
Pavyzdžiui, „Get-Process“ nuskaitys ir pateiks visų jūsų operacinėje sistemoje veikiančių procesų sąrašą:
O kas, jei norite gauti tik konkretų procesą? Tai galite padaryti naudodami parametrus. Pavyzdžiui, norėdami gauti visus „Slack“ procesus, galite naudoti parametrą „Name“ su „Get-Process“ komanda:
Get-Process -Name Slack
Tada matysite tik procesus pavadinimu „slack“:
Patarimas : kai kurie parametrai yra „poziciniai“, tai reiškia, kad jų pavadinimai yra neprivalomi. Šiuo atveju „ Get-Process -Name Slack“ ir „Get-Process Slack“ atlieka tą pačią užduotį.
Kiekviena „Cmdlet“ komanda priims skirtingų tipų parametrus. Norėdami peržiūrėti priimtus „Cmdlet“ parametrus sintaksės skyriuje, naudokite komandą „Get-Help“.
Get-Help Get-Process
Pamatysite visų galimų būdų, kaip galite paleisti nurodytą cmdlet, sąrašą:
Šiuo atveju „Get-Process“ cmdlet priima tokius parametrus kaip „Name“, „Id“, „ComputerName“, „Module“, „FileVersionInfo“ ir kitus įprastus parametrus. Čia pateikti simboliai reiškia:
Simbolis |
Vardas |
Reikšmė |
---|---|---|
Būgnas |
Parametras nepriima įvesties |
|
- |
Brūkšnelis |
Nurodykite parametro pavadinimą |
<> |
riestiniai skliaustai |
Vieta žymi tekstą |
[] |
Skliausteliai |
Parametras gali priimti vieną ar daugiau reikšmių. |
{} |
riestiniai skliaustai |
Parametras priima reikšmių rinkinį. |
Parametrai priima reikšmių rinkinį, kuris nurodys jiems reikalingų duomenų tipą, pvz., eilutę, sveikąjį skaičių, loginę reikšmę arba datą ir laiką. Pavyzdžiui, ši komanda:
Get-Process [[-Name] ]
... reiškia, kad parametras „Name“ priima vieną ar daugiau eilutės reikšmių, o ši komanda:
Get-Process -Id
... reiškia, kad Id parametras priima vieną ar daugiau sveikųjų skaičių reikšmių.
Ankstesniame „Get-Process“ pavyzdyje rezultatams susiaurinti buvo naudojamas parametras „Name“. Tačiau, jei norite susiaurinti paiešką iki konkretesnio proceso, galite naudoti parametrą „ID“ , kuriam, kaip nurodyta sintaksėje, reikia sveikojo skaičiaus.
Get-Process -Id 3016
Tada sąraše matysite tik vieną procesą:
„PowerShell“ apdoroja visus duomenis kaip objektus. Norint sukurti scenarijų, šie objektai paleidžiami per keletą komandų arba funkcijų, sujungtų vertikaliuoju brūkšniu (|). Tinkamų komandų pasirinkimas ir jų sujungimas logine seka naudojant srautą yra svarbūs norint efektyviai naudoti scenarijų.
Tarkime, kad kuriate skriptą, skirtą rūšiuoti ir rodyti 5 failus, kurie užima daugiausia vietos kataloge. Yra ir galingesnių būdų parašyti failų rūšiavimo skriptą, tačiau šį paprastą skriptą lengva suprasti:
Norėdami tai padaryti „PowerShell“, naudokite vamzdyną, kuris atrodo taip:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Dabar, kai turime veikiantį srautą, galite jį išsaugoti kaip PS1 scenarijaus failą, kad nereikėtų jo importuoti kiekvieną kartą naudojant.
Paprasčiausias būdas sukurti PS1 failą yra įklijuoti scenarijų į „Notepad“ ir išsaugoti failą su .ps1 plėtiniu.
Sukūrę PS1 failą, galite jį naudoti „PowerShell“ paleisdami ./ScriptName.ps1 :
Patarimas : jei gaunate leidimų klaidą, greičiausias sprendimas yra paleisti „PowerShell“ su administratoriaus teisėmis vykdant scenarijų.
Sveikiname! Dabar galite kurti „PowerShell PS1“ skriptus.
Skaityti apie naujų technologijų privalumus ir jų nuostabumo supratimas yra viena, o jas naudoti – visai kas kita! Likusioje straipsnio dalyje sukursime „PowerShell“ scenarijų, kad pademonstruotume jo galimybes ir kaip jį naudoti.
DIR yra viena iš dažniausiai pasitaikančių komandų CMD.EXE faile . Ši komanda rodo visus failus ir pakatalogius, esančius pagrindiniame kataloge (kaip parodyta 1 paveiksle). Kartu su kiekvieno objekto pavadinimu pateikiama informacija apie paskutinio atnaujinimo datą ir laiką bei kiekvieno failo dydį. DIR taip pat rodo visų kataloge esančių failų dydį, taip pat bendrą failų ir pakatalogių skaičių.
1 pav.
Paleidus DIR komandą „PowerShell“ programoje, taip pat sukuriamas katalogų sąrašas, kaip parodyta 2 paveiksle, tik šiek tiek kitaip. „PowerShell“ neturi DIR komandos, o turi Get-ChildItem, kuri atlieka tą pačią funkciją. „PowerShell“ programoje DIR yra Get-ChildItem slapyvardis. Šiame straipsnyje neketinu gilintis į slapyvardžius. DIR „PowerShell“ programoje galite įsivaizduoti kaip Get-ChildItem santrumpą.
„PowerShell“ DIR funkcija pateikia daugumą aukščiau paminėtų duomenų: failų ir aplankų sąrašą, jų paskutinio pakeitimo datą ir laiką bei kiekvieno failo dydį. Tačiau joje trūksta suvestinės informacijos, kurią pateikia CMD.EXE DIR funkcija: bendras visų aplanke esančių failų dydis, bendras failų skaičius ir bendras poaplankių skaičius.
2 pav.
Pavyzdyje pateiktam scenarijui reikės sukurti „PowerShell“ skriptą, kuris imituotų komandą CMD.EXE DIR. Žemiau paaiškinsiu svarbiausias skripto dalis.
DIR.PS1: Antraštė
„PowerShell“ scenarijų sudaro „PowerShell“ komandos paprasto teksto faile su plėtiniu .PS1. Vietoj DIR reikėtų naudoti tekstinį failą pavadinimu DIR.PS1.
Norėdami paleisti scenarijų, „PowerShell“ ekrane įveskite šią komandą:
.DIR.PS1 X:Folder
Kur X yra disko skaidinio raidė (pvz., C, D, E), o aplankas yra aplanko pavadinimas.
Jei norite sužinoti informacijos apie disko skaidinį, turėsite naudoti „Windows Management Instrumentation“ (WMI). WMI detalės nepatenka į šio straipsnio taikymo sritį, todėl čia jų nenagrinėsime. Tačiau toliau pateiktą „PowerShell“ kodą lengva suprasti ir nenaudojant WMI. Galite sukurti kintamąjį „$filter“, kurį naudosite su komanda „Get-WmiObject“. Šis filtras nurodo komandai „Get-WmiObject“, kad norite informacijos tik apie konkretų diską. Komandos „Get-WmiObject“ rezultatai saugomi kintamajame, vadinamame „$volInfo“. Atminkite, kad „PowerShell“ sistemoje viskas yra objektas; „$volInfo“ dabar yra objektas, kurį grąžina komanda „Get-WmiObject“.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Dabar turite prieigą prie visų su objektu susijusių objektų ir metodų. Tomo serijos numerį galima pasiekti per „VolumeSerialNumber“ savybę. Grąžinamas numeris yra 8 simbolių eilutė. Tačiau dažnai norite jį formatuoti kaip keturis skaičius, atskirtus brūkšneliu. Tai galima padaryti panašiai, kaip ir šioje eilutėje. Brūkšnelis pirmos eilutės pabaigoje yra eilutės tęsinio simbolis „PowerShell“ programoje. Jis iš esmės nurodo „PowerShell“, kad eilutė nelūžta ir kad ji apima kitą eilutę. Rašant kodą eilučių lūžiai nebūtini, tačiau norint sumažinti plotį ir padaryti kodą lengviau skaitomą, turėtumėte tai padaryti.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Dabar, kai turite „$volInfo“ objektą, galite įrašyti DIR antraštės informaciją į ekraną. Jei diskas neturi pavadinimo, ekrane rašomas tekstas šiek tiek skirsis nuo to, kas būtų, jei diskas turėtų pavadinimą. Paprastas „If-Else“ sakinys naudojamas norint patikrinti, ar „VolumeName“ savybė yra tuščia eilutė. „Write-Host“ sakinys naudojamas kiekvienai teksto eilutei įrašyti į ekraną.
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")
Simbolis „`n“ komandos „Write-Host“ pradžioje ir pabaigoje naudojamas naujai eilutei įterpti prieš tekstą ir po jo. Komanda „Write-Host“ kiekvienos eilutės pabaigoje prideda naują eilutę. Taigi, simbolio „`n“ efektas yra sukurti tuščią eilutę prieš tekstą ir po jo.
Ar pastebėjote „-eq“ komandoje „If“? Tai lygybės palyginimo operatorius. Žemiau esančioje lentelėje pateikti visi palyginimo operatoriai:
-eq, -ieq | Palyginti pagal |
-ne, -ine | Palyginimas nėra lygus |
-gt, -igt | Palyginkite daugiau nei |
-ge, -ige | Palyginti su didesniu arba lygiu |
-lt, -ilt | Palyginkite mažesnius nei |
-lė, -ilė | Palyginti su mažesniu arba lygiu |
Simbolis -i prieš palyginimo operatorius rodo, kad operatorius neskiria didžiųjų ir mažųjų raidžių.
3 pav.: Jūsų turimo scenarijaus išvesties duomenys
DIR.PS1: Failų / aplankų sąrašas
Dabar esate pasiruošę rodyti šio aplanko turinį ir ypatybes. Pirmiausia reikia iškviesti „PowerShell“ komandą „Get-ChildItem“, kad gautumėte failų rinkinį ir perduotumėte jį scenarijui kaip parametrą. „Get-ChildItem“ komanda gaus failų ir aplankų objektų rinkinį, ne tik jų pavadinimus, bet ir tiesiogiai nukreips šiuos objektus į komandą „Sort-Object“, kad juos surūšiuotų. Pagal numatytuosius nustatymus „Sort-Object“ komanda rūšiuos objektus pagal „Name“ ypatybę. Taigi nereikia nurodyti jokių kitų parametrų. Surūšiuota objektų kolekcija bus saugoma kintamajame, pavadintame „$items“.
$items = Get-ChildItem $args[0] | Sort-Object
Sukūrę failų ir aplankų objektų rinkinį, turite juos peržiūrėti cikle ir parodyti atitinkamas ypatybes. Tam skirta komanda „ForEach“. Kiekvieno failo ar aplanko rodomos ypatybės bus paskutinės modifikacijos data ir laikas, pavadinimas, ilgis arba dydis. Keistai atrodančios eilutės skliausteliuose yra .NET eilučių formatavimo kodai. Jie naudojami laukams sulygiuoti į kairę/dešinę ir datoms, laikui bei skaičiams formatuoti. Šių eilučių formatavimo kodų supratimas nėra labai svarbus, nes jie nėra būtini šio scenarijaus prigimčiai.
„If“ sakinys yra vieta, kur nustatoma, ar objektas yra katalogas, ar ne. Jei pirmasis „Mode“ atributo simbolis yra „d“, objektas yra katalogas. Reikia dar kartą patikrinti, nes katalogų kodas dažnai skiriasi nuo failų kodo.
Atkreipkite dėmesį į eilutę $totalDirs++ sakinyje „If“. Tai skaitiklis, atsakingas už katalogų skaičiaus stebėjimą. Panašiai yra kintamasis $totalFiles, kuris naudojamas bendram visų failų dydžiui stebėti. Šios vertės visada apskaičiuojamos vykdymo metu. Tačiau jos rodomos tik tada, kai failų sąrašo sudarymo procesas baigtas.
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
}
4 pav.: Rodomi atnaujinto scenarijaus išvesties duomenys.
DIR.PS1: Poraštė
Belieka tik ekrane įrašyti bendrą failų ir katalogų skaičių, visų failų bendrą dydį ir laisvą vietą šiame disko skaidinyje. Norėdami tai padaryti, turėsite naudoti ankstesniame skyriuje sukurtus skaitiklių kintamuosius ($totalFiles, $totalDirs, $totalSize). Laisvos vietos kiekį galite sužinoti iš $volInfo kintamojo, sukurto scenarijaus pradžioje.
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")
5 pav.: Rodomi visi scenarijaus išvesties duomenys.
Prognozės ir patobulinimai gali būti
Nors jūsų sukurtas scenarijus sukuria beveik identišką išvestį kaip ir komanda CMD.EXE DIR, yra keletas įspėjimų, į kuriuos turėtumėte atkreipti dėmesį, ir galima atlikti keletą patobulinimų.
„PowerShell“ galite naudoti beveik bet kam automatizuoti, pvz., failų paketiniam pervadinimui siekiant nuoseklumo arba programų automatiniam paleidimui. Parašykime keletą paprastų „Windows PowerShell“ scenarijų, kad pamatytume, kaip tai veikia.
Pastaba : jei vykdant scenarijų įvyksta klaida, susijusi su vykdymo politika, gali tekti laikinai leisti scenarijų vykdyti paleidus „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass“.
Paketinis failų pervadinimas aplanke
„PowerShell“ galite naudoti failams kopijuoti, perkelti ir ištrinti kompiuteryje. Taip pat galite masiškai pervadinti konkretaus tipo failus. Pavyzdžiui, štai kaip galite pervadinti kelis tekstinius failus pakeisdami jų failų pavadinimuose priešdėlį „oldco“ į „newco“:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
Aukščiau pateiktame scenarijuje „.txt“ yra failo plėtinio filtras. Galite jį modifikuoti ir nustatyti į .jpg, .docx ir kt., kad ieškotumėte skirtingų tipų failų.
Automatinis programos paleidimas
Jei kiekvieną dieną atidarote tą patį programų rinkinį, galite parašyti „PowerShell“ scenarijų, kad paleistumėte jas vienu spustelėjimu:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Įklijuokite scenarijų į „Notepad“ failą ir išsaugokite jį kaip „LaunchFavoriteApps.ps1“. Tada tiesiog dukart spustelėkite failą, kad paleistumėte visas scenarijuje išvardytas programas.
Svarbių failų kopijavimas į atsarginių kopijų kūrimo vietą
Galite periodiškai kurti svarbių failų atsargines kopijas atsarginių kopijų kūrimo vietoje naudodami šį scenarijų. Nepamirškite pakeisti šaltinio ir paskirties kelių pagal poreikį:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Kadangi kasdien atsisiunčiama daug įvairių failų tipų, atsisiuntimų aplankas gali greitai užsikimšti visokiais išsibarsčiusiais failais. Norėdami tai ištaisyti, galime parašyti „PowerShell“ scenarijų, kuris kiekvienos dienos pabaigoje rūšiuoja atsisiųstus failus į aplankus pagal failų tipą.
Atidarykite naują „Notepad“ failą ir įklijuokite šį scenarijų. Būtinai pakeiskite šaltinio aplanko kelią scenarijuje, kad jis atitiktų atsisiuntimų aplanko kelią:
# 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!"
Norėdami išsaugoti failą, spustelėkite „Failas“ > „Įrašyti kaip“ ir įveskite failo pavadinimą „OrganizeDownloadsFolder.ps1“ . Tada spustelėkite „Įrašyti kaip tipas“ ir pasirinkite „Visi failai“ . Dukart spustelėkite failą „OrganizeDownloadsFolder.ps1“ , kad paleistumėte scenarijų.
Žinoma, scenarijaus rašymas yra viena automatizavimo proceso dalis. Antroji dalis – užtikrinti, kad scenarijus būtų automatiškai vykdomas užduočiai atlikti. Norėdami tai padaryti, galime sukurti suplanuotas užduotis, kad scenarijus būtų vykdomas kasdien arba pagal poreikį.
Atidarykite „PowerShell“, tada nukopijuokite ir įklijuokite šį scenarijų ir paspauskite „Enter“ . Būtinai pakeiskite „J:\OrganizeDownloadsFolder.ps1“ visu failo keliu į savo „OrganizeDownloadsFolder.ps1“ scenarijų.
$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"
Baigę paspauskite „Enter“ . Scenarijus sukurs suplanuotą užduotį užduočių planuoklyje, kad failų tvarkymo scenarijus būtų vykdomas kiekvieną dieną 17:00 val. Jei norite kito laiko, galite jį pakeisti aukščiau pateiktame scenarijuje.
Be to, „PowerShell“ galite naudoti kitoms kasdienėms užduotims automatizuoti, pvz., vietos stebėjimo scenarijui, kuris įspėja, kai pagrindiniame diske pritrūksta laisvos vietos, PDF dokumentų partijų apsaugai slaptažodžiu ir netgi tiesioginių fonų taikymui iš vaizdų aplanko.
Nors „PowerShell“ yra galinga programa ir scenarijų kalba, ją suprasti ir naudoti reikia šiek tiek laiko, ypač jei nesate susipažinę su .NET Framework aplinka. Tikiuosi, kad šis straipsnis ir scenarijaus pavyzdys bus naudingi visiems, norintiems suprasti „PowerShell“. Tačiau straipsnyje sukurtas scenarijaus pavyzdys yra gana paprastas. Manau, kad jį galima sukurti ir išplėtoti išsamiau, kad jis atitiktų sudėtingesnes programas.
Jei jūsų „Nustatymai“ arba „Microsoft Store“ programėlė neveikia tinkamai, stringa arba neatsidaro, galite programėlę nustatyti iš naujo.
Žemiau esančiame straipsnyje kviečiame susipažinti su keliais paprastais PING komandos pavyzdžiais sistemoje „Windows“!
Ši funkcija yra itin naudinga norint atidėti nereikalingas užduotis, užtikrinti tinklo ryšį prieš pradedant užduotį, vykdyti užduotis tam tikra tvarka, planuoti atnaujinimus arba atlikti aparatinės įrangos priežiūrą.
Kas yra VPN, kokie VPN privalumai ir trūkumai? Aptarkime su „WebTech360“ VPN apibrėžimą, kaip pritaikyti šį modelį ir sistemą darbe.
Naudojant didinamojo stiklo inversijos funkciją sistemoje „Windows 11“, galima pagerinti teksto skaitomumą, ypač žmonėms, jautriems šviesai.
Yra daug priežasčių, kodėl komanda „Kopijuoti/Įklijuoti“ neveikia „Windows“ kompiuteryje, pavyzdžiui, jei kompiuterį užpuolė virusas, neveikia iškarpinė, todėl neveikia kopijavimo (Ctrl + C) ir įklijavimo (Ctrl + V) komandos. Taigi, kaip ištaisyti šią klaidą, žr. toliau pateiktą „WebTech360“ straipsnį.
Jei jums nepatinka programa „Nuotraukos“ sistemoje „Windows 10“ ir norite peržiūrėti nuotraukas naudodami „Windows“ nuotraukų peržiūros programą sistemoje „Windows 10“, vadovaukitės šiuo vadovu, kad „Windows“ nuotraukų peržiūros programa būtų pasiekiama sistemoje „Windows 10“ ir galėtumėte jas peržiūrėti greičiau.
Klonavimo procesas apima duomenų perkėlimą iš vieno saugojimo įrenginio į kitą (šiuo atveju – standųjį diską), o tiksli kopija nukopijuojama iš paskirties disko.
Greitas paleidimas „Windows 11“ padeda kompiuteriui greičiau paleisti sistemą, tačiau tai taip pat gali būti priežastis, kodėl jūsų „Windows“ kompiuteris visiškai neišsijungia.
„Windows 11“ turi funkciją, kuri užduočių juostoje prideda mygtuką „Užduoties pabaiga“, todėl nereikia atidaryti užduočių tvarkyklės, kad uždarytumėte nereaguojančias programas.
Kartais tiesiog nerandate išorinio standžiojo disko, kai jo labiausiai reikia. Kelis kartus praradę svarbius failus, kai kurie žmonės rado paprastą ir patikimą būdą sukurti visų duomenų atsargines kopijas, net kai standusis diskas nepasiekiamas.
Ctrl + Z yra itin dažnas klavišų derinys sistemoje „Windows“. Ctrl + Z iš esmės leidžia anuliuoti veiksmus visose „Windows“ srityse.
Atkūrimo skaidinys yra atskiras skaidinys jūsų kompiuterio standžiajame diske arba SSD diske, naudojamas operacinei sistemai atkurti arba iš naujo įdiegti sistemos gedimo atveju.
Daug nepageidaujamos programinės įrangos gali sulėtinti jūsų kompiuterį ir jį užgriozdinti. Tačiau ją išvalyti ne visada lengva. Taigi peržiūrėkite šiuos 10 būdų, kaip tvarkingai pašalinti programas, pašalinti seną programinę įrangą partijomis, pašalinti elementus, kurių negalima pašalinti, ir net pašalinti iš anksto įdiegtas „Windows“ programas.
„Windows 11“ virtualioji mašina padės vartotojams paleisti ne „Windows“ operacinę sistemą tiesiai kompiuteryje.
Šiandien „Windows“ daug geriau apsaugo jūsų saugumą nei anksčiau, tačiau „Windows“ sauga ir su ja susiję įrankiai vis dar nėra tobuli. Turite būti budrūs dėl grėsmių, kurioms kompiuterių saugumas neturi sprendimo.
„Windows“ kompiuteriai kartais gali veikti lėtai, tačiau užduočių tvarkyklė nerodo nieko įtartino. Šiame etape dauguma žmonių tikrina, ar nėra kenkėjiškų programų ar saugyklos problemų, tačiau pasenusios tvarkyklės taip pat gali sukelti našumo problemų.
Išjungti nereikalingas programas yra efektyviausias būdas pagreitinti „Windows“ kompiuterio paleidimą.
„Windows 11“ fono paveikslėlio keitimas yra vienas geriausių būdų suasmeninti darbalaukį.
Šiame straipsnyje „Quantrimang“ pateiks keletą būdų, kaip ištaisyti klaidą, kai „Windows“ kompiuteriai automatiškai paleidžiami iš naujo paspaudus išjungimo mygtuką.
Jei jūsų „Nustatymai“ arba „Microsoft Store“ programėlė neveikia tinkamai, stringa arba neatsidaro, galite programėlę nustatyti iš naujo.
Žemiau esančiame straipsnyje kviečiame susipažinti su keliais paprastais PING komandos pavyzdžiais sistemoje „Windows“!
Ši funkcija yra itin naudinga norint atidėti nereikalingas užduotis, užtikrinti tinklo ryšį prieš pradedant užduotį, vykdyti užduotis tam tikra tvarka, planuoti atnaujinimus arba atlikti aparatinės įrangos priežiūrą.
Kas yra VPN, kokie VPN privalumai ir trūkumai? Aptarkime su „WebTech360“ VPN apibrėžimą, kaip pritaikyti šį modelį ir sistemą darbe.
Naudojant didinamojo stiklo inversijos funkciją sistemoje „Windows 11“, galima pagerinti teksto skaitomumą, ypač žmonėms, jautriems šviesai.
Yra daug priežasčių, kodėl komanda „Kopijuoti/Įklijuoti“ neveikia „Windows“ kompiuteryje, pavyzdžiui, jei kompiuterį užpuolė virusas, neveikia iškarpinė, todėl neveikia kopijavimo (Ctrl + C) ir įklijavimo (Ctrl + V) komandos. Taigi, kaip ištaisyti šią klaidą, žr. toliau pateiktą „WebTech360“ straipsnį.
Jei jums nepatinka programa „Nuotraukos“ sistemoje „Windows 10“ ir norite peržiūrėti nuotraukas naudodami „Windows“ nuotraukų peržiūros programą sistemoje „Windows 10“, vadovaukitės šiuo vadovu, kad „Windows“ nuotraukų peržiūros programa būtų pasiekiama sistemoje „Windows 10“ ir galėtumėte jas peržiūrėti greičiau.
Klonavimo procesas apima duomenų perkėlimą iš vieno saugojimo įrenginio į kitą (šiuo atveju – standųjį diską), o tiksli kopija nukopijuojama iš paskirties disko.
Greitas paleidimas „Windows 11“ padeda kompiuteriui greičiau paleisti sistemą, tačiau tai taip pat gali būti priežastis, kodėl jūsų „Windows“ kompiuteris visiškai neišsijungia.
„Windows 11“ turi funkciją, kuri užduočių juostoje prideda mygtuką „Užduoties pabaiga“, todėl nereikia atidaryti užduočių tvarkyklės, kad uždarytumėte nereaguojančias programas.