phatair
Goto Top

Powershell Filter Parameter - mehrere Werte

Hallo zusammen,

ich habe folgendes Problem.
Ich möchte aus den Netzwerk Adaptern die Info auslesen ob eine IP Adresse gezogen wurde und ob eine bestimmte DNSDomain hinterlegt ist.

Ich kann mit den folgenden Befehlen danach Filtern
Get-WmiObject Win32_NetworkAdapterConfiguration -filter "DNSDomain = '<DOMAIN>'"  
Get-WmiObject Win32_NetworkAdapterConfiguration -filter "ipenabled = 'true'"  

Aber wie kann ich die beiden Filter in einem Befehl vereinen, so das mir nur die Adapter angezeigt werden, die "ipenabled = 'true'" und "DNSDomain = '<DOMAIN'" eingetragen haben?


Get-WmiObject Win32_NetworkAdapterConfiguration -filter "DNSDomain = '<DOMAIN>'" -and "ipenabled = 'true'"  
hat nicht funktioniert.

Vielen Dank schon mal.
Gruß

Content-ID: 7110793869

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

3063370895
Lösung 3063370895 11.05.2023 aktualisiert um 14:06:06 Uhr
Goto Top
Hi,
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true' and DNSDomain = 'domain'"  

das 'and' ist in diesem Fall Teil des WMI-Filters (in WQL), nicht Teil von Powershell.

Info: Get-WMIFilter ist deprecated und kann (in den meisten Fällen) 1 zu 1 durch Get-CimInstance ersetzt werden.

-Thomas
phatair
phatair 11.05.2023 aktualisiert um 14:20:52 Uhr
Goto Top
Hi Thomas,
manchmal ist es so einfach face-smile
Hat wunderbar funktioniert. Danke für die schnelle Hilfe.

Gruß,
Steffen

EDIT: Eein kleines Problem gibt es leider doch noch.
Der Hintergrund ist, dass wir auf einem bestimmten Adapter "Adressen dieser Verbindung in DNS registrieren" aktivieren müssen.

So funktioniert es auch
$networkConfig =  Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true' and DNSDomain = '<DOMAIN>'"  
$networkConfig.SetDynamicDNSRegistration($true,$false)

Wenn ich aber Get-WmiObject durch Get-CimInstance ersetze und das Script laufen lasse, erhalte ich folgende Fehlermeldung:

Fehler beim Aufrufen der Methode, da [Microsoft.Management.Infrastructure.CimInstance] keine Methode mit dem Namen "SetDynamicDNSRegistration" enthält.  
In Zeile:2 Zeichen:1
 $networkConfig.SetDynamicDNSRegistration($true,$false)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (SetDynamicDNSRegistration:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Hat hier noch jemand eine Idee, was ich anpassen muss wenn ich Get-CimInstance verwende?
7010350221
Lösung 7010350221 11.05.2023 aktualisiert um 14:38:58 Uhr
Goto Top
Hi.
Methoden ruft man dort mit Invoke-CimMethod auf
https://learn.microsoft.com/en-us/powershell/module/cimcmdlets/invoke-ci ...
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true' and DNSDomain = 'domain'" | Invoke-CimMethod -MethodName SetDynamicDNSRegistration -Arguments @{FullDNSRegistrationEnabled=$true;DomainDNSRegistrationEnabled=$false}  


Gruß
3063370895
3063370895 11.05.2023 um 15:31:51 Uhr
Goto Top
Zitat von @phatair:

Hi Thomas,
manchmal ist es so einfach face-smile
Hat wunderbar funktioniert. Danke für die schnelle Hilfe.

Bitte auch den/die entsprechenden Beiträge, die dir zur Lösung verholfen hat als Lösung markieren face-smile

-Thomas
phatair
phatair 11.05.2023 um 16:01:57 Uhr
Goto Top
Zitat von @7010350221:

Hi.
Methoden ruft man dort mit Invoke-CimMethod auf
https://learn.microsoft.com/en-us/powershell/module/cimcmdlets/invoke-ci ...
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true' and DNSDomain = 'domain'" | Invoke-CimMethod -MethodName SetDynamicDNSRegistration -Arguments @{FullDNSRegistrationEnabled=$true;DomainDNSRegistrationEnabled=$false}  


Gruß

Das war die Lösung. Danke!

Zitat von @7010350221:

Hi.
Methoden ruft man dort mit Invoke-CimMethod auf
https://learn.microsoft.com/en-us/powershell/module/cimcmdlets/invoke-ci ...
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true' and DNSDomain = 'domain'" | Invoke-CimMethod -MethodName SetDynamicDNSRegistration -Arguments @{FullDNSRegistrationEnabled=$true;DomainDNSRegistrationEnabled=$false}  


Gruß

Hi Thomas, das mache ich. Ich hatte deinen Beitrag schon als "Lösung" markiert und dann hatte ich noch das andere Problem. Muss schauen ob ich 2 Themen als "Lösung" markieren kann.