Oto kolejne przydatne skrypty PowerShell, które mogą ułatwić administrację Windows Server:
1. Skrypt do sprawdzania dostępności portu na zdalnym serwerze
Ten skrypt sprawdza, czy określony port na zdalnym serwerze jest otwarty. Jest to przydatne do diagnostyki problemów z połączeniami sieciowymi.

# Zmienna z adresem serwera i numerem portu
$server = "serwer.domain.com"
$port = 443 # Przykładowo HTTPS
# Sprawdzanie dostępności portu
Test-NetConnection -ComputerName $server -Port $port
2. Skrypt do tworzenia raportu o pamięci RAM
Ten skrypt zbiera szczegółowe informacje o zainstalowanej pamięci RAM, jej typie i statusie, a następnie zapisuje raport do pliku tekstowego.
# Pobranie szczegółowych informacji o pamięci RAM
$ram = Get-WmiObject -Class Win32_PhysicalMemory
# Generowanie raportu o pamięci
$ramReport = $ram | Select-Object Manufacturer, Capacity, Speed, PartNumber, MemoryType | Format-Table -AutoSize
# Zapisanie raportu do pliku
$ramReport | Out-File "C:\ścieżka\do\raport_ram.txt"
Write-Host "Raport o pamięci RAM został zapisany."
3. Skrypt do instalacji aplikacji za pomocą Chocolatey
Chocolatey to popularny menedżer pakietów dla systemu Windows. Dzięki temu skryptowi można zainstalować aplikacje na serwerze w sposób automatyczny.
# Instalacja Chocolatey, jeśli nie jest zainstalowany
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
Invoke-WebRequest https://chocolatey.org/install.ps1 -UseBasicPipelining | Invoke-Expression
}
# Instalacja aplikacji (np. Google Chrome)
choco install googlechrome -y
Write-Host "Google Chrome został zainstalowany."
4. Skrypt do automatycznego restartowania aplikacji po awarii
Ten skrypt monitoruje określoną aplikację, a jeśli jej proces przestanie działać, uruchamia go ponownie.
# Zmienna z nazwą aplikacji
$processName = "notepad"
# Monitorowanie aplikacji
while ($true) {
$process = Get-Process -Name $processName -ErrorAction SilentlyContinue
if ($process -eq $null) {
Write-Host "Aplikacja $processName została zamknięta. Uruchamiam ponownie..."
Start-Process "notepad.exe"
}
Start-Sleep -Seconds 5 # Sprawdzenie co 5 sekund
}
5. Skrypt do czyszczenia folderu tymczasowego
Ten skrypt usuwa pliki w folderze tymczasowym systemu Windows, co może pomóc w zwolnieniu miejsca na dysku.
# Usunięcie plików tymczasowych
$TempPath = [System.IO.Path]::GetTempPath()
Remove-Item "$TempPath*" -Recurse -Force
Write-Host "Pliki tymczasowe zostały usunięte."
6. Skrypt do sprawdzania stanu dysku twardego
Ten skrypt używa WMI do sprawdzenia stanu dysku twardego i jego zdrowia. To ważne narzędzie do monitorowania sprzętu w systemach Windows Server.
# Sprawdzenie stanu dysków twardych
Get-WmiObject -Class Win32_DiskDrive | Select-Object DeviceID, MediaType, Status
Write-Host "Status dysków twardych został sprawdzony."
7. Skrypt do usuwania starych plików z określonego folderu
Skrypt usuwa pliki starsze niż określona liczba dni z wskazanego folderu. Przydatne w automatyzacji czyszczenia folderów z logami lub plikami tymczasowymi.
# Ścieżka do folderu i liczba dni
$folderPath = "C:\ścieżka\do\folderu"
$days = 30
# Usuwanie starych plików
Get-ChildItem -Path $folderPath | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } | Remove-Item -Force
Write-Host "Pliki starsze niż $days dni zostały usunięte."
8. Skrypt do zbierania informacji o użytkownikach w Active Directory
Ten skrypt zbiera szczegółowe informacje o użytkownikach w Active Directory, takie jak login, pełna nazwa i status konta.
# Pobranie wszystkich użytkowników z Active Directory
Get-ADUser -Filter * -Property DisplayName, SamAccountName, Enabled | Select-Object DisplayName, SamAccountName, Enabled | Format-Table -AutoSize
Write-Host "Informacje o użytkownikach zostały zebrane."
9. Skrypt do tworzenia kopii zapasowej folderu
Ten skrypt tworzy kopię zapasową wskazanego folderu do lokalizacji docelowej. Jest przydatny w przypadku tworzenia zapasowych kopii ważnych plików.
# Ścieżka źródłowa i docelowa
$sourceFolder = "C:\Dane"
$backupFolder = "D:\Backup"
# Tworzenie kopii zapasowej
Copy-Item -Path $sourceFolder -Destination $backupFolder -Recurse -Force
Write-Host "Kopia zapasowa została utworzona."
10. Skrypt do resetowania hasła użytkownika w Active Directory
PowerShell umożliwia łatwe resetowanie haseł użytkowników w Active Directory, co jest często potrzebne w przypadku zapomnianych haseł.
# Zmienna z nazwą użytkownika
$username = "uzytkownik"
# Zmienna z nowym hasłem
$newPassword = ConvertTo-SecureString "NoweHaslo123!" -AsPlainText -Force
# Resetowanie hasła
Set-ADAccountPassword -Identity $username -NewPassword $newPassword -Reset
Write-Host "Hasło dla użytkownika $username zostało zresetowane."
11. Skrypt do wyłączania systemu po określonym czasie
Skrypt ten umożliwia zaplanowanie wyłączenia systemu Windows Server po określonym czasie (np. po godzinie).
# Określenie czasu do wyłączenia w sekundach
$timeToShutdown = 3600 # 1 godzina
# Ustawienie wyłączenia systemu
Shutdown.exe /s /t $timeToShutdown
Write-Host "System zostanie wyłączony za $($timeToShutdown / 60) minut."
12. Skrypt do automatycznego usuwania plików z kosza
Ten skrypt automatycznie opróżnia Kosz na komputerze lub serwerze.
# Opróżnianie kosza
[IO.File]::Delete([IO.Path]::Combine([Environment]::GetFolderPath('RecycleBin'), '.*'))
Write-Host "Kosz został opróżniony."
13. Skrypt do monitorowania i zapisywania obciążenia CPU
Poniższy skrypt monitoruje obciążenie CPU w czasie rzeczywistym i zapisuje dane do pliku logu.
# Monitorowanie obciążenia CPU
while ($true) {
$cpuUsage = Get-WmiObject -Class Win32_Processor | Select-Object LoadPercentage
$timestamp = Get-Date
"$timestamp - CPU Usage: $($cpuUsage.LoadPercentage)%" | Out-File "C:\ścieżka\do\cpu_log.txt" -Append
Start-Sleep -Seconds 10
}
14. Skrypt do tworzenia kopii zapasowej rejestru systemowego
Skrypt umożliwia utworzenie kopii zapasowej kluczowych gałęzi rejestru, co może być przydatne przed wprowadzeniem istotnych zmian w systemie.
# Tworzenie kopii zapasowej klucza rejestru
$regKey = "HKCU\Software\Microsoft\Windows\CurrentVersion"
$backupPath = "C:\Backup\registry_backup.reg"
reg export $regKey $backupPath /y
Write-Host "Kopia zapasowa rejestru została utworzona."
15. Skrypt do sprawdzania statusu usług na wielu serwerach
Jeśli zarządzasz wieloma serwerami, ten skrypt pozwoli sprawdzić status usługi na kilku serwerach jednocześnie.
# Lista serwerów
$servers = @("serwer1", "serwer2", "serwer3")
# Sprawdzanie statusu usługi na każdym serwerze
foreach ($server in $servers) {
$serviceStatus = Get-Service -ComputerName $server -Name "wuauserv"
Write-Host "Serwer: $server - Usługa 'Windows Update' Status: $($serviceStatus.Status)"
}
Podsumowanie
Skrypty PowerShell to potężne narzędzie do zarządzania serwerami Windows Server. Dzięki automatyzacji wielu procesów, administratorzy mogą zaoszczędzić czas, poprawić efektywność pracy oraz zminimalizować błędy. Powyższe skrypty to tylko przykłady zastosowania PowerShell w codziennej administracji, ale możliwości tego narzędzia są praktycznie nieograniczone, co czyni go jednym z najważniejszych narzędzi dla każdego administratora Windows Server.