Laden...

C# + Powershell => "SELECT not recognized", "Pipe"-Symbol in Command

Erstellt von iced-t89 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.828 Views
I
iced-t89 Themenstarter:in
279 Beiträge seit 2008
vor 12 Jahren
C# + Powershell => "SELECT not recognized", "Pipe"-Symbol in Command

HeyHo,

ich habe folgendes Problem mit der Ausführung eines Powershell Commands mittels C#.

Folgendes Statement wird bei einem Aufruf mittels

ICollection<PSObject> result = this.powershell.Invoke();
var psCommand = "Get-MailboxStatistics -Identity '{0}\\{1}' | SELECT TotalItemSize"

terminiert. Dies geschieht immer mit der Meldung das er das SELECT-Statement nicht erkannt hat. Dieses Problem bestand schonmal vor ein paar Monaten als ein Kollege mit Powershell-Commands gearbeitet hat welche dieses Pipe-Char beinhalten.

Er kann sich leider nicht mehr erinnern wie er das problem gelöst hat 😦.
Zudem lässt sich das Statement ohne Probleme direkt über die Powershell ausführen

Wisst ihr was zu tun ist? Sicher ist aufjedenfall das es an dem Pipe-Char liegt.

F
26 Beiträge seit 2009
vor 12 Jahren

Hallo iced-t89,

hast du mal versucht, dass Pipe Zeichen zu escapen?
Vlt. hilft das ja (ohne es jetzt zu testen).

Gruß

I
iced-t89 Themenstarter:in
279 Beiträge seit 2008
vor 12 Jahren

Hey,

ja ich habe versucht das Pipe-Zeichen zu escapen.

var psCommand = "Get-MailboxStatistics -Identity '{0}\{1}' | SELECT TotalItemSize"

Dies hat aber leider nix am Verhalten geändert.

A
764 Beiträge seit 2007
vor 12 Jahren

Mach doch mal @ for den string anstatt direct zu escapen.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo iced-t89,

"Anstatt" ist vielleicht nicht das richtige Wort. Allerdings ist schon richtig, dass man darauf achten muss, was man überhaupt auf welcher Ebene escapen will. Mit "|" in einem normalen String wird auf C#-Ebene escaped, was aber überhaupt nicht nötig ist und nichts bringt, da "|" sowieso für sich selber steht. Wenn man auf Powershell-Ebene escapen will, muss man schon "\|" schreiben oder eben @"|" (wobei man bei @ darauf achten muss, dass alle im String vorkommenden Backslashes davon betroffen sind).

Ich würde allerdings eher darauf bauen, dass deinem Kollegen noch einfällt, was er damals gemacht hat. Auf jeden Fall solltest du eine Lösung posten, wenn du eine findest.

herbivore