Skrypty PowerShell do zarządzania systemem Windows Server , part4
Windows Server

Skrypty PowerShell do zarządzania systemem Windows Server , part4

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."
}
Skrypty PowerShell do zarządzania systemem Windows Server , part4
Skrypty PowerShell do zarządzania systemem Windows Server , part4

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 "Kopiazapasowa 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.

Czytaj  Implementacja BitLocker Drive Encryption na woluminach Windows Server: najlepsze praktyki
Polecane wpisy
Tworzenie własnych modułów PowerShell: Jak tworzyć własne polecenia i funkcje PowerShell?
Tworzenie własnych modułów PowerShell: Jak tworzyć własne polecenia i funkcje PowerShell?

Tworzenie własnych modułów PowerShell: Jak tworzyć własne polecenia i funkcje PowerShell? PowerShell to jedno z najbardziej potężnych narzędzi do automatyzacji, Czytaj dalej

Ataki na Active Directory: Powielanie bazy ntds.dit i kradzież tożsamości domeny
Ataki na Active Directory: Powielanie bazy ntds.dit i kradzież tożsamości domeny

🧬 Ataki na Active Directory: Powielanie bazy ntds.dit i kradzież tożsamości domeny 📚 Czym jest plik ntds.dit? ntds.dit to krytyczny 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.