energise
Goto Top

Powershell: Nach AD-Gruppen suchen (Suchbegriff per read-host)

Hallo
ich beschäftige mich seit ein paar Tagen zum ersten Mal mit der Powershell und ollte mir ein paar kleine Helferlein scripten. Allerdings hänge ich schon an einer wahrscheinlich total simplen Hürde.
Wenn ich das unten genannte Beispiel ausführe und meine Variable mit read-host fülle dann kommt am ende gar keine Ausgabe.
cls
write-host ""  
write-host -ForegroundColor Yellow "Suche nach:"  
write-host ""  
$suchbegriff = read-host -prompt "Suchbegriff eingeben"  
Get-ADGroup -Server "blabla.domain.de" -Filter {name -like "*$suchbegriff*"} -Properties * | Select-Object name  

Wenn ich das von Hand, also ohne einlesen der Variable mache, funktioniert das ganze:
Get-ADGroup -Server "blabla.domain.de" -Filter {name -like "*suchebegriff*"} -Properties * | Select-Object name  

Was mache ich falsch ?

Content-Key: 389137

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

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

Member: colinardo
colinardo Oct 11, 2018 updated at 09:45:42 (UTC)
Goto Top
Hallo Energise, willkommen auf Administrator.de!
Die Verwendung von Variablen in der Filter Syntax der Befehle ist oft nicht einheitlich und führt in dieser Variante auch ohne Fehlermeldung zu keinen Ergebnissen.
Siehe dazu folgende Übersicht als Erklärung: Filters with PowerShell Active Directory Module Cmdlets

Für dein Beispiel kannst du den Filter so umschreiben damit du die Variable verwenden kannst:
$suchbegriff = read-host -prompt "Suchbegriff eingeben"   
Get-ADGroup -Server "blabla.domain.de" -Filter "name -like '*$suchbegriff*'" -Properties * | Select-Object name  
Oder eben im Zweifel immer (langsamer) mit einem nachgeschalteten Where-Object.
Get-ADGroup -Server "blabla.domain.de" -Filter * | ?{$_.Name -like "*$suchbegriff*"}  
Oder die Sternchen mit in die Variable schreiben, viele Wege führen nach Rom.

Grüße Uwe
Member: erikro
erikro Oct 11, 2018 at 09:27:22 (UTC)
Goto Top
Moin,

Zitat von @colinardo:
Die Verwendung von Variablen in der Filter Syntax der Befehle ist oft nicht einheitlich und führt in dieser Variante auch ohne Fehlermeldung zu keinen Ergebnissen.
Siehe dazu folgende Übersicht als Erklärung: Filters with PowerShell Active Directory Module Cmdlets

Deshalb mache ich sowas immer so. Damit umgehe ich das Problem:

$suchbegriff = "*" + $(read-host -prompt "Suchbegriff eingeben") + "*"  

Liebe Grüße

Erik