svenpaush
Goto Top

Powershell Filtern einer Ausgabe

Hallo, ich übe gerade mit der Powershell und möchte gern meine Ausgabe Filtern.

Ich habe nun diese Befehlskette:

Get-ADUser -filter * | select samaccountname, DistinguishedName, @{n="TSProfilePath";e={([adsi]("LDAP://" + $_.DistinguishedName)).psbase.InvokeGet("terminalservicesprofilepath")}}

Das bringt den Output:
samaccountname DistinguishedName TSProfilePath
----------------- -------------
testuser CN=testuser, OU=test,DC=test,DC=local \\fileserver\profile2\testuser

Hänge ich nun folgendes an die Befehlskette kann ich den Account Namen Filtern
| ?{$_.samaccountname -eq 'testuser' }

Nun würde ich aber gern den terminalservicesprofilepath filtern


| ?{$_.TSProfilePath -eq '\\fileserver\profile\testuser' }

aber das funktioniert hier so nicht.

Kann mir jemand sagen wie der Filter aussehen muss?

Content-ID: 629779

Url: https://administrator.de/forum/powershell-filtern-einer-ausgabe-629779.html

Ausgedruckt am: 26.12.2024 um 10:12 Uhr

146707
146707 09.12.2020 aktualisiert um 10:03:52 Uhr
Goto Top
Der Filter ist so absolut korrekt und funktioniert auch wie vorgesehen! Aber dein Kaffee war heute morgen wohl etwas schwach ...
\\fileserver\profile\testuser
\\fileserver\profile2\testuser
Fällt dir was auf?

Hast du Glück das heute erst Mittwoch ist sonst hätte man dich hier wohl gevierteilt und verspeist 🐟 face-smile.

Gruß p.
svenpaush
svenpaush 09.12.2020 um 10:23:18 Uhr
Goto Top
Warum keine Frage ist zu Dumm um nicht gefragt zu werden.
Ich habe meinen Fehler gesehen und meine Abfragen einmal verglichen.
Für die Powershell ist es ein Unterschied ob etwas in Gänsefüßchen " oder Hochkommatar ' eingeschlossen wird.

Das funktioniert:
Get-ADUser -Filter * | select samaccountname, DistinguishedName, @{n="TSProfilePath";e={([adsi]("LDAP://" + $_.DistinguishedName)).psbase.InvokeGet("terminalservicesprofilepath")}} | ?{$_.TSProfilePath -eq '\\fileserver\profile\testuser'}  

Das nicht.
Get-ADUser -filter * | select samaccountname, DistinguishedName, @{n="TSProfilePath";e={([adsi]("LDAP://" + $_.DistinguishedName)).psbase.InvokeGet("terminalservicesprofilepath")}} | ?{$_.TSProfilePath} -eq "\\fileserver\profile\testuser"  

Den Unterschied habe ich auch nach einem starken Kaffee noch übersehen.

Suche ich Beispiele im Netz finde ich mal Gänsefüße ein anderes mal Hochkomma.
Da werde ich die Doku genauer Studieren müssen.
146707
146707 09.12.2020 aktualisiert um 11:02:45 Uhr
Goto Top
Für die Powershell ist es ein Unterschied ob etwas in Gänsefüßchen " oder Hochkommatar ' eingeschlossen wird.
Das schon, aber nur so das in doppelten Anführungszeichen Variablen und Escape-Sequenzen expandiert werden die du hier aber in deinem Beispiel nicht nutzt ( nur zur Info: Backslashes sind keine Escapesequenzen in der PS)!
Get-ADUser -filter * | select samaccountname, DistinguishedName, @{n="TSProfilePath";e={([adsi]("LDAP://" + $_.DistinguishedName)).psbase.InvokeGet("terminalservicesprofilepath")}} | ?{$_.TSProfilePath} -eq "\\fileserver\profile\testuser"
Der Fehler liegt hier nicht in der Art der Anführungszeichen sondern an einem Syntaxfehler deinerseits genauer gesagt hieran:
?{$_.TSProfilePath} -eq "\\fileserver\profile\testuser"
Du beendest hier das Where Object schon mit der geschweiften Klammer vor dem Vergleich, so muss das natürlich aussehen:
?{$_.TSProfilePath -eq "\\fileserver\profile\testuser"}  
Hattest du ja in der ersten Variante auch richtig gemacht, nur hier eben nicht.

Also ob du hier Hochkommas oder normale Anführungszeichen nutzt ist bei deinem Pfad Jacke wie Hose, das kommt erst ins Spiel wenn du darin Sonderzeichen wie Dollarzeichen und Backticks innerhalb von normalen Anführungszeichen nutzt!

Suche ich Beispiele im Netz finde ich mal Gänsefüße ein anderes mal Hochkomma.
Lässt sich schnell klären:
About Quoting Rules
About Special Characters

Warum keine Frage ist zu Dumm um nicht gefragt zu werden.
Aber in einem Admin-Forum echt peinlich, mal ehrlich, man sollte zumindest vorher nochmal alles selbst penibelst selbst kontrollieren und nicht gleich bei jedem Fizzel ins Forum posten, dann wären solche Posts überflüssig auch im eigenen und im Interesse der Helfer hier die Ihre Zeit opfern.
svenpaush
svenpaush 09.12.2020 um 11:42:04 Uhr
Goto Top
Hatte ich und trotz Brille nicht gesehen. Sorry.
Ich bin jetzt 3 Tage mit der Powershell am testen und nachdem ich auf die 5.1 upgedatet habe funktioniert nun endlich auch etwas.
Was MS da verbrochen hat ist schon ne Nummer für sich.
Hier lässt sich nicht einmal ein Befehl aus der Console raus kopieren wenn er einen Zeilenumbruch hat.
MS bekommt es bis heute nicht hin ein Fenster zu öffnen was sich in der Größe frei verändern lässt etc. etc.

Danke noch mal für den Hinweis.
Im oberen Posting steht es jetzt so übereinander das es sofort sichtbar ist.
146707
146707 09.12.2020 aktualisiert um 14:42:27 Uhr
Goto Top
Zitat von @svenpaush:
Hier lässt sich nicht einmal ein Befehl aus der Console raus kopieren wenn er einen Zeilenumbruch hat.
MS bekommt es bis heute nicht hin ein Fenster zu öffnen was sich in der Größe frei verändern lässt etc. etc.
PS Anfänger ... Geht alles man muss nur ein aktuelles OS benutzen face-wink.
svenpaush
svenpaush 12.12.2020 um 14:26:25 Uhr
Goto Top
Mein aktuelles OS ist seit einem Jahr ein Linux.
Seitdem habe ich viele Probleme einfach nicht mehr.
Meldungen wie "Ihr Windows wird für Sie vorbereitet" ist eins der vielen Dinge die ich bestimmt nicht vermisse.
Beruflich muss ich mich aber mit dem Dreck weiter beschäfftigen.
Meine Befehle die ich benötige habe ich nun zusammen.
Ich habe auch eine Möglichkeit gefunden die Skripte besser zusammen zu fummeln.
Hab vielen Dank für deine Hilfe.
146707
146707 12.12.2020 aktualisiert um 14:31:13 Uhr
Goto Top
Zitat von @svenpaush:

Mein aktuelles OS ist seit einem Jahr ein Linux.
Schön, meins auch schon seit 20 Jahren face-smile.
Seitdem habe ich viele Probleme einfach nicht mehr.
So isses, leider muss man sagen, läuft der Großteil der Masse da draußen einfach nur stumpft den anderen hinterher ohne mal über den Tellerrand zu schauen.
Beruflich muss ich mich aber mit dem Dreck weiter beschäfftigen.
Joa wat mut dat mut.
Meine Befehle die ich benötige habe ich nun zusammen.
Ich habe auch eine Möglichkeit gefunden die Skripte besser zusammen zu fummeln.
Fummeln darfst du Zuhause aber nich bei der Arbeit face-wink.
Hab vielen Dank für deine Hilfe.
Bidde.