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!

Beispiel: ExportCsv-Ergebnis


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.