mendo28

Powershell IP und Hostname auslesen

Guten Tag zusammen,

Ich habe zwei Fragen welche um die Auslesung von IP Adressen handeln:

1 Frage: IP & Hostname auslesen und in Listbox ausgeben:

Bei mir werden die IP und der Hostname angezeigt. (Jedoch wird bei manchen Notebooks nichts angezeigt wenn, nur einer der 2 Netzwerkadapter aktiv ist)--> WLAN & LAN

Habt ihr eine idee wie man es konstant so einstellen kann das sicherlich der Hostname und die IP des jeweiligen aktiven Netzwerkadapter angezeigt wird?

Befehl:
$ipaddress = $(ipconfig | where { $_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])
$localIpAddress = ((ipconfig | findstr [0-9].\.)).Split()[-1]

$ipandhostname = Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | select $env:ComputerName, $localIpAddress, $ipaddress
$listBox_ip.DataSource = $ipandhostname;


Frage 2: Gibt es eine Möglichkeit um die IP Adresse auszulesen und die ersten 3 Okttes + eine festgesetzte zahl (z.B ip XXX.XXX.XXX.3) für das aufrufen von einem Server auf dem Windows Explorer zu benutzen?

Dabei sollte die vorhandene IP verwendet werden und pro Standort wird dann der jeweilige Server geöffnet.

Vielen Dank.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 343893

Url: https://administrator.de/forum/powershell-ip-und-hostname-auslesen-343893.html

Ausgedruckt am: 09.05.2025 um 06:05 Uhr

133417
133417 19.07.2017 um 16:55:09 Uhr
Goto Top
gwmi win32_NetworkadapterConfiguration -Filter "IPEnabled=True" | ?{$_.DefaultIPGateway -ne $null} | select IPAddress,@{n='Hostname';e={$env:Computername}}  
Frage 2: Gibt es eine Möglichkeit um die IP Adresse auszulesen und die ersten 3 Okttes + eine festgesetzte zahl (z.B ip XXX.XXX.XXX.3) für das aufrufen von einem Server auf dem Windows Explorer zu benutzen?
$data = gwmi win32_NetworkadapterConfiguration -Filter "IPEnabled=True" | ?{$_.DefaultIPGateway -ne $null} | select IPAddress,@{n='Hostname';e={$env:Computername}}  
start "\\$(($data.IPAddress | select -First 1) -replace '^(.*)\.(\d+)$')','$1.3')\freigabe"  
Gruß
Mendo28
Mendo28 19.07.2017 aktualisiert um 17:20:10 Uhr
Goto Top
Es wird leider keine IP in der Listbox angezeigt. (Siehe Bild)

Müsste man hier noch etwas anpassen?

Beim 2ten Befehl erhalte ich eine Fehlermeldung:

ERROR: Start-Process : Dieser Befehl kann aufgrund des folgenden Fehlers nicht ausgeführt werden: Der Netzwerkpfad wurde nicht gefunden.
ERROR: Bei C:\Users\LyonAD\Desktop\Tool\ITool.ps1:134 Zeichen:8
ERROR: + start <<<< "\\$(($data.IPAddress | select -First 1) -replace '^(.*)\.(\d+)$')','$1.3')"
ERROR: + CategoryInfo : InvalidOperation: (face-smile [Start-Process], InvalidOperationException
ERROR: + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
ERROR:

Wenn ich am Ende nur den Server XX.X.XXX.2 aufrufen möchte, müsste ich noch etwas anpassen?

Vielen Dank für die schnelle Antwort.

Gruss
fehler
133417
Lösung 133417 19.07.2017 aktualisiert um 17:40:28 Uhr
Goto Top
Zitat von @Mendo28:

Es wird leider keine IP in der Listbox angezeigt. (Siehe Bild)
Logisch wenn du das als DataSource verwendest, geht das so nur bei einem DataGridView
Bei einer Listbox mach mit einer Schleife ein einfaches Array draus.
gwmi win32_NetworkadapterConfiguration -Filter "IPEnabled=True" | ?{$_.DefaultIPGateway -ne $null} | %{$_.IPAddress;$env:Computername}  

Beispiel mit einem DataGridView:
function GenerateForm {

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null  
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$dgv = New-Object System.Windows.Forms.DataGridView
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

$handler_form1_Load= 
{
    $data = gwmi win32_NetworkadapterConfiguration -Filter "IPEnabled=True" | ?{$_.DefaultIPGateway -ne $null} | select @{n='IP-Adressen';e={$_.IpAddress -join ","}},@{n='Hostname';e={$env:Computername}}  
    $list = New-Object System.Collections.ArrayList
    $list.AddRange(@($data))
    $dgv.DataSource = $list
}

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
	$form1.WindowState = $InitialFormWindowState
}

#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 178
$System_Drawing_Size.Width = 261
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"  
$form1.Text = "DataGridView Demo"  
$form1.add_Load($handler_form1_Load)

$dgv.Anchor = 15
$dgv.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$dgv.Location = $System_Drawing_Point
$dgv.Name = "dgv"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 150
$System_Drawing_Size.Width = 240
$dgv.Size = $System_Drawing_Size
$dgv.TabIndex = 0

$form1.Controls.Add($dgv)


#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm
Wenn ich am Ende nur den Server XX.X.XXX.2 aufrufen möchte, müsste ich noch etwas anpassen?
Logisch, was ist wohl das ,'$1.3' face-wink?!

Wenns das dann war Wie kann ich einen Beitrag als gelöst markieren? nicht vergessen.

Ciao.