Einleitung
Hin und wieder kommt es vor, dass ich in einem Projekt eine aktuelle Dokumentation von den verschiedensten Systemen anfertigen muss. Darunter sämtliche MAC-Adressen aller Windows Serversysteme.
Natürlich ist es hierzu nicht notwendig, diese Arbeit manuell durchzuführen und sich auch noch den fehleranfälligen Schreibkram anzutun. Hierzu erstellte ich mir ein kurzes Skript, zur einfachen und schnellen Erfassung aller aktiven Netzwerkschnittstellen mitsamt der einzelnen MAC-Adressen.
Voraussetzungen
- Domänenweite Administrationsrechte, bzw. lokale Adminrechte (Remote System).
- Lokal installierte RSAT- Tools (RSAT-AD-PowerShell) auf ausführendem System.
- PowerShell-Remoting (WinRM) ist auf allen Systemen aktiv gesetzt.
- Remote Systeme netztechnisch verfügbar/erreichbar.
MAC-Adressen auslesen
Erstellt eine Txt-Datei, kopiert den folgenden Code-Inhalt und fügt diesen in Eure Txt-Datei ein. Nun speichert die Txt-Datei lokal als *.ps1 ab. Anschließend führt die zuvor erstellte *.ps1-Datei mit administrativer Berechtigung aus!
Skript-Beispiel:
<# .SYNOPSIS Get all MAC addresses of filtered Windows systems. .DESCRIPTION The script establish a PowerShell-Remoting (WinRM) session to the filtered Windows systems. It read and collect the active Network Adapters only. .COMPONENT Requires Module ActiveDirectory .OUTPUTS yyyy-MM-dd_eth_mac-addresses.csv .NOTES Version: 1.0 Author: André Stuhr Creation Date: 02/09/2021 Purpose: First initial script development #> # Import Active Directory Modules Import-Module ActiveDirectory # Export Informationen $path = "C:\tmp\" $date = Get-Date -Format yyyy-MM-dd $expfn = "eth_mac-addresses.csv" # System specifications $OS = "*201*" $content = Get-ADComputer -Filter {(OperatingSystem -like $OS) -and (Enabled -eq 'True')} # Invoke Query $results = Invoke-Command -ComputerName $content.Name -ScriptBlock ` { Get-NetAdapter | where {$_.Status -eq 'Up'} } # Output filter $results | select ` PSComputerName, ` Name, ` InterfaceDescription, ` MacAddress, ` LinkSpeed | # Export results Export-Csv $("$path" + $date + "_$expfn") -Encoding UTF8 -NoTypeInformation -UseCulture
Das Skript dient ausschließlich dem Beispiel und dieses kann nach belieben angepasst werden. In diesem Beispiel beschränke ich mich auf die Windows Server *201*- Betriebssysteme. Sprich, die Filterung müsst Ihr selbst nach Bedarf anpassen!