Oto kolejne przydatne skrypty PowerShell, które mogą być użyteczne w administracji Windows Server:
1. Skrypt do sprawdzania dostępności serwera za pomocą ICMP (ping)
Poniższy skrypt pozwala na sprawdzenie dostępności serwera w sieci za pomocą polecenia ping
. Może być przydatny do monitorowania dostępności maszyn w sieci.
# Zmienna z nazwą serwera lub adresem IP
$server = "serwer.domain.com"
# Wykonanie ping na serwerze
Test-Connection -ComputerName $server -Count 4 -ErrorAction SilentlyContinue
if ($?) {
Write-Host "Serwer $server jest dostępny."
} else {
Write-Host "Serwer $server jest niedostępny."
}

2. Skrypt do zbierania informacji o zainstalowanych aktualizacjach
Ten skrypt umożliwia zebranie informacji o zainstalowanych aktualizacjach na serwerze, co jest szczególnie ważne w procesie utrzymania systemu.
# Zbieranie informacji o zainstalowanych aktualizacjach
Get-HotFix | Select-Object Description, HotFixID, InstalledOn | Format-Table -AutoSize
Write-Host "Informacje o zainstalowanych aktualizacjach zostały zebrane."
3. Skrypt do masowego dodawania użytkowników do grupy w Active Directory
Skrypt ten pozwala na masowe dodanie użytkowników do określonej grupy w Active Directory na podstawie pliku CSV zawierającego nazwy użytkowników.
# Ścieżka do pliku CSV
$csvPath = "C:\ścieżka\do\użytkownicy.csv"
# Wczytanie danych z pliku CSV
$users = Import-Csv -Path $csvPath
# Dodawanie użytkowników do grupy
foreach ($user in $users) {
Add-ADGroupMember -Identity "Grupa" -Members $user.Username
Write-Host "Użytkownik $($user.Username) został dodany do grupy."
}
4. Skrypt do monitorowania wykorzystania dysku
Skrypt monitoruje stan dysku twardego i informuje, czy przestrzeń dyskowa spadła poniżej określonego progu.
# Ścieżka do monitorowanego dysku
$disk = Get-PSDrive -Name C
# Określenie progu procentowego
$threshold = 80
# Sprawdzenie wykorzystania dysku
if ($disk.Used / $disk.Maximum -gt $threshold / 100) {
Write-Host "Ostrzeżenie: Wykorzystanie dysku C: wynosi ponad $threshold%."
} else {
Write-Host "Wykorzystanie dysku C: jest poniżej $threshold%."
}
5. Skrypt do restartu wielu serwerów
Poniższy skrypt umożliwia zdalne uruchomienie polecenia restartu na wielu serwerach w tym samym czasie. Jest to przydatne w przypadku konieczności przeprowadzenia restartu w środowiskach produkcyjnych.
# Lista serwerów
$servers = @("serwer1", "serwer2", "serwer3")
# Restartowanie serwerów
foreach ($server in $servers) {
Restart-Computer -ComputerName $server -Force -Credential (Get-Credential)
Write-Host "Serwer $server został zrestartowany."
}
6. Skrypt do wyświetlania informacji o systemie operacyjnym
Skrypt ten zbiera podstawowe informacje o systemie operacyjnym, takie jak jego wersja, architektura i typ, a następnie wyświetla je na ekranie.
# Zbieranie informacji o systemie operacyjnym
$os = Get-WmiObject -Class Win32_OperatingSystem
# Wyświetlanie informacji
Write-Host "Nazwa systemu: $($os.Caption)"
Write-Host "Wersja systemu: $($os.Version)"
Write-Host "Architektura systemu: $($os.OSArchitecture)"
Write-Host "Typ systemu: $($os.ProductType)"
7. Skrypt do czyszczenia pamięci podręcznej DNS
Czyszczenie pamięci podręcznej DNS może być pomocne w przypadku problemów z rozwiązywaniem nazw. Poniższy skrypt wykonuje to zadanie.
# Czyszczenie pamięci podręcznej DNS
Clear-DnsClientCache
Write-Host "Pamięć podręczna DNS została wyczyszczona."
8. Skrypt do usuwania starych plików logów
Ten skrypt usuwa pliki logów starsze niż określona liczba dni z określonego folderu, co jest pomocne w zarządzaniu przestrzenią dyskową.
# Ścieżka do folderu logów
$logFolder = "C:\Logs"
# Określenie liczby dni
$days = 30
# Usuwanie plików starszych niż określona liczba dni
Get-ChildItem -Path $logFolder | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } | Remove-Item -Force
Write-Host "Pliki logów starsze niż $days dni zostały usunięte."
9. Skrypt do generowania raportu o użytkownikach i ich grupach w Active Directory
Skrypt ten generuje raport, który pokazuje, w jakich grupach znajdują się użytkownicy w Active Directory.
# Pobieranie wszystkich użytkowników z Active Directory
$users = Get-ADUser -Filter * -Property MemberOf
# Generowanie raportu o grupach
$users | ForEach-Object {
$userGroups = $_.MemberOf -join ", "
[PSCustomObject]@{
Username = $_.SamAccountName
Groups = $userGroups
}
} | Export-Csv -Path "C:\ścieżka\do\raport_użytkownicy.csv" -NoTypeInformation
Write-Host "Raport o użytkownikach i ich grupach został zapisany."
10. Skrypt do sprawdzania, czy Windows Defender jest włączony
Skrypt ten sprawdza, czy Windows Defender jest włączony i czy system jest chroniony przed zagrożeniami.
# Sprawdzenie stanu Windows Defender
$defenderStatus = Get-MpPreference
if ($defenderStatus.DisableRealtimeMonitoring -eq $true) {
Write-Host "Windows Defender jest wyłączony."
} else {
Write-Host "Windows Defender jest włączony."
}
11. Skrypt do aktualizacji systemu Windows za pomocą PowerShell
Poniższy skrypt umożliwia zainstalowanie dostępnych aktualizacji systemu Windows przy użyciu Windows Update.
# Sprawdzenie dostępnych aktualizacji
$updates = Get-WindowsUpdate
# Instalacja dostępnych aktualizacji
Install-WindowsUpdate -AcceptAll -AutoReboot
Write-Host "Aktualizacje zostały zainstalowane."
12. Skrypt do sprawdzania dostępności portów na wielu serwerach
Ten skrypt sprawdza dostępność określonych portów na wielu serwerach w tym samym czasie.
# Lista serwerów
$servers = @("serwer1", "serwer2", "serwer3")
$port = 80 # Przykład: HTTP
# Sprawdzenie dostępności portu na serwerach
foreach ($server in $servers) {
$result = Test-NetConnection -ComputerName $server -Port $port
Write-Host "$($server): Port $port dostępny: $($result.TcpTestSucceeded)"
}
13. Skrypt do synchronizacji czasu systemowego z serwerem NTP
Jeśli chcesz zsynchronizować czas systemowy z zewnętrznym serwerem NTP, możesz użyć poniższego skryptu.
# Synchronizacja czasu z serwerem NTP
w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manual /reliable:YES /update
w32tm /resync
Write-Host "Czas systemowy został zsynchronizowany z serwerem NTP."
14. Skrypt do monitorowania i zbierania informacji o procesach
Ten skrypt zbiera informacje o działających procesach na serwerze, w tym ich identyfikatory PID, użycie CPU i pamięci.
# Zbieranie informacji o procesach
Get-Process | Select-Object Name, Id, CPU, WorkingSet | Format-Table -AutoSize
Write-Host "Informacje o procesach zostały zebrane."
15. Skrypt do tworzenia kopii zapasowej bazy danych SQL
Skrypt ten pozwala na tworzenie kopii zapasowej bazy danych SQL Server przy użyciu PowerShell.
# Zmienna z połączeniem do SQL Server
$serverName = "SQLServerName"
$databaseName = "DatabaseName"
$backupPath = "C:\Backup\DatabaseBackup.bak"
# Tworzenie kopii zapasowej bazy danych
Invoke-Sqlcmd -Query "BACKUP DATABASE [$databaseName] TO DISK = '$backupPath'" -ServerInstance $serverName
Write-Host "Kopia
zapasowa bazy danych została utworzona."
Podsumowanie
Skrypty PowerShell to potężne narzędzie do zarządzania systemami Windows Server. Automatyzacja wielu procesów, takich jak monitorowanie, zarządzanie użytkownikami, czy aktualizacje, pozwala administratorom zaoszczędzić czas i zmniejszyć ryzyko błędów. Powiązane z procesami, jak zarządzanie przestrzenią dyskową, bezpieczeństwem czy usługami, skrypty te są niezbędnym elementem efektywnego zarządzania środowiskiem serwerowym.