Skrypty PowerShell dla Windows: Automatyzacja zadań administracyjnych
Windows 10 Windows 11 Windows 12 Windows Server

Skrypty PowerShell dla Windows: Automatyzacja zadań administracyjnych

⚙️ Skrypty PowerShell dla Windows: Automatyzacja zadań administracyjnych


💡 Wprowadzenie do PowerShell

PowerShell to potężna powłoka skryptowa opracowana przez Microsoft, która pozwala na kompleksowe zarządzanie systemem Windows. Umożliwia wykonywanie zarówno prostych komend, jak i tworzenie skomplikowanych automatyzacji — wszystko w duchu Infrastructure as Code (IaC).

📌 PowerShell to nie tylko alternatywa dla CMD — to środowisko programistyczne i administracyjne w jednym.


🔍 Dlaczego warto używać skryptów PowerShell?

  • Automatyzacja rutynowych zadań (tworzenie kont, zmiana haseł, backupy)
  • Zarządzanie konfiguracją wielu komputerów jednocześnie
  • Szybkie wdrażanie polityk i zmian
  • Tworzenie raportów i audytów
  • Integracja z Active Directory, Exchange, Azure i innymi technologiami Microsoft
Skrypty PowerShell dla Windows: Automatyzacja zadań administracyjnych
Skrypty PowerShell dla Windows: Automatyzacja zadań administracyjnych

🧱 Podstawy składni i struktura skryptu

🔤 Przykład prostego skryptu .ps1:

# Skrypt sprawdzający status usługi Windows Update
$usluga = Get-Service -Name wuauserv
if ($usluga.Status -eq 'Running') {
    Write-Output "Usługa Windows Update działa."
} else {
    Start-Service -Name wuauserv
    Write-Output "Usługa została uruchomiona."
}

🔑 Kluczowe elementy:

  • Cmdlet: np. Get-Service, Start-Service
  • Zmienne: $nazwa, $true, $false
  • Warunki: if, else, switch
  • Pętle: foreach, for, while

🛠️ Typowe zadania administracyjne – skrypty krok po kroku

🧑‍💻 Tworzenie kont użytkowników w Active Directory:

Import-Module ActiveDirectory
New-ADUser -Name "Jan Kowalski" -SamAccountName "jkowalski" -UserPrincipalName "jkowalski@firma.local" `
-Path "OU=Uzytkownicy,DC=firma,DC=local" -AccountPassword (ConvertTo-SecureString "SilneHaslo2025!" -AsPlainText -Force) -Enabled $true

📁 Tworzenie struktury folderów z uprawnieniami:

New-Item -Path "C:\DzialIT" -ItemType Directory
$acl = Get-Acl "C:\DzialIT"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("DzialIT","FullControl","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\DzialIT" $acl

🧾 Raportowanie logowań użytkowników:

Get-EventLog -LogName Security -InstanceId 4624 -After (Get-Date).AddDays(-1) | 
Select-Object TimeGenerated, EntryType, Message | 
Export-Csv -Path "C:\Raporty\logowania.csv" -NoTypeInformation

🧬 Zaawansowane scenariusze automatyzacji

🔄 Masowe resetowanie haseł użytkowników:

$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false}
foreach ($user in $users) {
    Set-ADAccountPassword -Identity $user.SamAccountName -Reset -NewPassword (ConvertTo-SecureString "NoweHaslo!" -AsPlainText -Force)
}

🗃️ Backup ustawień systemowych:

$backupPath = "C:\Backup\System_" + (Get-Date -Format "yyyyMMdd_HHmmss")
New-Item -ItemType Directory -Path $backupPath
Copy-Item "C:\Windows\System32\config" -Destination $backupPath -Recurse

🔐 Bezpieczeństwo i najlepsze praktyki

  1. Weryfikacja podpisów skryptów – używaj podpisów cyfrowych (Set-ExecutionPolicy AllSigned)
  2. Używaj kont o minimalnych uprawnieniach
  3. Loguj działania administracyjne i archiwizuj wyniki
  4. Oddzielaj logikę i konfigurację (np. używaj plików .json/.xml/.csv do wejścia)
Czytaj  Jak zoptymalizować wydajność komputera?

📦 Tworzenie własnego modułu PowerShell

Moduły pozwalają na tworzenie zorganizowanych bibliotek funkcji.

📁 Struktura:

MyModule\
│   MyModule.psm1
│   MyModule.psd1

📜 Przykład funkcji:

function Restart-PrinterSpooler {
    Stop-Service -Name "Spooler"
    Start-Service -Name "Spooler"
}

Użycie:

Import-Module .\MyModule.psm1
Restart-PrinterSpooler

🌐 Zarządzanie zdalne i automatyzacja wielu hostów

🔧 PowerShell Remoting:

Enable-PSRemoting -Force
Invoke-Command -ComputerName "Komputer01" -ScriptBlock { Get-Service Spooler }

🖥️ Zbieranie danych z wielu komputerów:

$komputery = Get-Content .\lista_komputerow.txt
foreach ($pc in $komputery) {
    Invoke-Command -ComputerName $pc -ScriptBlock { Get-ComputerInfo | Select-Object OSName, CsName }
}

⏰ Harmonogram zadań i uruchamianie cykliczne

Tworzenie zadania:

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Skrypty\Backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -TaskName "BackupSystemu" -Action $action -Trigger $trigger -User "SYSTEM"

🧾 Podsumowanie

Tworzenie skryptów PowerShell to esencja nowoczesnej administracji Windows. Dzięki niemu oszczędzasz czas, zwiększasz niezawodność operacji i unikasz błędów ludzkich. Jeśli dopiero zaczynasz, rozpocznij od automatyzacji codziennych zadań. Z czasem stworzysz własne biblioteki, harmonogramy i procesy DevOps w środowisku Microsoft.

Polecane wpisy
Defragmentator dysku Windows 10
Defragmentator dysku Windows 10

Defragmentator dysku Windows 10 – Kompletny przewodnik Defragmentator dysku w Windows 10 to narzędzie umożliwiające optymalizację i organizację plików na Czytaj dalej

Porady dotyczące tworzenia reguł zapory, które są specyficzne dla zdalnych narzędzi zarządzania w Windows Server
Porady dotyczące tworzenia reguł zapory, które są specyficzne dla zdalnych narzędzi zarządzania w Windows Server

Porady dotyczące tworzenia reguł zapory, które są specyficzne dla zdalnych narzędzi zarządzania w Windows Server Zdalne narzędzia zarządzania są niezbędne Czytaj dalej