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

Blogbeitrag

STUDIE zur Microsoft 365 Sicherheit 2025: Unternehmen müssen ihre Strategie umdenken 

Die Studie „State of Microsoft 365 Security 2025“ zeigt: Unternehmen unterschätzen ihre Sicherheitsrisiken. Fehlkonfigurationen, fehlende MFA und fehlende Backups machen M365 zur Gefahr. Erfahren Sie, wie Zero Trust, Evergreen und Backup-Strategien Ihre Umgebung wirklich schützen.
Weiterlesen
Blogbeitrag

Microsoft neue hybride Bereitstellungsoptionen für Azure Virtual Desktop auf Ignite 2025

Die neue Option erlaubt es, VM´s als Arc-enabled Servers zu registrieren und als Session-Hosts für Azure Virtual Desktop zu nutzen.
Weiterlesen
Webinar

Webinar am 12.12.: Unternehmens-KI ohne Medienbruch – Wissen sicher und zentral in Microsoft Teams nutzen 

Erfahren Sie im Webinar, wie Sie KI sicher in Microsoft Teams integrieren, Unternehmenswissen zentral bündeln, Medienbrüche vermeiden und eine leistungsfähige Azure-Infrastruktur für moderne KI-Lösungen aufbauen.
Weiterlesen
Webinar

Webinar am 10.12. – Zero Trust: Seit Jahren auf der Agenda, aber nie im Budget

Erfahren Sie im Webinar, warum Zero Trust jetzt höchste Priorität hat. KI erhöht die Risiken, fehlende Sicherheitsarchitektur bremst. So entwickeln Unternehmen ihre Zero-Trust-Strategie weiter.
Weiterlesen
Blogbeitrag

Microsoft Teams erkennt den Bürostandort

Was bedeutet das neue Feature rechtlich? Die Antwort darauf beleuchten wir im Interview mit Wilfried Reiners, Anwalt Für IT-Recht.
Weiterlesen
Webinar

Webinar: Strategiewechsel im VDI-Segment? Citrix & Microsoft im Vergleich

Dieses Kostenlose Webinar richtet sich an IT-Entscheider & App-Virtualisierungs-Verantwortliche, die vor der Entscheidung stehen, ob ein Wechsel zu Microsoft AVD oder Windows 365 sinnvoll ist.
Weiterlesen
Blogbeitrag

Microsoft M365-Kit im Praxistest

Das M365-Kit bietet strukturierte Vorlagen für Datenschutz-Dokumentation, bleibt jedoch stark Microsoft-zentriert und erfordert eigene Prüfungen zu Themen wie Telemetriedaten, Löschfristen und Drittlandtransfers.
Weiterlesen
Echt Ich

Echt Ich Nima

In ECHT ICH erfahrt ihr mehr über Nima, seinen Arbeitsalltag, seine Hobbys und warum er bei Provectus „ECHT ER“ sein kann.
Weiterlesen
Blogbeitrag

deviceTRUST in der Praxis – Kontextbasierte Steuerung der Citrix-Zwischenablage

Erfahren Sie, wie Sie mit deviceTRUST die Citrix-Zwischenablage kontextbasiert steuern und so Datenübertragungen zwischen lokalen Systemen und virtuellen Sitzungen sicher und flexibel gestaltest.
Weiterlesen
Blogbeitrag

IT Leaders in Finance 2026 – Cybervorfall

LIVE TALKS • REAL CYBER INCIDENT • REAL SOLUTIONS Das Event für IT-Entscheider in Finance. Jetzt einen Platz sichern!
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter