mendo28
Goto Top

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.

Content-Key: 343893

Url: https://administrator.de/contentid/343893

Printed on: April 24, 2024 at 02:04 o'clock

Mitglied: 133417
133417 Jul 19, 2017 at 14:55:09 (UTC)
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ß
Member: Mendo28
Mendo28 Jul 19, 2017 updated at 15:20:10 (UTC)
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
Mitglied: 133417
Solution 133417 Jul 19, 2017 updated at 15:40:28 (UTC)
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 How can I mark a post as solved? nicht vergessen.

Ciao.