Powershell - Netzwerk der Domain oder nicht? Wie herausfinden
Hi @ All
Schon wieder eine Herausforderung für deren Lösung ich nach Tipps und Hinweisen suche. Wäre dankbar, wenn ich, wie immer, auch dabei eure Unterstützung bekommen würde.
Mein Problem:
Im Unternehmen gibt es unterschiedliche Konfiguration für ONLINE in der Domain, ONLINE via VPN und OFFLINE. Ich kann zwar den Status der einzelnen Adapter abfragen und unterscheiden welcher was ist, diese Methode hinkt aber etwas. Ich hätte gerne eine technisch sauberere Lösung.
Frage:
Wie kann ich feststellen ob das verbundenen Netzwerk das Domain-Netzwerk ist ohne eine Ping auf irgendeinen Server machen zu müssen? Jeder weiß, dass sich diese von Zeit zu Zeit ändern können oder durch einen Standortwechsel andere DNS usw. verfügbar sind.
Hier die Methode wie ich jetzt unterscheide:
Hat jemand eine Idee dazu?
Vielen Dank für die Hilfe!
Grüße, Mayho
Schon wieder eine Herausforderung für deren Lösung ich nach Tipps und Hinweisen suche. Wäre dankbar, wenn ich, wie immer, auch dabei eure Unterstützung bekommen würde.
Mein Problem:
Im Unternehmen gibt es unterschiedliche Konfiguration für ONLINE in der Domain, ONLINE via VPN und OFFLINE. Ich kann zwar den Status der einzelnen Adapter abfragen und unterscheiden welcher was ist, diese Methode hinkt aber etwas. Ich hätte gerne eine technisch sauberere Lösung.
Frage:
Wie kann ich feststellen ob das verbundenen Netzwerk das Domain-Netzwerk ist ohne eine Ping auf irgendeinen Server machen zu müssen? Jeder weiß, dass sich diese von Zeit zu Zeit ändern können oder durch einen Standortwechsel andere DNS usw. verfügbar sind.
Hier die Methode wie ich jetzt unterscheide:
Function GetOnlineStatus{
Logging -Message "Prüfe Online-Status..." -LogType Info
$adapters = (Get-NetAdapter | where {$_.Status -eq 'up'})
$isUp = @()
foreach ($ad in $adapters)
{
$isUp += $ad | Select-Object InterfaceType, MediaType, [a-z]*MediaType, InterfaceDescription
}
$VPN = $isUp | Where-Object {$_.InterfaceType -eq '6' -and $_.InterfaceType -ne '71' -and `
([regex]::Match($_.InterfaceDescription, 'cisco', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success) -and `
([regex]::Match($_.MediaType, '802.3', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success)}
$LAN = $isUp | Where-Object {$_.InterfaceType -eq '6' -and $_.InterfaceType -ne '71' -and `
(![regex]::Match($_.InterfaceDescription, 'cisco', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success) -and `
([regex]::Match($_.MediaType, '802.3', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success)}
$WLAN = $isUp | Where-Object {$_.InterfaceType -ne '6' -and $_.InterfaceType -eq '71' -and `
(![regex]::Match($_.InterfaceDescription, 'cisco', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success) -and `
([regex]::Match($_.MediaType, '802.11', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase).success)}
$toReturn = 'OFFLINE'
if($LAN -ne $null )
{
Logging -Message "Online-Status: Online via LAN `n`n Adapterdertails:`n $LAN" -LogType Info
$toReturn = 'ONLINE'
}
elseif($WLAN -ne $null -and $VPN -ne $null)
{
Logging -Message "Online-Status: Online via WLAN `n`n Adapterdertails:`n $WLAN" -LogType Info
$toReturn = 'ONLINE'
}
elseif($WLAN -ne $null)
{
Logging -Message "Online-Status: Online via WLAN `n`n Adapterdertails:`n $WLAN" -LogType Info
$toReturn = 'ONLINE'
}
if($toReturn = 'ONLINE')
{
Logging -Message "Prüfe Verfügbarkeit des Servers..." -LogType Info
if( (Test-Connection -ComputerName $targetServer -Quiet) -eq $false )
{
Logging -Message "Server konnte nicht erreicht werden!!" -LogType Info
Logging -Message "OFFLINE- Einrichtung wird begonnen!!" -LogType Info
$toReturn = 'OFFLINE'
}
}
return $toReturn
}
Vielen Dank für die Hilfe!
Grüße, Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 444239
Url: https://administrator.de/forum/powershell-netzwerk-der-domain-oder-nicht-wie-herausfinden-444239.html
Ausgedruckt am: 03.04.2025 um 05:04 Uhr
4 Kommentare
Neuester Kommentar
hi
also ganz stumpf: wenn du den FQDN deiner Firma anpingst, dann weisst du ob du deine Domäne erreichst. Da interessiert der Server dahinter erst mal nicht.
Unterscheiden, ob VPN oder internes LAN geht damit zwar nicht, aber du kannst das ja erweitern um die Abfrage, ob der IP Bereich der VPN IPs verwendet wird oder ähnliches.
Ansonsten:
LAN: "Probing-Host" verwenden. Einfach einen Host im Netz haben die nur von innerhalb des Netzes erreichbar ist. z.B "probe.domain.de". Wenn diese aufgelöst und erreicht werden kann, dann bist du im LAN. Muss natürlich in der Firewall entsprechend abgeschirmt sein, so das da auch keine VPN Client ran kommen
VPN erkennen: Kommt ganz drauf an wie deine VPN aufgebaut wird. idR wirst du die Software um einen Status abfragen können ob sie denn verbunden ist.
Offline: alle Netzwerkadapter prüfen, ob sie Verbunden sind oder nicht. Sobald einer verbunden ist, musst du eigentlich von Online ausgehen, da alle anderen Tests nicht wirklich zuverlässig sind. Webseite aufrufen, Pingen usw ist alles abhängig von den Firewalleinstellungen des entsprechenden Netzwerks.
also ganz stumpf: wenn du den FQDN deiner Firma anpingst, dann weisst du ob du deine Domäne erreichst. Da interessiert der Server dahinter erst mal nicht.
Unterscheiden, ob VPN oder internes LAN geht damit zwar nicht, aber du kannst das ja erweitern um die Abfrage, ob der IP Bereich der VPN IPs verwendet wird oder ähnliches.
Ansonsten:
LAN: "Probing-Host" verwenden. Einfach einen Host im Netz haben die nur von innerhalb des Netzes erreichbar ist. z.B "probe.domain.de". Wenn diese aufgelöst und erreicht werden kann, dann bist du im LAN. Muss natürlich in der Firewall entsprechend abgeschirmt sein, so das da auch keine VPN Client ran kommen
VPN erkennen: Kommt ganz drauf an wie deine VPN aufgebaut wird. idR wirst du die Software um einen Status abfragen können ob sie denn verbunden ist.
Offline: alle Netzwerkadapter prüfen, ob sie Verbunden sind oder nicht. Sobald einer verbunden ist, musst du eigentlich von Online ausgehen, da alle anderen Tests nicht wirklich zuverlässig sind. Webseite aufrufen, Pingen usw ist alles abhängig von den Firewalleinstellungen des entsprechenden Netzwerks.
Man könnte auch nach verteilten Einstellung in den Adaptern suchen, bspw. nach "DNSDomain" mit
Edit: Oder einfach nach dem Default Gateway - oder einer Kombination daraus.
VG
T
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property DNSDomain
Edit: Oder einfach nach dem Default Gateway - oder einer Kombination daraus.
VG
T

Wie kann ich feststellen ob das verbundenen Netzwerk das Domain-Netzwerk ist
Get-NetConnectionProfile | ?{$_.NetworkCategory -eq 'DomainAuthenticated'}