Перейти до вмісту
    Без категорії / PowerShell: 5 Скриптів для Автоматизації Windows та Економії Часу

    PowerShell: 5 Скриптів для Автоматизації Windows та Економії Часу

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Рутинні завдання на Windows забирають до 20% робочого часу розробників та системних адміністраторів. Автоматизація цих процесів через PowerShell дозволяє скоротити цей час та переключити зусилля на більш важливі задачі.

    Контекст і проблема

    Повторювані дії, такі як резервне копіювання файлів, оновлення програмного забезпечення, налаштування користувачів або очищення диску, вимагають значних зусиль. Навіть прості завдання, що виконуються щодня, можуть накопичуватись і призводити до втрати продуктивності, особливо в середовищах з великою кількістю робочих станцій або серверів. Наприклад, системний адміністратор може витрачати до 30 хвилин на день на ручне перенесення логів з кількох серверів.

    Практична реалізація

    Нижче представлено 5 скриптів PowerShell, які автоматизують типові задачі та дозволяють заощадити час. Скрипти розраховані на використання як на локальній машині, так і на віддалених серверах.

    Скрипт 1: Автоматичне резервне копіювання важливих файлів

    # Скрипт для резервного копіювання важливих файлів
    $Source = "C:\Data\ImportantFiles"
    $Destination = "D:\Backup\ImportantFiles_$(Get-Date -Format "yyyyMMddHHmmss")"
    New-Item -ItemType Directory -Force -Path $Destination
    Copy-Item -Path $Source\* -Destination $Destination -Recurse -Force
    
    Write-Host "Резервне копіювання завершено: $Destination"
    

    Скрипт створює резервну копію файлів з папки `$Source` до папки `$Destination`, додаючи дату та час до назви папки. Це дозволяє зберігати історію резервних копій і відновлювати файли з певного моменту часу. Виконання цієї задачі вручну займає 5-10 хвилин, скрипт виконує її за 1-2 хвилини.

    Скрипт 2: Автоматичне оновлення програмного забезпечення

    # Скрипт для перевірки та встановлення оновлень Windows
    $UpdateSession = New-Object -ComObject Microsoft.Update.Session
    $Searcher = $UpdateSession.CreateStandardSearcher()
    $SearchResult = $Searcher.Search("IsInstalled=0 and Type='Software'")
    
    foreach ($Update in $SearchResult.Updates) {
      $Update.Download()
      $Update.Install()
    }
    
    Write-Host "Оновлення встановлено."
    

    Скрипт використовує COM-об’єкти Microsoft Update для перевірки та встановлення доступних оновлень програмного забезпечення. Вручну перевірка та встановлення оновлень займає близько 15-20 хвилин, скрипт виконує це автоматично.

    Скрипт 3: Створення користувачів з шаблону

    # Скрипт для створення користувачів з шаблону
    $Template = New-Object -Class ADUser
    $Template.Name = "НовийКористувач"
    $Template.SamAccountName = "НовийКористувач"
    $Template.GivenName = "Ім'я"
    $Template.Surname = "Прізвище"
    $Template.UserPrincipalName = "НовийКористувач@domain.com"
    $Template.Path = "OU=Users,DC=domain,DC=com"
    $Template.Enabled = $true
    
    New-ADUser -Name $Template.Name -SamAccountName $Template.SamAccountName -GivenName $Template.GivenName -Surname $Template.Surname -UserPrincipalName $Template.UserPrincipalName -Path $Template.Path -Enabled $Template.Enabled
    Write-Host "Користувач створено."
    

    Скрипт створює нового користувача в Active Directory, використовуючи шаблон. Вручну створення користувача займає близько 5 хвилин на одного користувача, скрипт дозволяє створити кількох користувачів одночасно.

    Скрипт 4: Очищення тимчасових файлів

    # Скрипт для очищення тимчасових файлів
    $TempPaths = @(
      "$env:TEMP",
      "$env:LOCALAPPDATA\Temp",
      "$env:PUBLIC\Documents\Temporary Internet Files"
    )
    
    foreach ($Path in $TempPaths) {
      Get-ChildItem -Path $Path -File | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item -Force
    }
    
    Write-Host "Тимчасові файли очищено."
    

    Скрипт видаляє тимчасові файли, старші за 7 днів, з кількох стандартних папок. Вручну очищення займає 10-15 хвилин, скрипт виконує за 2-3 хвилини.

    Скрипт 5: Моніторинг використання дискового простору

    # Скрипт для моніторингу використання дискового простору
    $Disk = Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3"
    foreach ($D in $Disk) {
      $FreeSpaceGB = [Math]::Round($D.FreeSpace / 1GB, 2)
      $TotalSpaceGB = [Math]::Round($D.Size / 1GB, 2)
      Write-Host "Диск $($D.DeviceID): Зайнято $($TotalSpaceGB - $FreeSpaceGB) ГБ з $TotalSpaceGB ГБ"
    }
    

    Скрипт моніторить використання дискового простору на всіх жорстких дисках. Це дозволяє оперативно реагувати на заповнення диска. Ручний моніторинг займає 5-10 хвилин, скрипт виконує це автоматично з можливістю відправки сповіщень.

    Типові помилки

    • Неправильні шляхи: Неправильно вказаний шлях до файлу або папки призводить до помилки скрипту. Переконайтеся, що шляхи вказані правильно і доступні для виконання скрипту.
    • Права доступу: Скрипт не має прав на виконання певних дій (наприклад, створення користувачів). Запустіть PowerShell від імені адміністратора або налаштуйте права доступу.
    • Помилки синтаксису: Неправильний синтаксис команд PowerShell призводить до помилок виконання. Перевіряйте код на наявність помилок, використовуйте відлагоджувач PowerShell.

    Результат

    Впровадження цих скриптів може заощадити до 1-2 годин на день. Наприклад, автоматизація резервного копіювання займає лише 2 хвилини замість 10, оновлення – 5 хвилин замість 15, а створення користувачів – 1 хвилина замість 5. Почніть з автоматизації найпростіших задач і поступово розширюйте автоматизацію на інші процеси. Спробуйте запустити перший скрипт прямо зараз – автоматизуйте резервне копіювання важливих файлів.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *