guybrush 19 Posted November 17, 2020 Report Posted November 17, 2020 Mahlzeit, ich plage mich nun schon seit einer guten Stunde rum, und es will mir einfach nicht gelingen, folgenden Befehl soweit zu escapen, dass ich ihn per "powershell.exe -command "xxxx" ausführen kann: Get-ChildItem "s:\some\folder\" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-7))} | Select-Object FullName, LastWriteTime, @{Name="GB";Expression={ "{0:N0}" -f ($_.Length / 1GB) }} Das Ganze soll wirklich als Einzeiler aus einer größeren Bestandsbatchdatei heraus erfolgen, ohne eine weitere Datei zu benötigen (Kundenvorgabe). Und egal, wie ichs mache, ich komm auf keinen grünen Zweig. Mehrfachquoten, Grave accent, Backslach und Kombinationen, ich werde hier nicht fündig. Vielleicht kann mir jemand von euch einen Tip geben? Danke Guybrush Quote
tesso 375 Posted November 17, 2020 Report Posted November 17, 2020 Gerade bei mir getestet: powershell -command "Get-ChildItem 'c:\windows' -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-7))} | Select-Object FullName, LastWriteTime, @{Name='GB';Expression={ '{0:N0}' -f ($_.Length / 1GB) }}" 3 Quote
Dukel 460 Posted November 17, 2020 Report Posted November 17, 2020 In eine Datei speichern und mit "Powershell.exe -File" ausführen? Quote
tesso 375 Posted November 17, 2020 Report Posted November 17, 2020 vor 1 Minute schrieb Dukel: Powershell.exe -File Anforderung "keine weitere Datei" Quote
BOfH_666 581 Posted November 17, 2020 Report Posted November 17, 2020 vor 42 Minuten schrieb guybrush: Das Ganze soll wirklich als Einzeiler aus einer größeren Bestandsbatchdatei heraus erfolgen, ohne eine weitere Datei zu benötigen (Kundenvorgabe). ..... Vielleicht kann mir jemand von euch einen Tip geben? Also mein Tipp wäre, sich mit dem Kunden zu unterhalten und zu fragen, warum diese Anforderung gestellt wurde? Eine separate Datei für das Powershell-Mini-Script kann ja auch Vorteile z.B. für die Wartbarkeit und Stabilität haben!! ... und eventuell ist der Grund für die Anforderung bei näherer Betrachtung quasi irrelevant. Quote
guybrush 19 Posted November 17, 2020 Author Report Posted November 17, 2020 @tesso: So einfach wärs gegangen? Einfach Apostroph statt Anführungszeichen? Und ich hab mich schon bis zum Dreifachanführungszeichen durchprobiert :) Vielen lieben Dank!! @BOfH_66: Der Kunde hat hier ein größeres Batchfile (historisch gewachsen), das er dann remote via Batchpatch auf den Zielmaschinen ausführt (wird dann auf die Remotemaschine gepusht und dann ausgeführt, was dann mit zwei Files wieder ungleich schwerer/umständlicher ist). Da wird dann allerhand gecheckt usw, wie es halt ist, und jetzt ist das auch noch dazu gekommen. Ich wollts per PS-Einzeiler machen, weil ich so die sauberste Ausgabe habe und am meisten einfach machen kann. Es wäre vielleicht auch anders gegangen, in dem Fall hats mir dann zur Anforderung auch noch keine Ruhe gelassen, dass das nicht funktionieren wollte :) Und wenn ein Einzeiler das gewünschte Ergebnis erzielt, gibts eigentlich nichts zu meckern :) Auf jeden Fall rennts, ich kann das jetzt abschließen und mit meiner Tochter spazieren gehen. Das allein rechtfertigt schon vieles :) LG und Danke an alle Guybrush Quote
tesso 375 Posted November 17, 2020 Report Posted November 17, 2020 @guybrush Ich hatte das testweise auch noch als "encodedcommand" übergeben. Dann sieht man nicht mehr (auf den ersten Blick) was der Code tut. Quote
guybrush 19 Posted November 17, 2020 Author Report Posted November 17, 2020 Das hab ich auch versucht, habs dann aber aus Gründen der Übersichtlichkeit gelassen. Quote
NilsK 2,972 Posted November 17, 2020 Report Posted November 17, 2020 Moin, Wie manche anderen Sprachen akzeptiert die Powershell sowohl einfache als auch doppelte Anführungszeichen - unter anderem deshalb, weil man bei einer Skriptsprache oft genau solche Bedingungen hat wie du. Ganz so einfach ist es in Detail dann wieder nicht, weil man nur mit doppelten Zeichen eine einfache Ersetzung von Variablen hinbekommt. Das tut der Verwendung wir hier aber selten einen Abbruch. Gruß, Nils Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.