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  Tworzenie własnych modułów PowerShell: Jak tworzyć własne polecenia i funkcje PowerShell?

📦 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
Szyfrowanie dysku, folderów i nośników zewnętrznych w Windows 11 – Kompletny przewodnik
Szyfrowanie dysku, folderów i nośników zewnętrznych w Windows 11 – Kompletny przewodnik

Szyfrowanie dysku, folderów i nośników zewnętrznych w Windows 11 – Kompletny przewodnik Wstęp Bezpieczeństwo danych to jedno z najważniejszych zagadnień Czytaj dalej

Instalacja i konfiguracja Active Directory Domain Services (AD DS) na Windows Server
Instalacja i konfiguracja Active Directory Domain Services (AD DS) na Windows Server

Instalacja i konfiguracja Active Directory Domain Services (AD DS) na Windows Server Wstęp Active Directory Domain Services (AD DS) to Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.