Mai 2018
Autor:in des Beitrags
Maximilian
Team Lead Business Apps and KI
Veröffentlicht am
09.05.2018 von Maximilian
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter
Ermitteln einer IP-Adresse

PowerShell-Funktion

Manchmal sind es die Kleinigkeiten, die einen unnötig viel Zeit kosten, wie das ermitteln einer IP-Adresse in der Powershell.

Wer kennt das nicht? Man ist gerade am Ausarbeiten eines Skripts, hat einen Computernamen, übergeben als Parameter oder aus einer Datei ausgelesen, und benötigt für eine bestimmte Funktion die IP-Adresse der Maschine.
Dazu existieren in der PowerShell vielfältige Möglichkeiten:

  1. Der Klassiker: Ping <Computername>
  2. Die PS-Variante von Ping: Test-Connection -Computername <Computername>
  3. Oder die .NET-Version: [System.Net.DNS]::GetHostAddresses(<Computername>)

Alle Drei liefern das gewünschte Ergebnis und es gibt noch eine ganze Reihe weiterer. Doch für die weitere Verarbeitung im Skript muss man sich überlegen wie man die Daten „abgreift“. Genau diese Überlegung stellte unser Kollege Matthias Braun an und weist uns vorher freundlich darauf hin, sich so wie er eine eigene Sammlung an Snippets anzulegen. Denn es begegnen uns immer wieder dieselben Aufgabenstellungen und wer will das Rad schon permanent neu erfinden?

Function Get-ComputerIPAddress()
   {    <#
        .SYNOPSIS
            Get the IPAddress from the Computer name
        .PARAMETER
           [String] Computer name
        .OUTPUTS
            [String] IPAddress
        .EXAMPLE
            $ComputerName | Get-ComputerIPAddress
            Get-ComputerIPAddress("name12345")
        #>
        [CmdletBinding()]
        [OutputType([String])]
        Param
        (
            [Parameter(Mandatory=$true,
                       ValueFromPipeline=$true,
                       Position=0)]
            [String]
            $ComputerName
        )
        Begin
        {
               $tmp_validate = $null
               $var_IPAddress = $null
        }
        Process{
            try{
                # Preferd command is Resolve-DnsName but only available from PS version 4.
                # So I check if is available
                $tmp_validate = Get-Command Resolve-DnsName -ErrorAction SilentlyContinue
                # $tmp_Validaition is $null when the command Resolve-DnsName is not available
                If($tmp_validate -ne $null){
                    # I'm happy :)
                    $var_IPAddress = Resolve-DnsName -Name $ComputerName -Type A -ErrorAction SilentlyContinue | Select IPAddress
                    return $var_IPAddress.IPAddress
                }
                else{
                     # I'm sad... but we have a alternate solutioTest-Connectionn
                     $var_IPAddress = [System.Net.DNS]::GetHostAddresses($ComputerName) | Where-Object { $_.AddressFamily -eq 'InterNetwork' } |Select-Object -Expand IPAddressToString
                }
                return $var_IPAddress
            }
            catch
            {
              return $var_IPAddress
            }
        }
        End{
            # CleanUp
            Clear-variable $tmp_validate
            Clear-variable $var_IPAddress
       }
   }

Aufruf:

$ComputerName | Get-ComputerIPAddress
Get-ComputerIPAddress(„name12345“)

 

Abfrage der IP-Adresse:

In der Funktion nutzen wir zwei Varianten zum Ermitteln der Adresse. Bevorzugt wird Resolve-DNSName, welches allerdings erst mit PowerShell 4 zum Einsatz kam. Darum prüft das Skript zuerst die PowerShell-Version und sollte es sich um eine frühere handeln, greift es quasi zum Backup und benutzt [System.Net.DNS]::GetHostAddresses()
Die .NET-Klasse zeichnet sich durch die schnelle Abfrage aus und weil sie, anders als die Test-Connection, kein Ping-Resultat ausgibt.
[System.Net.DNS]::GetHostAddresses(<ComputerName>)

 

Schlussbemerkungen:

Mit beiden Varianten ist es auch möglich IPv6-Adressen abzufragen, was aber in den meisten Umgebungen noch nicht nötig ist.
Bei der Weitergabe des Master-Skripts nicht vergessen, dass eine externe Funktion mit eingebunden wurde.

Das könnte dich auch interessieren

Webinar

Webinar – Need for Speed – wie Microsoft 365 Unternehmen in Zugzwang bringt

Für alle Unternehmen, die M365 stabil, sicher und effizient betreiben wollen. Wer souverän mit Changes umgeht, gewinnt Kontrolle und entlastet endlich das Tagesgeschäft. In diesem Webinar zeigen unsere Experten, wie Sie die Update‑Flut proaktiv statt reaktiv managen.
Weiterlesen
Blogbeitrag

Provectus und das IAMCP Business Chapter Azure Infrastruktur

Interview mit Matthias Braun über das IAMCP-Netzwerk, aktuelle Trends in der Azure Infrastruktur und den konkreten Mehrwert für Microsoft-Partner und deren Kunden.
Weiterlesen
Blogbeitrag

Citrix LAS kommt: Warum Sie jetzt handeln müssen 

Die Zeit der klassischen, dateibasierten Citrix-Lizenzierung läuft ab. Citrix hat klar kommuniziert: Am 15. April 2026 ist endgültig Schluss. Ab diesem Zeitpunkt wird ausschließlich noch der Citrix License Activation Service (LAS) unterstützt.
Weiterlesen
Webinar

Webinar – Automatisieren ohne IT-Frust: Microsoft Power Platform sicher betreiben und Potenzial nutzen

In diesem Webinar zeigen unsere Experten anhand praxisnaher Live-Demos, wie Unternehmen mit der Microsoft Power Platform Prozesse effizient automatisieren, externe Tools ersetzen und durch klare Governance sowie ein Center of Excellence einen sicheren und nachhaltigen Betrieb sicherstellen.
Weiterlesen
Blogbeitrag

Cloud Exit Framework: Strategische Souveränität statt Panik-Exit

Strategischer Cloud Exit stärkt digitale Souveränität, Resilienz und Unabhängigkeit. Warum Exit-Fähigkeit mehr ist als Migration und strukturiert geplant werden sollte.
Weiterlesen
Blogbeitrag

Datenklassifizierung als Fundament für KI-Einsatz und Voraussetzung für NIS2, DORA & KRITIS

Datenklassifizierung ist die Basis für sichere, regelkonforme Datenverarbeitung und den sinnvollen Einsatz von KI – auch im Kontext von NIS2, DORA und KRITIS.
Weiterlesen
Webinar

Webinar: Wie smarte Informationsklassifizierung Ihr Unternehmen schützt

Von inkonsistenten Labels zu echter Governance: Dieses Webinar erklärt, wie Informationsklassifizierung Sicherheit stärkt, Risiken senkt und KI sicherer macht.
Weiterlesen
Blogbeitrag

M365 Summit – Rückblick

Der M365 Summit 2025 war ein inspirierender Treffpunkt für alle, die moderne Zusammenarbeit, KI‑gestützte Prozesse und die Zukunft der digitalen Arbeitswelt gestalten.
Weiterlesen
Webinar

Webinar: Cloud unter Kontrolle: Warum Infrastructure as Code jetzt entscheidend ist

Wenn Cloud strategisch zählt, ist Infrastructure as Code der Schlüssel zu echter Kontrolle, Stabilität und Geschwindigkeit.
Weiterlesen
Blogbeitrag

Trainee-Quartals-Update: Zwischenprüfung, Kick-off & Start in die nächste Spezialisierungsphase

Unsere Trainees berichten von den ersten Monaten im Provectus-Traineeprogramm, geben Einblicke in Workshops, Lernphasen und den täglichen Einsatz von KI-Tools und zeigen, wie sie auf ihre Rolle als Junior Professionals vorbereitet werden.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter