PowerShell и всичко, което трябва да знаете за тази помощна програма

Ами ако вашият компютър можеше да се справи с ежедневните задачи вместо вас? С Windows PowerShell може. Ето как да използвате PowerShell, за да автоматизирате повтарящите се, ежедневни задачи, които никой не иска да прави отново и отново.

Съдържание

Какво е PowerShell?

Microsoft PowerShell е помощна програма за команден ред и скриптов език, който е мощен инструмент за администратори за автоматизиране на широк спектър от задачи за компютри и мрежи. PowerShell съдържа компоненти на командния ред и е изграден върху .NET framework. Ако четете за WebTech360, трябва да знаете, че PowerShell е инструментът, предпочитан от ИТ администраторите за управление на големи мрежи.

Изучаването на използването на PowerShell ще опрости много досадни ежедневни задачи. Можете също така да правите промени в цялата система през мрежата, без да се налага да конфигурирате всеки сървър поотделно. PowerShell се превръща в съществена част от работата с хибридни облачни среди .

PowerShell има много различни приложения, които ви помагат да работите по-ефективно и да поддържате мрежата си ефективна. Най-основните приложения включват: планиране на ежедневни актуализации на системите, генериране на отчети за текущи процеси, периодични услуги и други. Въпреки че много от тези задачи могат да се изпълняват чрез графичния потребителски интерфейс, целта на PowerShell е да ги изпълнява по-бързо.

Ако имате рутинна задача за поддръжка, чиято настройка отнема няколко минути, можете да напишете същата функционалност в една команда, наречена PowerShell. След това, следващия път, когато отворите този скрипт, той ще се изпълнява във фонов режим. Овладяването на логиката на скриптовете в PowerShell, разбирането как работят обектите, променливите (var) и интелигентното им внедряване в мрежата ви ще ви накара да се чудите защо не сте използвали PowerShell по-рано.

Този урок ще обхване основите на PowerShell, което ще бъде полезно за начинаещите в ИТ, особено ако сте запознати с командния ред на Windows. Ще разгледа как да използвате основни инструменти и команди, как да работите с файлове и папки, как да разбирате обекти, как да използвате променливи и как да управлявате отдалечени сървъри.

Кратка история на помощните програми за команден ред на Windows

След пускането на Windows NT, CMD.EXE стана помощната програма за команден ред за Windows. Въпреки че CMD.EXE наследи някои елементи от своя предшественик DOS (COMMAN.COM), тя все още се основаваше на доста „примитивен“ скриптов език: използвайки командни файлове на Windows (.CMD и .BAT). Добавянето на Windows Scripting Host и езиците VBScript и JScript значително подобри възможностите за писане на скриптове на помощната програма.

Тези технологии са сравнително балансирана комбинация от усъвършенствани помощни програми за команден ред и скриптови среди. Истинският проблем не е колко CMD.EXE, .CMD и Windows Scripting Host файлове могат да бъдат манипулирани с тях. Основното оплакване и проблем е изпълнението на някои привидно прости задачи.

Използвайки „рамка“ от инструменти за команден ред и скриптове, всеки умерено сложен скрипт изисква комбинация от пакетни команди, Windows Scripting Host и самостоятелни изпълними файлове. Всеки скрипт използва различни конвенции за изпълнение и заявки, парсиране и връщане на данни.

Слабата поддръжка на променливи в CMD.EXE, непоследователните интерфейси и ограниченият достъп до настройките на Windows, съчетани с друга слабост, правят скриптовете от командния ред трудни за внедряване и използване. Може би ще попитате каква е тази „друга слабост“? Това е текст. В тези технологии всичко е текст. Изходът от команда или скрипт е текст и трябва да бъде анализиран и преформатиран, за да служи като вход за следващата команда. Това е основната отправна точка, която PowerShell заимства от всички традиционни обвивки.

Представяне на инструменти, команди и модули на PowerShell

Трите концепции, представени в този раздел, са само основните, за да се разберат ключовите понятия, които формират основата на PowerShell. Ще трябва да отделите повече време за изучаване и овладяване на по-сложните концепции, докато се подхожда към командите на PowerShell.

Инструменти на PowerShell

PowerShell е инсталиран по подразбиране в Windows 10, Windows 7, Windows Server 2008 R2 и по-нови версии на Windows. По-новите версии на PowerShell добавят нови функции и „cmdlets“ (терминът на Microsoft за PowerShell команди - произнася се „command-lets“) и се инсталират със съответната версия на Windows Management Framework (WMF).

В момента WMF 5.1 е най-новата препоръчителна версия. В някои случаи някои нови функции зависят от операционната система в допълнение към версията на WMF. Например, Windows 8 и Windows Server 2012 поддържат командата Test-NetConnection, която ви позволява да тествате свързаността към конкретен TCP/IP порт , но тази команда не е налична в Windows 7, дори когато се изпълнява най-новата версия на WMF.

В повечето Windows системи потребителите ще имат на разположение две PowerShell среди - конзолата PowerShell и PowerShell ISE (Integrated Scripting Environment). Конзолата PowerShell изглежда като традиционен команден ред, но с пълната функционалност на PowerShell. Имената на променливи, циклите, автоматичното довършване на команди и каналите са достъпни от конзолата PowerShell.

За по-напреднала употреба (като например писане на скриптове), PowerShell ISE предоставя автоматично довършване на команди, маркиране на код и довършване на код Intellisense на Microsoft, за да ви помогне да създавате и тествате PowerShell код. PowerShell ISE ви позволява също така да работите с множество PowerShell скриптове едновременно, използвайки навигация с раздели.

командлети в PowerShell

Основата на PowerShell командите е cmdlet. Microsoft е предприела няколко дизайнерски стратегии при създаването на cmdlets в PowerShell.

Първото е възможността лесно да се извеждат имената на командлети или поне да се направят по-откриваеми. Командите или командлетите на PowerShell също са проектирани да бъдат по-лесни за използване, със стандартизиран синтаксис, което улеснява създаването на скриптове от интерфейса на командния ред.

Командлетите използват формата Verb-Noun, както в Get-Service, Stop-Service или Import-Csv. Глаголната част в името на командлета показва действието, извършвано върху съществителното име. Обикновено командлетите, които се използват за извличане на информация, имат глагола Get в името си, като например Get-Process и��и Get-Content . Командите, използвани за промяна на нещо, обикновено започват с глагола Set , а командите, използвани за добавяне на нов обект към нещо, обикновено започват с Add или New .

Второ, параметрите, често използвани в PowerShell, също получават стандартизирани имена. Например, параметърът -ComputerName позволява изпълнението на командлета на един или повече отдалечени компютри. -Credential се използва за предоставяне на обект за удостоверяване, съдържащ потребителски идентификационни данни, за изпълнение на командата като конкретен потребител.

Модули в PowerShell

Можете да използвате псевдоними както за командлети, така и за параметри, за да спестите натискания на клавиши и да съкратите общата дължина на командата (полезно при свързване на няколко команди). Въпреки че тези псевдоними не винаги използват стандартни конвенции за именуване, те все пак отразяват традиционните помощни програми за команден ред.

В PowerShell, псевдоними като DIR, CD, DEL и CLS съответстват съответно на командлетите Get-ChildItem, Set-Location, Remove-Item и Clear-Host. Псевдонимите на параметри могат да работят по два начина: те могат да използват предварително дефиниран псевдоним, предоставен от командлета, или могат да бъдат псевдонимиран чрез въвеждане на достатъчно знаци, за да се създаде уникално съвпадение между поддържаните параметри на командлета.

Управление на файлове и папки

Повечето системни администратори трябва да манипулират файлове и папки в хода на работата си, независимо дали става въпрос за преместване на папка на друго място на сървъра, архивиране на лог файлове или търсене на големи файлове. В случаите, когато едни и същи операции се повтарят върху много файлове, използването на PowerShell за автоматизирането им ще бъде ефективно решение за пестене на време.

За да намери файлове и папки, един от първите инструменти от командния ред, които администраторът би научил в миналото на компютрите, е командата dir. Dir ще изброи файловете и папките, съдържащи се в посочената директория.

PowerShell има подобна команда под формата на Get-ChildItem Cmdlet . Get-ChildItem ви позволява бързо да изградите списък с файлове в директория по такъв начин, че да можете да манипулирате файловете чрез команда тип „pipe“ или да присвоите изхода на променлива.

Get-ChildItem може да се използва просто чрез предоставяне на път, или през конвейер, използвайки параметъра -Path , или директно след името на командлета. За да промените отговора, върнат от Get-ChildItem, е необходимо да вземете предвид някои параметри, предоставени от командлета.

Параметърът -Filter е един от начините за търсене на файлове. По подразбиране Get-ChildItem връща само директни наследници на целевата директория. Тази функционалност може да бъде разширена с помощта на параметъра -Recurse , който рекурсивно търси директории, съдържащи се в текущата директория.

В PowerShell 4.0 Get-ChildItem добави възможността за ограничаване на резултатите до файлове или директории, използвайки превключвателя –File или –Directory . Предишните версии на PowerShell трябваше да предават резултатите на Where-Object, филтрирайки по свойството PSIsContainer, за да направят това определяне. Пример за двете техники, използвани за връщане на директории, съдържащи се в C:Users, е показан тук:

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

За откриване на скрити или системни файлове трябва да се използва  -Force . Get-ChildItem в PowerShell 4.0 и по-нови версии може да се използва и за връщане само на скрити, само за четене или системни файлове, използвайки съответно -Hidden, -ReadOnly и –System . Подобна функционалност можеше да се постигне в предишни версии чрез филтриране на свойството Mode, използвайки Where-Object:

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

Проверете дали файлът съществува

Обикновено, когато работим с файлове, всичко, което трябва да знаем, е дали файлът съществува или дали пътят до директорията е валиден. PowerShell предоставя команда за това под формата на Test-Path, която връща стойност true или false.

Test-Path се използва като предпазна мярка преди опит за копиране или изтриване на конкретен файл.

Копиране, преместване и изтриване на файлове

Copy-Item: Копира един или повече файлове или директории от местоположение, посочено от параметъра -Path, до местоположението, посочено от опцията -Destination.

Преместване на елемент: Преместване на файл или папка.

Когато структура на директория се копира или премества, трябва да се използва -Recurse , за да може командлетът да извърши действието върху директорията и нейното съдържание. В някои случаи е необходим и -Force , например когато файл само за четене е презаписан от операция за копиране.

Премахване на елемент: Изтриване на файл, папка.

Параметърът -Force трябва да се използва, когато се натъкнете на файл само за четене, а параметърът -Recurse трябва да се използва при изтриване на директория и нейното съдържание.

Използване на PowerShell -WhatIf и -Confirm

Преди да извършите сериозно, масово изтриване, използвайте -WhatIf . -WhatIf ви позволява да видите какво би се случило, ако изпълните скрипт или команда, и дали това би имало някакво потенциално отрицателно въздействие чрез изтриване на важни бизнес данни. Също така си струва да се отбележи, че -WhatIf не се ограничава само до файлови операции, а се използва широко в PowerShell.

За скриптове, които възнамерявате да изпълнявате ръчно или, още по-лошо, имате зависими команди, които се изпълняват ръчно, помислете за използването на -Confirm . Това ви позволява да изисквате взаимодействие с потребителя, преди операцията действително да се извърши.

PowerShell скриптове = пакетни файлове на стероиди

Самият PowerShell е написан на езика .NET и е силно базиран на .NET Framework. Като такъв, PowerShell е проектиран като обектно-ориентирана обвивка и скриптов език. Всичко в PowerShell се третира като обект с пълните възможности на .NET Framework. Командата предоставя колекция от обекти, които могат да се използват с помощта на свойствата и методите на този тип обект. Когато искате да прехвърлите изхода на една команда към друга, PowerShell всъщност предава обекта, а не само текстовия изход на първата команда. Това дава на следващата команда пълен достъп до всички свойства и методи на обекта в конвейера.

Третирането на всичко като обект и възможността за приемане на обекти между командите е голяма промяна в теорията на помощните програми от командния ред. Въпреки това, PowerShell все още работи като традиционна обвивка (shell). Команди, скриптове и изпълними файлове могат да се въвеждат и изпълняват от командния ред, а резултатите се показват като текст. Файловете на Windows .CMD и .BAT, VBScripts, JScripts и изпълнимите файлове, които се изпълняват в CMD.EXE, все още се изпълняват в PowerShell. Тъй като обаче не са обектно-ориентирани, те нямат пълен достъп до обектите, създадени и използвани в PowerShell. Тези остарели скриптове и изпълними файлове все още ще третират всичко като текст, но можете да комбинирате PowerShell с редица други технологии. Това е особено важно, ако искате да започнете да използвате PowerShell с колекция от съществуващи скриптове, които не можете да конвертирате всички наведнъж.

Обяснение на параметрите на PowerShell

Командлетите могат да приемат параметри, за да променят поведението си. Когато изпълнявате командлет или функция, можете да предоставите стойности на параметри, за да укажете какво, кога, къде и как се изпълнява всяка PowerShell команда.

Например, Get-Process ще извлече и изброи всички изпълняващи се процеси във вашата операционна система:

PowerShell и всичко, което трябва да знаете за тази помощна програма
Get-Process изброява всички изпълнявани процеси.

Но какво ще стане, ако искате да получите само конкретен процес? Можете да направите това с помощта на параметри. Например, за да получите всички Slack процеси, можете да използвате параметъра Name с командата Get-Process:

Get-Process -Name Slack

Тогава ще виждате само процеси с име „slack“:

PowerShell и всичко, което трябва да знаете за тази помощна програма
Използване на Get-Process с параметри

Съвет : Някои параметри са „позиционни“, което означава, че имената им са незадължителни. В този случай, Get-Process -Name Slack и Get-Process Slack изпълняват една и съща задача.

Всяка команда (Cmdlet) приема различни типове параметри. Използвайте командата Get-Help, за да видите приетите параметри на командата в секцията SYNTAX.

Get-Help Get-Process

Ще видите списък с всички възможни начини, по които можете да изпълните дадената команда:

PowerShell и всичко, което трябва да знаете за тази помощна програма
параметри на синтаксиса на cmdlet

В този случай, командата Get-Process приема параметри като Name, Id, ComputerName, Module, FileVersionInfo и други често срещани параметри. Символите тук означават:

Символ

Име

Значение

 

Барабан

Параметърът не приема входни данни

-

Тире

Посочете името на параметъра

<>

къдрави скоби

Заместител за текст

[]

Скоби

Параметърът може да приема една или повече стойности.

{}

къдрави скоби

Параметърът приема набор от стойности.

Параметрите приемат набор от стойности, които ще указват типа данни, от които се нуждаят, като например низ, цяло число, булева стойност или дата и час. Например, следната команда:

Get-Process [[-Name] ]

... означава, че параметърът Name приема една или повече низови стойности, докато тази команда:

Get-Process -Id 

... означава, че параметърът Id приема една или повече целочислени стойности.

В предишния пример Get-Process беше използван параметърът Name, за да се стеснят резултатите. Ако обаче искате да ги стесните до по-конкретен процес, можете да използвате параметъра ID , който изисква цяло число, както е посочено в синтаксиса му.

Get-Process -Id 3016

След това ще видите само един процес в списъка:

PowerShell и всичко, което трябва да знаете за тази помощна програма
Използване на параметъра Id в командлети

Създаване на тръбопровод

PowerShell обработва всички данни като обекти. За да се изгради скрипт, тези обекти се изпълняват чрез поредица от командлети или функции, свързани чрез символа за вертикална черта (|). Изборът на правилните командлети и свързването им в логическа последователност чрез конвейер е важно за ефективен скрипт.

Да предположим, че създавате скрипт за сортиране и показване на 5-те файла, които заемат най-много място в директория. Има по-мощни начини за писане на скрипт за сортиране на файлове, но този прост е лесен за разбиране:

PowerShell и всичко, което трябва да знаете за тази помощна програма
Сортиране по скриптове - големи файлове PS1

За да направите това в PowerShell, използвайте конвейер, който изглежда така:

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

Запазване на конвейера като PS1 скрипт

След като вече имаме работещ конвейер, можете да го запазите като PS1 скрипт файл, така че да не се налага да го импортирате всеки път, когато го използвате.

Най-лесният начин да създадете PS1 файл е да поставите скрипта си в Notepad и да го запишете с разширение .ps1.

PowerShell и всичко, което трябва да знаете за тази помощна програма
Създаване на скрипт с Notepad

След като създадете PS1 файла, можете да го използвате в PowerShell, като изпълните ./ScriptName.ps1 :

PowerShell и всичко, което трябва да знаете за тази помощна програма
Използване на PS1 скрипт

Съвет : Ако получите грешка с разрешенията, най-бързото решение е да стартирате PowerShell с администраторски права, когато изпълнявате скрипта си.

Поздравления! Вече можете да създавате PowerShell PS1 скриптове.

Пример за PowerShell скрипт

Да четеш и да разбираш страхотните неща за новите технологии е едно, но реалното им използване е съвсем друго! В останалата част от тази статия ще разработим PowerShell скрипт, за да демонстрираме възможностите им и как да ги използваме.

DIR е една от най-често използваните команди в CMD.EXE . Тази команда показва всички файлове и поддиректории, съдържащи се в родителската директория (както е показано на Фигура 1). Наред с името на всеки обект, предоставената информация включва датата и часа на последната актуализация и размера на всеки файл. DIR показва също така общия размер на всички файлове в директорията, както и общия брой файлове и поддиректории.

PowerShell и всичко, което трябва да знаете за тази помощна програма
Фигура 1

Изпълнението на DIR в PowerShell също води до извеждане на списък с директории, подобен на Фигура 2, но по малко по-различен начин. PowerShell няма команда DIR, а вместо това има Get-ChildItem, която изпълнява същата функция. В PowerShell, DIR е псевдоним за Get-ChildItem. Нямам намерение да навлизам в псевдоними в тази статия. Можете да мислите за DIR в PowerShell като съкращение за Get-ChildItem.

DIR в PowerShell предоставя почти същата информация, както е споменато по-горе: списък с файлове и папки, дата и час на последната им промяна и размер на всеки файл. Липсва обаче обобщената информация, която DIR в CMD.EXE предоставя: общият размер на всички файлове в папката, общият брой файлове и общият брой подпапки.

PowerShell и всичко, което трябва да знаете за тази помощна програма
Фигура 2

За примерния сценарий ще трябва да създадете PowerShell скрипт, който симулира командата CMD.EXE DIR. По-долу ще обясня най-важните части на един скрипт.

DIR.PS1: Заглавка

PowerShell скриптът се състои от PowerShell команди в обикновен текстов файл с разширение .PS1. Вместо DIR, бихте използвали текстов файл с име DIR.PS1.

За да стартирате скрипта, въведете следната команда в екрана на PowerShell:

.DIR.PS1 X:Folder

Където X е буквата на дяла на устройството (като C, D, E), а Folder е името на папката.

Ако искате да знаете информация за дяла на даден диск, ще трябва да използвате Windows Management Instrumentation (WMI). Подробностите за WMI са извън обхвата на тази статия, така че няма да навлизаме в тях тук. Но кодът на PowerShell по-долу е достатъчно лесен за разбиране и без да използвате WMI. Можете да създадете променлива „$filter“, която да използвате с командата Get-WmiObject. Този филтър казва на командата Get-WmiObject, че искате информация само за конкретно устройство. Резултатите от командата Get-WmiObject се съхраняват в променлива, наречена $volInfo. Не забравяйте, че в PowerShell всичко е обект; $volInfo вече е обект, върнат от Get-WmiObject.

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

Сега имате достъп до всички обекти и методи, свързани с обекта. Серийният номер на тома е достъпен чрез свойството VolumeSerialNumber. Върнатото число е низ от 8 символа. Но често е необходимо да го форматирате като четири числа, разделени с тире. Това може да се направи по подобен начин, както е показано на следващия ред. Тирето в края на първия ред е символът за продължаване на реда в PowerShell. Той основно казва на PowerShell, че редът не се прекъсва и че включва следващия ред. Прекъсванията на редовете не са необходими при писане на код, но за да намалите ширината и да направите кода по-четлив, трябва да го направите.

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

След като вече имате обект $volInfo, можете да запишете информацията от заглавката DIR на екрана. Ако устройството няма име, текстът, изписан на екрана, ще бъде малко по-различен, отколкото ако устройството има име. Използва се прост оператор If-Else, за да се провери дали свойството VolumeName е празен низ. Операторът Write-Host се използва за запис на всеки ред текст на екрана.

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")

Символът „ `n ” в началото и края на командата Write-Host се използва за вмъкване на нов ред преди и след текста. Командата Write-Host добавя нов ред в края на всеки ред. Така че ефектът от „ `n ” е да създаде празен ред преди и след текста.

Забелязахте ли „-eq“ в командата If? Това е оператор за сравнение по равенство. Таблицата по-долу показва всички оператори за сравнение:

-екв, -екв Сравни по
-не, -ине Сравнението не е равностойно
-gt, -igt Сравнете по-голямо от
-ге, -иге Сравни по-голямо или равно на
-лт, -илт Сравнете по-малки от
-ле, -ил Сравни по-малко или равно на

Символът -i преди операторите за сравнение показва, че операторът не различава главни и малки букви.

PowerShell и всичко, което трябва да знаете за тази помощна програма
Фигура 3: Изходни данни на скрипта, който имате в момента

DIR.PS1: Списък с файлове/папки

Сега сте готови да покажете съдържанието и свойствата на тази папка. Първото нещо, което трябва да направите, е да извикате командата PowerShell Get-ChildItem, за да получите колекция от файлове и да я предадете на скрипта като параметър. Командата Get-ChildItem ще получи колекция от файлови и папкови обекти, не само техните имена, но и ще прехвърли тези обекти директно към командата Sort-Object, за да ги сортира. По подразбиране командата Sort-Object ще сортира обектите въз основа на свойството Name. Така че не е необходимо да задавате други параметри. Сортираната колекция от обекти ще се съхранява в променлива с име $items.

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

След като имате колекция от файлови и папкови обекти, трябва да ги прегледате и да покажете съответните свойства. Командата за това е ForEach. За всеки файл или папка, показаните свойства ще бъдат датата и часът на последната промяна, името, дължината или размера на файла. Странно изглеждащите низове в скобите са .NET кодове за форматиране на низове. Те се използват за подравняване на полета отляво/дясно и форматиране на дати, часове и числа. Разбирането на тези кодове за форматиране на низове не е много важно, тъй като те не са от съществено значение за същността на този скрипт.

Чрез оператора If определяте дали даден обект е директория или не. Ако първият символ на атрибута Mode е „d“, обектът е директория. Трябва да проверите отново, защото кодът за директории често е различен от кода за файлове.

Обърнете внимание на реда $totalDirs++ в оператора If. Това е брояч, отговорен за следенето на броя на директориите. По подобен начин има променлива $totalFiles, която се използва за следене на общия размер на всички файлове. Тези стойности винаги се изчисляват по време на изпълнение. Но те се показват само когато процесът на изброяване на файловете приключи.

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 и всичко, което трябва да знаете за тази помощна програма
Фигура 4: Показва изходните данни на актуализирания скрипт.

DIR.PS1: Долен колонтитул

Единственото, което остава да направите, е да изпишете на екрана общия брой файлове, директории, общия размер на всички файлове и свободното пространство на този дял на устройството. За да направите това, ще трябва да използвате променливите брояч ($totalFiles, $totalDirs, $totalSize), създадени в предишния раздел. Можете да разберете количеството свободно пространство от променливата $volInfo, създадена в началото на скрипта.

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 и всичко, което трябва да знаете за тази помощна програма
Фигура 5: Показва пълните изходни данни на скрипта.

Прогнозите и подобренията могат да бъдат

Въпреки че създаденият от вас скрипт произвежда почти идентичен изход с командата CMD.EXE DIR, има някои предупреждения, за които трябва да сте наясно, и някои подобрения, които могат да бъдат направени.

  • Този скрипт не извършва никаква проверка за грешки.
  • Ако на скрипта не е подаден валиден път, той ще се провали със съобщение за грешка в PowerShell.
  • Общият брой на директориите, дадени в скрипта, е с 2 по-малък от резултата от командата CMD.EXE DIR, защото командата Get-ChildItem не брои двете директории „.“ и „..“ както в CMD.EXE.
  • Вашият скрипт сортира само по име на файл, име на папка и не предоставя друго сортиране по атрибути.
  • Вашият скрипт не може да покаже съдържанието на папката и всички нейни подпапки.

Как PowerShell ви помага да автоматизирате всичко на вашия компютър

Пишете прости PowerShell скриптове

Можете да използвате PowerShell, за да автоматизирате почти всичко, като например пакетно преименуване на файлове за последователност или автоматично стартиране на приложения. Нека напишем няколко прости скрипта за Windows PowerShell, за да видим как работи.

Забележка : Ако срещнете грешка при изпълнението на скрипта, свързана с политиката за изпълнение, може да се наложи временно да разрешите изпълнението на скрипта, като изпълните „Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass“.

Групово преименуване на файлове в папка

Можете да използвате PowerShell, за да копирате, премествате и изтривате файлове на вашия компютър. Можете също така да преименувате файлове от определен тип файл наведнъж. Например, ето как можете да преименувате множество текстови файлове, като замените префикса „oldco“ с „newco“ в имената на файловете им:

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

В горния скрипт, ".txt" е филтърът за файлово разширение. Можете да го промените и да го зададете на .jpg, .docx и др., за да търсите различни типове файлове.

Автоматично стартиране на приложение

Ако отваряте един и същ набор от приложения всеки ден, можете да напишете PowerShell скрипт, за да ги стартирате с едно щракване:

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

Поставете скрипта във файл на Notepad и го запазете като LaunchFavoriteApps.ps1. След това просто щракнете двукратно върху файла, за да стартирате всички приложения, изброени в скрипта.

Копирайте важни файлове в резервно място

Можете периодично да архивирате важни файлове в резервно място, като използвате следния скрипт. Не забравяйте да промените пътя на източника и местоназначението, ако е необходимо:

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

Напишете PowerShell скрипт за автоматично организиране на файлове ежедневно

Тъй като всеки ден се изтеглят много видове файлове, папката „Изтегляния“ може бързо да се претрупа с всякакви файлове, разпръснати наоколо. За да поправим това, можем да напишем PowerShell скрипт, който сортира изтеглените файлове в папки по тип файл в края на всеки ден.

Отворете нов файл в Notepad и поставете следния скрипт. Уверете се, че сте променили пътя до папката източник в скрипта, за да съответства на пътя до папката „Изтегляния“:

# 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!"

За да запазите файла, щракнете върху Файл > Запиши като и въведете OrganizeDownloadsFolder.ps1 като име на файла. След това щракнете върху Запиши като тип и изберете Всички файлове . Щракнете двукратно върху файла OrganizeDownloadsFolder.ps1 , за да стартирате скрипта.

Планиране и изпълнение на задачи

Разбира се, писането на скрипт е една част от процеса на автоматизация. Втората част е да се гарантира, че скриптът може да се изпълни автоматично, за да изпълни задачата. За да направим това, можем да създадем планирани задачи, за да изпълняваме скрипта ежедневно или при необходимост.

Отворете PowerShell, след което копирайте и поставете следния скрипт и натиснете Enter . Уверете се, че сте заменили „J:\OrganizeDownloadsFolder.ps1“ с пълния път до файла на вашия скрипт OrganizeDownloadsFolder.ps1 .

$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"

След като сте готови, натиснете Enter . Скриптът ще създаде планирана задача в Task Scheduler, за да изпълнява скрипта за организация на файлове всеки ден в 17:00 ч. Ако предпочитате различно време, можете да го промените в горния скрипт.

Освен това, можете да използвате PowerShell за автоматизиране на други ежедневни задачи, като например скрипт за наблюдение на пространството, който ви предупреждава, когато ви свърши свободното място на основния ви диск, защита на пакети PDF документи с парола и дори прилагане на живи тапети от папката ви с изображения.

Въпреки че PowerShell е мощна помощна програма и скриптов език, отнема малко време, за да го разберете и използвате, особено ако не сте запознати със средата на .NET Framework. Надявам се, че тази статия и примерният скрипт ще бъдат полезни за всеки, който иска да разбере PowerShell. Но примерният скрипт, създаден в статията, е доста прост. Вярвам, че може да бъде изграден и разработен по-пълноценно, за да обслужва по-сложни приложения.

Tags: #System

Leave a Comment

14 приложения и софтуер за Windows, от които се нуждаете на новия си компютър

14 приложения и софтуер за Windows, от които се нуждаете на новия си компютър

По-долу е даден списък с препоръчителен софтуер при инсталиране на нов компютър, за да можете да изберете най-необходимите и най-добрите приложения на вашия компютър!

Ако дадена VPN мрежа показва тези предупредителни знаци, стойте далеч от нея!

Ако дадена VPN мрежа показва тези предупредителни знаци, стойте далеч от нея!

С течение на времето ще се научите бързо да разпознавате предупредителните знаци на VPN. Ако вашата VPN мрежа показва някой от тези признаци, бързо я изоставете, преди да я инсталирате.

Как да клонирате настройките на Windows, за да пренесете работния си процес навсякъде

Как да клонирате настройките на Windows, за да пренесете работния си процес навсякъде

Носенето на цяла операционна система на флаш устройство може да бъде много полезно, особено ако нямате лаптоп. Но не мислете, че тази функция е ограничена само до Linux дис��рибуции - време е да опитате да клонирате вашата Windows инсталация.

Инструкции за блокиране на автоматичното инсталиране на драйвери в Windows 11

Инструкции за блокиране на автоматичното инсталиране на драйвери в Windows 11

Windows 11 може да изтегля драйвери за вашия компютър без намесата на потребителя, но не винаги е желателно да инсталира драйвери автоматично, за да избегнете нежелани проблеми.

Как да рестартирате приложения на компютри с Windows

Как да рестартирате приложения на компютри с Windows

Ако приложението „Настройки“ или Microsoft Store не работи правилно, срива се или не се отваря, можете да нулирате приложението.

Какво е PING? Как да тествам PING?

Какво е PING? Как да тествам PING?

В статията по-долу ви каним да научите някои прости примери за командата PING в Windows!

Как да стартирате планирани задачи със закъснение в Windows

Как да стартирате планирани задачи със закъснение в Windows

Тази функция е изключително полезна за забавяне на ненужни задачи, осигуряване на мрежова свързаност преди стартиране на задача, изпълнение на задачи в определен ред, планиране на актуализации или извършване на поддръжка на хардуера.

Какво е VPN? Предимства и недостатъци на виртуалната частна мрежа на VPN

Какво е VPN? Предимства и недостатъци на виртуалната частна мрежа на VPN

Какво е VPN, какви са предимствата и недостатъците на VPN? Нека обсъдим с WebTech360 определението за VPN, как да приложим този модел и система в работата.

Как да инвертирате цветовете на екрана с помощта на лупа в Windows 11

Как да инвертирате цветовете на екрана с помощта на лупа в Windows 11

Използването на функцията за инверсия на лупата в Windows 11 може да подобри четливостта на текста, особено за хора, чувствителни към светлина.

Поправка на командата „Копирай и постави“ в Word, Excel (2007, 2010)

Поправка на командата „Копирай и постави“ в Word, Excel (2007, 2010)

Има много причини, поради които командата „Копирай/Постави“ не работи на компютър с Windows, например компютърът ви е атакуван от вирус, клипбордът не работи и следователно командата за копиране (Ctrl + C) и командата за поставяне (Ctrl + V) не работят. Как да поправите тази грешка, моля, вижте статията по-долу на WebTech360.

Върнете Windows Photo Viewer на Windows 10, за да преглеждате снимки по-бързо, Photos е твърде бавен!

Върнете Windows Photo Viewer на Windows 10, за да преглеждате снимки по-бързо, Photos е твърде бавен!

Ако не харесвате „Снимки“ в Windows 10 и искате да преглеждате снимки с помощта на Windows Photo Viewer в Windows 10, следвайте това ръководство, за да прехвърлите Windows Photo Viewer в Windows 10, което ще ви помогне да преглеждате снимки по-бързо.

Как да клонирате твърд диск на Windows без софтуер на трета страна

Как да клонирате твърд диск на Windows без софтуер на трета страна

Процесът на клониране включва преместване на данни от едно устройство за съхранение на друго (в този случай твърд диск) с точно копие, копирано от целевия диск.

Как да деактивирате бързото стартиране в Windows

Как да деактивирате бързото стартиране в Windows

Бързото стартиране на Windows 11 помага на компютъра ви да се стартира по-бързо, но може да е и причината компютърът ви с Windows да не се изключва напълно.

Как да добавите „Край на задачата“ към лентата на задачите на Windows 11

Как да добавите „Край на задачата“ към лентата на задачите на Windows 11

Windows 11 има функция, която добавя бутон „Край на задача“ директно в лентата на задачите, така че не е необходимо да отваряте диспечера на задачите, за да затворите блокиращи приложения.

Как да архивирате данни без да използвате външен твърд диск

Как да архивирате данни без да използвате външен твърд диск

Понякога просто не можете да намерите външния си твърд диск, когато ви е най-необходим. След като няколко пъти са губили важни файлове, някои хора са намерили лесен и надежден начин да архивират всичко, дори когато твърдият диск не е наличен.

Каква е ползата от клавишната комбинация Ctrl + Z в Windows? Вероятно повече, отколкото си мислите.

Каква е ползата от клавишната комбинация Ctrl + Z в Windows? Вероятно повече, отколкото си мислите.

Ctrl + Z е изключително често срещана клавишна комбинация в Windows. Ctrl + Z ви позволява да отмените действия във всички области на Windows.

Ето как да изтриете дяла за възстановяване и дяла за възстановяване от 450 MB в Windows 10

Ето как да изтриете дяла за възстановяване и дяла за възстановяване от 450 MB в Windows 10

Делът за възстановяване е отделен дял на твърдия диск или SSD диска на вашия компютър и се използва за възстановяване или преинсталиране на операционната система в случай на системна повреда.

10 съвета за премахване на програми, които не могат да бъдат деинсталирани

10 съвета за премахване на програми, които не могат да бъдат деинсталирани

Куп нежелан софтуер може да бави компютъра ви и да го направи претрупан. Но почистването му не винаги е лесно. Затова разгледайте тези 10 начина за чисто деинсталиране на приложения, премахване на стар софтуер на групи, деинсталиране на елементи, които не могат да бъдат деинсталирани, и дори премахване на предварително инсталирани програми за Windows.

Инструкции за активиране на виртуални машини в Windows 11

Инструкции за активиране на виртуални машини в Windows 11

Виртуалната машина на Windows 11 ще поддържа потребителите да стартират операционна система, различна от Windows, директно на вашия компютър.

Вградените инструменти за сигурност на Windows 11 не могат да ви предпазят от тези заплахи

Вградените инструменти за сигурност на Windows 11 не могат да ви предпазят от тези заплахи

Днес Windows е много по-добър в защитата на вашата сигурност, отколкото беше преди, но Windows Security и свързаните с него инструменти все още не са перфектни. Трябва да внимавате за заплахи, за които компютърната сигурност няма решение.

14 приложения и софтуер за Windows, от които се нуждаете на новия си компютър

14 приложения и софтуер за Windows, от които се нуждаете на новия си компютър

По-долу е даден списък с препоръчителен софтуер при инсталиране на нов компютър, за да можете да изберете най-необходимите и най-добрите приложения на вашия компютър!

Ако дадена VPN мрежа показва тези предупредителни знаци, стойте далеч от нея!

Ако дадена VPN мрежа показва тези предупредителни знаци, стойте далеч от нея!

С течение на времето ще се научите бързо да разпознавате предупредителните знаци на VPN. Ако вашата VPN мрежа показва някой от тези признаци, бързо я изоставете, преди да я инсталирате.

Как да клонирате настройките на Windows, за да пренесете работния си процес навсякъде

Как да клонирате настройките на Windows, за да пренесете работния си процес навсякъде

Носенето на цяла операционна система на флаш устройство може да бъде много полезно, особено ако нямате лаптоп. Но не мислете, че тази функция е ограничена само до Linux дис��рибуции - време е да опитате да клонирате вашата Windows инсталация.

Инструкции за блокиране на автоматичното инсталиране на драйвери в Windows 11

Инструкции за блокиране на автоматичното инсталиране на драйвери в Windows 11

Windows 11 може да изтегля драйвери за вашия компютър без намесата на потребителя, но не винаги е желателно да инсталира драйвери автоматично, за да избегнете нежелани проблеми.

Как да рестартирате приложения на компютри с Windows

Как да рестартирате приложения на компютри с Windows

Ако приложението „Настройки“ или Microsoft Store не работи правилно, срива се или не се отваря, можете да нулирате приложението.

Какво е PING? Как да тествам PING?

Какво е PING? Как да тествам PING?

В статията по-долу ви каним да научите някои прости примери за командата PING в Windows!

Как да стартирате планирани задачи със закъснение в Windows

Как да стартирате планирани задачи със закъснение в Windows

Тази функция е изключително полезна за забавяне на ненужни задачи, осигуряване на мрежова свързаност преди стартиране на задача, изпълнение на задачи в определен ред, планиране на актуализации или извършване на поддръжка на хардуера.

Какво е VPN? Предимства и недостатъци на виртуалната частна мрежа на VPN

Какво е VPN? Предимства и недостатъци на виртуалната частна мрежа на VPN

Какво е VPN, какви са предимствата и недостатъците на VPN? Нека обсъдим с WebTech360 определението за VPN, как да приложим този модел и система в работата.

Как да инвертирате цветовете на екрана с помощта на лупа в Windows 11

Как да инвертирате цветовете на екрана с помощта на лупа в Windows 11

Използването на функцията за инверсия на лупата в Windows 11 може да подобри четливостта на текста, особено за хора, чувствителни към светлина.

Поправка на командата „Копирай и постави“ в Word, Excel (2007, 2010)

Поправка на командата „Копирай и постави“ в Word, Excel (2007, 2010)

Има много причини, поради които командата „Копирай/Постави“ не работи на компютър с Windows, например компютърът ви е атакуван от вирус, клипбордът не работи и следователно командата за копиране (Ctrl + C) и командата за поставяне (Ctrl + V) не работят. Как да поправите тази грешка, моля, вижте статията по-долу на WebTech360.