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

KI Ready Nürtingen

Wir sind dabei und freuen uns auf den spannenden Austausch zur Transformation von IT Workplaces.
Weiterlesen
Blogbeitrag

Supportende für Microsoft Office 2016 und 2019

Unternehmen, die aktuell Office 2016 oder Office 2019 einsetzen, sollten sich auf das bevorstehende Supportende vorbereiten und rechtzeitig die nächsten Schritte einleiten.
Weiterlesen
Blogbeitrag

Supportende für Skype for Business 2015 und 2019

Durch das Supportende für Skype for Business 2015 und 2019 sind Unternehmen Sicherheits- und Compliancerisiken ausgesetzt – Handeln Sie Jetzt um Risiken zu vermeiden.
Weiterlesen
Blogbeitrag

NetScaler: Neues Verhalten bei Pooled-Lizenzablauf 

Seit Version 14.1 Build 38.x führt das Ablaufen einer Pooled Lizenz direkt zur Deaktivierung des NetScalers – ohne Grace Period und mit Risiko von Konfigurationsverlust.
Weiterlesen
Echt Ich

Echt Ich Luisa

In ECHT ICH erfahrt ihr mehr über Luisa, ihren Arbeitsalltag, ihre Hobbys und warum sie bei Provectus „ECHT SIE“ sein kann.
Weiterlesen
Whitepaper

Whitepaper – eDialogPRO

Regulatorische Anforderungen von FinVermV und MiFID II effizient umsetzen und gleichzeitig das Kundenerlebnis verbessern – praxisnahe Lösungen und innovative Ansätze
Weiterlesen
Blogbeitrag

Supportende für Microsoft Exchange 2016 & 2019

Durch das Supportende für Exchange Server 2016 und 2019 sind Unternehmen Sicherheits- und Compliancerisiken ausgesetzt. Unser Experte erklärt, was nun zu tun ist.
Weiterlesen
Blogbeitrag

Citrix: Fehler bei LTSR 2402 Cumulative Update 2 (CU2)

Das LTSR 2402 CU2-Update enthält fehlerhafte Signaturen, die zu Funktionsausfällen und Sicherheitswarnungen führen können. Citrix arbeitet an einer Lösung – erfahren Sie mehr über den Workaround und empfohlene Maßnahmen.
Weiterlesen
Blogbeitrag

Microsoft vollendet die EU Data Boundary

Microsoft hat die EU Data Boundary vollständig umgesetzt, wodurch personenbezogene Daten europäischer Kunden standardmäßig innerhalb der EU gespeichert und verarbeitet werden. Alle Detail erfahren Sie von unserem Experten Danny.
Weiterlesen
Whitepaper

Whitepaper – Der AI Act der EU

Der neue AI Act der EU stellt klare Regeln für den Einsatz von Künstlicher Intelligenz auf. Wir erklären auf was sich Unternehmen, die KI entwickeln oder nutzen, jetzt einstellen müssen.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter