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

Citrix Long-Term Service Release 2402, jetzt mit CU1 Bug-Fix

In diesem Blog erfahren Sie, welche Mehrwerte das Citrix LTSR 2402 mitbringt und welcher Bug mit CU1 gefixt wurde.
Weiterlesen
Blogbeitrag

Änderungen bei der Lizenzüberwachung und Telemetrie von NetScaler und NetScaler-Console

Im letzten Jahr hat die Cloud Software Group im Bereich von Citrix die Erfassung von Telemetriedaten eingeführt. Ähnliches folgt nun auch im Bereich der NetScaler. Wär erklären, was jetzt zu tun ist!
Weiterlesen
Webinar

Webinar: Muss es denn immer gleich KI sein?

Kostenloses Webinar für IT-Entscheider*innen: Steigerung der Effizienz, Produktivität und Mitarbeiterzufriedenheit, im Spannungsfeld zwischen New Work, KI und Prozessautomatisierung.
Weiterlesen
Blogbeitrag

Wie Sie mit einem geregelten Prozess für Evergreening die Vorteile von Microsoft 365 optimal nutzen können

Wir zeigen, wie Sie mit Evergrenning Änderungen in Microsoft 365 optimal für Ihr Unternehmen nutzen können.
Weiterlesen
Blogbeitrag

Datenexfiltration in M365 mit Entra ID Conditional Access blockieren

In diesem Artikel taucht unser Experte in die Funktionen aus Conditional Access ein: “app enforced restrictions” und „Conditional Access App Control“ (CAAC).
Weiterlesen
Blogbeitrag

Startschuss für eine neue Geschäftsführung

Wir erweitern die Geschäftsführung und stellen unser neues Führungstrio vor.
Weiterlesen
Echt Ich

Echt Ich Christian

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

M365 Compliance Whitepaper

In unserem Whitepaper nehmen wir die Bereiche Datenschutz und Compliance unter die Lupe und geben Ihnen wertvolle Handlungsempfehlungen.
Weiterlesen
Blogbeitrag

Microsoft Power Platform – ja oder nein?

Erfahren Sie, wie Sie die Vorteile und Risiken der Microsoft Power Platform abwägen und die beste Lösung für Ihre Anforderungen finden.
Weiterlesen
Blogbeitrag

M365 Compliance Quick-Assessment

Mit unserem Quick Assessment können Sie einige der typischen Fallstricke zu beleuchten im Themenkomplex „Compliance und Datenschutz und M365″.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter