Jump to content

Powershell-Befehl escapen


Recommended Posts

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

 

 

 

Link to post

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) }}"

 

  • Like 3
Link to post
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. 

Link to post

@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

Link to post

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

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...