Як скинути налаштування програм на компютерах з Windows
Якщо ваш додаток «Налаштування» або Microsoft Store працює неправильно, аварійно завершує роботу або не відкривається, ви можете скинути налаштування додатка.
Що, якби ваш ПК міг виконувати рутинні завдання за вас? З Windows PowerShell він може. Ось як використовувати PowerShell для автоматизації повторюваних, повсякденних завдань, які ніхто не хоче виконувати знову і знову.
Зміст
Microsoft PowerShell — це утиліта командного рядка та мова сценаріїв, яка є потужним інструментом для адміністраторів, що дозволяє автоматизувати широкий спектр завдань для комп’ютерів і мереж. PowerShell містить компоненти командного рядка та побудований на платформі .NET. Якщо ви читаєте про WebTech360, вам слід знати, що PowerShell — це інструмент вибору ІТ-адміністраторів для керування великими мережами.
Вивчення того, як використовувати PowerShell, спростить багато виснажливих щоденних завдань. Ви також можете вносити зміни в масштабах всієї системи через мережу, не налаштовуючи кожен сервер окремо. PowerShell стає невід'ємною частиною роботи гібридних хмарних середовищ .
PowerShell має багато різних застосувань, щоб допомогти вам працювати ефективніше та підтримувати ефективну роботу вашої мережі. Найпростіші застосування включають: планування щоденних оновлень систем, створення звітів про поточні процеси, періодичні служби тощо. Хоча багато з цих завдань можна виконувати через графічний інтерфейс, сенс PowerShell полягає в тому, щоб робити їх швидше.
Якщо у вас є завдання планового обслуговування, налаштування якого займає кілька хвилин, ви можете написати ту саму функціональність в одній команді з назвою PowerShell. Тоді, наступного разу, коли ви відкриєте цей скрипт, він працюватиме у фоновому режимі. Оволодіння логікою скриптів PowerShell, розуміння того, як працюють об'єкти, змінні (var) та їх інтелектуальне розгортання у вашій мережі змусить вас задуматися, чому ви не використовували PowerShell раніше.
Цей посібник охопить основи PowerShell, що буде корисним для новачків у сфері ІТ, особливо якщо ви знайомі з командним рядком 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 та окремих виконуваних файлів. Кожен скрипт використовує різні правила виконання та запитів, розбору та повернення даних.
Погана підтримка змінних у CMD.EXE, несумісні інтерфейси та обмежений доступ до налаштувань Windows, у поєднанні з ще однією слабкістю, ускладнюють реалізацію та використання скриптів командного рядка. Ви можете запитати, що це за «інша слабкість»? Це текст. У цих технологіях все є текстом. Вивід команди або скрипта є текстом і має бути проаналізований та переформатований, щоб він служив вхідними даними для наступної команди. Це основна відправна точка, яку PowerShell запозичує з усіх традиційних оболонок.
Три концепції, представлені в цьому розділі, є лише базовими для розуміння ключових концепцій, що складають основу PowerShell. Вам потрібно буде витратити більше часу на вивчення та опанування складніших концепцій, коли ви підійдете до команд PowerShell.
PowerShell інстальовано за замовчуванням у Windows 10, Windows 7, Windows Server 2008 R2 та новіших версіях Windows. Новіші версії PowerShell додають нові функції та «командлети» (термін Microsoft для команд PowerShell — вимовляється як «команди») та інсталюються разом із відповідною версією 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 (інтегроване середовище сценаріїв). Консоль PowerShell виглядає як традиційний командний рядок, але з повним набором функцій PowerShell. Імена змінних, цикли, автозаповнення команд та конвеєри доступні з консолі PowerShell.
Для більш просунутого використання (наприклад, для написання сценаріїв) PowerShell ISE забезпечує автозаповнення команд, підсвічування коду та автодоповнення коду Microsoft Intellisense, що допомагає створювати та тестувати код PowerShell. PowerShell ISE також дозволяє працювати з кількома сценаріями PowerShell одночасно за допомогою навігації з вкладками.
Основою команд PowerShell є командлет. Microsoft застосувала кілька стратегій проектування під час створення командлетів у PowerShell.
По-перше, це можливість легко виводити назви командлетів або принаймні зробити їх легшими для виявлення. Команди або командлети PowerShell також розроблені для простішого використання зі стандартизованим синтаксисом, що спрощує створення скриптів з інтерфейсу командного рядка.
Командлети використовують формат «дієслово-іменник», як-от Get-Service, Stop-Service або Import-Csv. Частина дієслова в назві командлета вказує на дію, що виконується з іменником. Як правило, командлети, що використовуються для отримання інформації, матимуть у своїй назві дієслово Get , наприклад, Get-Process або Get-Content . Команди, що використовуються для зміни чогось, зазвичай починаються з дієслова Set , а команди, що використовуються для додавання нової сутності до чогось, зазвичай починаються з Add або New .
По-друге, параметрам, які зазвичай використовуються в PowerShell, також надаються стандартизовані назви. Наприклад, параметр -ComputerName дозволяє виконувати командлет на одному або кількох віддалених комп’ютерах. -Credential використовується для надання об’єкта автентифікації, що містить облікові дані користувача, для виконання команди від імені певного користувача.
Ви можете використовувати псевдоніми як для командлетів, так і для параметрів, щоб заощадити натискання клавіш і скоротити загальну довжину команди (корисно під час об'єднання кількох команд). Хоча ці псевдоніми не завжди використовують стандартні правила іменування, вони все ж відображають традиційні утиліти командного рядка.
У PowerShell такі псевдоніми, як DIR, CD, DEL та CLS, відповідають командлетам Get-ChildItem, Set-Location, Remove-Item та Clear-Host відповідно. Псевдоніми параметрів можуть працювати двома способами: вони можуть використовувати попередньо визначений псевдонім, наданий командлетом, або їх можна створити за допомогою введення достатньої кількості символів для створення унікального збігу між підтримуваними параметрами командлета.
Більшості системних адміністраторів доводиться маніпулювати файлами та папками під час своєї роботи, будь то переміщення папки в інше місце на сервері, архівування файлів журналів чи пошук великих файлів. У випадках, коли одні й ті ж операції повторюються над багатьма файлами, використання PowerShell для їх автоматизації буде ефективним рішенням для економії часу.
Щоб знайти файли та папки, одним із перших інструментів командного рядка, який адміністратор вивчав у старі часи обчислювальної техніки, була команда dir. Dir виведе список файлів та папок, що містяться у вказаному каталозі.
PowerShell має подібну команду у вигляді командлета Get-ChildItem . Get-ChildItem дозволяє швидко створити список файлів у каталозі таким чином, щоб ви могли маніпулювати файлами за допомогою команди каналу або призначити вивід змінній.
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 все ще працює як традиційна оболонка. Команди, скрипти та виконувані файли можна вводити та запускати з командного рядка, а результати відображаються у вигляді тексту. Файли Windows .CMD та .BAT, VBScripts, JScripts та виконувані файли, що виконуються всередині CMD.EXE, все ще працюють у PowerShell. Однак, оскільки вони не є об'єктно-орієнтованими, вони не мають повного доступу до об'єктів, створених та використовуваних у PowerShell. Ці застарілі скрипти та виконувані файли все одно оброблятимуть все як текст, але ви можете поєднувати PowerShell з низкою інших технологій. Це особливо важливо, якщо ви хочете почати використовувати PowerShell з колекцією існуючих скриптів, які ви не можете конвертувати всі одночасно.
Командлети можуть приймати параметри для зміни своєї поведінки. Під час запуску командлета або функції можна надати значення параметрів, щоб указати, що, коли, де та як виконується кожна команда PowerShell.
Наприклад, Get-Process отримає та перерахує всі запущені процеси у вашій операційній системі:
Але що робити, якщо вам потрібно отримати лише певний процес? Ви можете зробити це за допомогою параметрів. Наприклад, щоб отримати всі процеси Slack, ви можете використовувати параметр Name з командлетом Get-Process:
Get-Process -Name Slack
Тоді ви побачите лише процеси з назвою "slack":
Порада : Деякі параметри є «позиційними», тобто їхні назви необов’язкові. У цьому випадку Get-Process -Name Slack та Get-Process Slack виконують одне й те саме завдання.
Кожен командлет прийматиме різні типи параметрів. Використовуйте команду Get-Help, щоб переглянути допустимі параметри командлета в розділі SYNTAX.
Get-Help Get-Process
Ви побачите список усіх можливих способів запуску заданого командлета:
У цьому випадку командлет Get-Process приймає такі параметри, як Name (Ідентифікатор), ComputerName (Назва комп'ютера), Module (Модуль), FileVersionInfo (Інформація про версію файлу) та інші поширені параметри. Наведені тут символи означають:
Символ |
Ім'я |
Значення |
---|---|---|
Барабан |
Параметр не приймає вхідні дані |
|
- |
Дефіс |
Вкажіть назву параметра |
<> |
фігурні дужки |
Заповнювач для тексту |
[] |
Дужки |
Параметр може приймати одне або декілька значень. |
{} |
фігурні дужки |
Параметр приймає набір значень. |
Параметри приймають набір значень, які вказуватимуть тип даних, які їм потрібні, наприклад, рядок, ціле число, логічне число або дата/час. Наприклад, наступна команда:
Get-Process [[-Name] ]
... означає, що параметр Name приймає одне або декілька рядкових значень, тоді як ця команда:
Get-Process -Id
... означає, що параметр Id приймає одне або декілька цілочисельних значень.
У попередньому прикладі Get-Process для звуження результатів використовувався параметр Name. Однак, якщо ви хочете звузити його до більш конкретного процесу, ви можете скористатися параметром ID , який вимагає цілого числа, як зазначено в його синтаксисі.
Get-Process -Id 3016
Тоді ви побачите лише один процес у списку:
PowerShell обробляє всі дані як об'єкти. Для створення скрипта ці об'єкти виконуються через серію командлетів або функцій, з'єднаних за допомогою символу вертикальної риски (|). Вибір правильних командлетів та їх з'єднання в логічній послідовності за допомогою конвеєра важливий для ефективної роботи скрипта.
Припустимо, ви створюєте скрипт для сортування та відображення 5 файлів, які займають найбільше місця в каталозі. Існують потужніші способи написання скрипта сортування файлів, але цей простий легко зрозуміти:
Щоб зробити це в PowerShell, використовуйте конвеєр, який виглядає так:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Тепер, коли у нас є робочий конвеєр, ви можете зберегти його як файл скрипта PS1, щоб не імпортувати його щоразу, коли ви його використовуєте.
Найпростіший спосіб створити PS1-файл – це вставити скрипт у Блокнот і зберегти файл із розширенням .ps1.
Після створення файлу PS1 ви можете використовувати його в PowerShell, виконавши команду ./ScriptName.ps1 :
Порада : Якщо ви отримуєте помилку дозволів, найшвидшим рішенням є запуск PowerShell з правами адміністратора під час виконання скрипта.
Вітаємо! Тепер ви можете створювати скрипти PowerShell PS1.
Читати про переваги нових технологій та розуміти їх – це одне, а використовувати їх на практиці – зовсім інше! У решті цієї статті ми розробимо скрипт PowerShell, щоб продемонструвати їхні можливості та способи їх використання.
DIR – одна з найпоширеніших команд у CMD.EXE . Ця команда відображає всі файли та підкаталоги, що містяться в батьківському каталозі (як показано на рисунку 1). Поряд з іменем кожного об'єкта, надана інформація включає дату та час останнього оновлення та розмір кожного файлу. DIR також відображає загальний розмір усіх файлів у каталозі, а також загальну кількість файлів та підкаталогів.
Рисунок 1
Запуск DIR у PowerShell також створює список каталогів, як на рисунку 2, але дещо іншим способом. PowerShell не має команди DIR, натомість має Get-ChildItem, яка виконує ту саму функцію. У PowerShell DIR – це псевдонім для Get-ChildItem. Я не збираюся вдаватися в розгляд псевдонімів у цій статті. Ви можете вважати DIR у PowerShell скороченням від Get-ChildItem.
DIR у PowerShell надає майже ту саму інформацію, що й згадану вище: список файлів і папок, дату та час їх останньої зміни, а також розмір кожного файлу. Однак, йому бракує зведеної інформації, яку надає DIR у CMD.EXE: загальний розмір усіх файлів у папці, загальна кількість файлів і загальна кількість підпапок.
Рисунок 2
Для прикладу сценарію вам потрібно буде створити скрипт PowerShell, який імітує команду CMD.EXE DIR. Нижче я поясню найважливіші частини скрипта.
DIR.PS1: Заголовок
Скрипт PowerShell складається з команд PowerShell у звичайному текстовому файлі з розширенням .PS1. Замість DIR слід використовувати текстовий файл під назвою DIR.PS1.
Щоб запустити скрипт, введіть таку команду на екрані PowerShell:
.DIR.PS1 X:Folder
Де X — це літера розділу диска (наприклад, C, D, E), а Folder — це назва папки.
Якщо ви хочете дізнатися певну інформацію про розділ диска, вам знадобиться інструментарій керування Windows (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? Це оператор порівняння рівності. У таблиці нижче наведено всі оператори порівняння:
-екв, -екв | Порівняти за |
-не, -їн | Порівняння не є рівнозначним |
-гт, -ігт | Порівняйте більше ніж |
-ге, -іге | Порівняйте більше або дорівнює |
-лт, -ілт | Порівняйте менше, ніж |
-ле, -іль | Порівняйте менше або дорівнює |
Символ -i перед операторами порівняння вказує на те, що оператор не враховує регістр.
Рисунок 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
}
Рисунок 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")
Рисунок 5: Відображає повні вихідні дані скрипта.
Прогнози та покращення можуть бути
Хоча створений вами скрипт видає майже ідентичний вивід команді CMD.EXE DIR, є деякі застереження, про які слід знати, та деякі покращення, які можна внести.
Ви можете використовувати 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"
Вставте скрипт у файл Блокнота та збережіть його як LaunchFavoriteApps.ps1. Потім просто двічі клацніть файл, щоб запустити всі програми, перелічені у скрипті.
Скопіюйте важливі файли до місця резервного копіювання
Ви можете періодично створювати резервні копії важливих файлів у резервне місце за допомогою наступного скрипта. Обов’язково змініть шляхи джерела та призначення за потреби:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Оскільки щодня завантажується багато типів файлів, папка «Завантаження» може швидко захаращуватися всілякими файлами, розкиданими навколо. Щоб виправити це, ми можемо написати скрипт PowerShell, який сортуватиме завантажені файли по папках за типом файлу в кінці кожного дня.
Відкрийте новий файл Блокнота та вставте наступний скрипт. Переконайтеся, що шлях до вихідної папки у скрипті відповідає шляху до папки Завантажень:
# 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 . Скрипт створить заплановане завдання в Планувальнику завдань для запуску скрипта організації файлів щодня о 17:00. Якщо ви бажаєте інший час, ви можете змінити його у наведеному вище скрипті.
Крім того, ви можете використовувати PowerShell для автоматизації інших повсякденних завдань, таких як скрипт моніторингу простору, який сповіщає вас про нестачу вільного місця на основному диску, захист паролем пакетів PDF-документів і навіть застосування живих шпалер з папки зображень.
Хоча PowerShell — це потужна утиліта та мова сценаріїв, для її розуміння та використання потрібен певний час, особливо якщо ви не знайомі з середовищем .NET Framework. Сподіваюся, ця стаття та приклад сценарію будуть корисними для всіх, хто хоче зрозуміти PowerShell. Але приклад сценарію, створений у статті, досить простий. Я вважаю, що його можна створити та розробити більш повноцінно для обслуговування складніших програм.
Якщо ваш додаток «Налаштування» або Microsoft Store працює неправильно, аварійно завершує роботу або не відкривається, ви можете скинути налаштування додатка.
У статті нижче ми запрошуємо вас ознайомитися з кількома простими прикладами команди PING у Windows!
Ця функція надзвичайно корисна для відкладення непотрібних завдань, забезпечення мережевого підключення перед початком завдання, запуску завдань у певному порядку, планування оновлень або виконання обслуговування обладнання.
Що таке VPN, які його переваги та недоліки? Давайте обговоримо з WebTech360 визначення VPN, як застосовувати цю модель та систему в роботі.
Використання функції інверсії лупи у Windows 11 може покращити читабельність тексту, особливо для людей, чутливих до світла.
Існує багато причин, чому команда «Копіювати/Вставити» не працює на комп’ютері з ОС Windows, наприклад, ваш комп’ютер атакований вірусом, буфер обміну не працює, і тому команди копіювання (Ctrl + C) та вставки (Ctrl + V) не працюють. Тож як виправити цю помилку, будь ласка, зверніться до статті нижче на WebTech360.
Якщо вам не подобається програма «Фотографії» у Windows 10, але ви хочете переглядати фотографії за допомогою засобу перегляду фотографій Windows у Windows 10, дотримуйтесь цього посібника, щоб перенести засіб перегляду фотографій Windows у Windows 10, що допоможе вам переглядати фотографії швидше.
Процес клонування включає переміщення даних з одного пристрою зберігання даних на інший (у цьому випадку, жорсткий диск) з точною копією, скопійованою з цільового диска.
Швидкий запуск Windows 11 допомагає вашому комп'ютеру завантажуватися швидше, але це також може бути причиною, чому ваш комп'ютер Windows не вимикається повністю.
У Windows 11 є функція, яка додає кнопку «Завершити завдання» безпосередньо на панель завдань, тому вам не потрібно звертатися до диспетчера завдань, щоб закрити програми, що не реагують.
Іноді ви просто не можете знайти зовнішній жорсткий диск, коли він вам найбільше потрібен. Після кількох втрат важливих файлів деякі люди знайшли простий і надійний спосіб створити резервну копію всього, навіть коли жорсткий диск недоступний.
Ctrl + Z – це надзвичайно поширена комбінація клавіш у Windows. Ctrl + Z фактично дозволяє скасовувати дії в усіх областях Windows.
Розділ відновлення – це окремий розділ на жорсткому диску або SSD-диску вашого комп’ютера, який використовується для відновлення або перевстановлення операційної системи у разі системного збою.
Наявність небажаного програмного забезпечення може уповільнити роботу вашого комп’ютера та зробити його захаращеним. Але очистити його не завжди легко. Тож ознайомтеся з цими 10 способами остаточного видалення програм, видалення старого програмного забезпечення пакетами, видалення елементів, які неможливо видалити, і навіть видалення попередньо встановлених програм Windows.
Віртуальна машина у Windows 11 дозволить користувачам запускати на комп'ютері операційну систему, відмінну від Windows.
Сьогодні Windows набагато краще захищає вашу безпеку, ніж раніше, але Безпека Windows та пов’язані з нею інструменти все ще не ідеальні. Вам потрібно бути уважними до загроз, від яких комп’ютерна безпека не має рішення.
ПК з Windows іноді можуть працювати повільно, але диспетчер завдань не показує нічого підозрілого. На цьому етапі більшість людей перевіряють наявність шкідливого програмного забезпечення або проблем зі сховищем, але застарілі драйвери також можуть спричиняти проблеми з продуктивністю.
Вимкнення непотрібних вам програм – це найефективніший спосіб пришвидшити завантаження комп’ютера з Windows.
Зміна шпалер у Windows 11 – один із найкращих способів налаштувати робочий стіл.
У цій статті Quantrimang розповість вам про кілька способів виправлення помилки автоматичного перезавантаження комп’ютерів Windows після натискання кнопки вимкнення.
Якщо ваш додаток «Налаштування» або Microsoft Store працює неправильно, аварійно завершує роботу або не відкривається, ви можете скинути налаштування додатка.
У статті нижче ми запрошуємо вас ознайомитися з кількома простими прикладами команди PING у Windows!
Ця функція надзвичайно корисна для відкладення непотрібних завдань, забезпечення мережевого підключення перед початком завдання, запуску завдань у певному порядку, планування оновлень або виконання обслуговування обладнання.
Що таке VPN, які його переваги та недоліки? Давайте обговоримо з WebTech360 визначення VPN, як застосовувати цю модель та систему в роботі.
Використання функції інверсії лупи у Windows 11 може покращити читабельність тексту, особливо для людей, чутливих до світла.
Існує багато причин, чому команда «Копіювати/Вставити» не працює на комп’ютері з ОС Windows, наприклад, ваш комп’ютер атакований вірусом, буфер обміну не працює, і тому команди копіювання (Ctrl + C) та вставки (Ctrl + V) не працюють. Тож як виправити цю помилку, будь ласка, зверніться до статті нижче на WebTech360.
Якщо вам не подобається програма «Фотографії» у Windows 10, але ви хочете переглядати фотографії за допомогою засобу перегляду фотографій Windows у Windows 10, дотримуйтесь цього посібника, щоб перенести засіб перегляду фотографій Windows у Windows 10, що допоможе вам переглядати фотографії швидше.
Процес клонування включає переміщення даних з одного пристрою зберігання даних на інший (у цьому випадку, жорсткий диск) з точною копією, скопійованою з цільового диска.
Швидкий запуск Windows 11 допомагає вашому комп'ютеру завантажуватися швидше, але це також може бути причиною, чому ваш комп'ютер Windows не вимикається повністю.
У Windows 11 є функція, яка додає кнопку «Завершити завдання» безпосередньо на панель завдань, тому вам не потрібно звертатися до диспетчера завдань, щоб закрити програми, що не реагують.