Wie können Sie einen Befehl wie den folgenden in PowerShell auf mehrere Zeilen aufteilen?
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:contentPath="c:\workspace\xxx\master\Build\_PublishedWebsites\xxx.Web" -dest:contentPath="c:\websites\xxx\wwwroot\,computerName=192.168.1.1,username=administrator,password=xxx"
powershell
Asgerhallas
quelle
quelle
Antworten:
Nachlaufender Backtick-Charakter, dh
Leerraum ist wichtig. Das erforderliche Format ist Space`Enter.
quelle
Eine andere Methode für eine sauberere Argumentübergabe wäre das Splattern .
Definieren Sie Ihre Parameter und Werte wie folgt als Hashtabelle:
Rufen Sie dann Ihr Commandlet folgendermaßen auf:
Microsoft Docs: Informationen zum Splattern
TechNet Magazine 2011: Windows PowerShell: Splatting
Sieht so aus, als würde es mit Powershell 2.0 und höher funktionieren
quelle
$params.add('name','Bob Newhart')
ramblingcookiemonster.wordpress.com/2014/12/01/…Ah, und wenn Sie eine sehr lange Zeichenfolge haben, die Sie auflösen möchten, z. B. HTML, können Sie dies tun, indem Sie
@
auf jeder Seite des Äußeren ein Zeichen setzen"
- wie folgt:Sie erhalten genau das:
Und wenn Sie Notepad ++ verwenden , wird es sogar korrekt als Zeichenfolgenblock hervorgehoben.
Wenn Sie möchten, dass diese Zeichenfolge auch doppelte Anführungszeichen enthält, fügen Sie sie einfach wie folgt hinzu:
Sie würden genau das bekommen:
Wenn Sie jedoch in diesem @ -String doppelte Anführungszeichen verwenden, erkennt Notepad ++ dies nicht und schaltet die Syntaxfarbe so aus, als ob sie nicht in Anführungszeichen oder Anführungszeichen gesetzt wäre, je nach Fall.
Und was besser ist, ist Folgendes: Wo immer Sie eine $ -Variable einfügen, wird sie interpretiert! (Wenn Sie das Dollarzeichen im Text benötigen, schließen Sie es mit einem Häkchen wie dem folgenden an: `` $ not-a-variable`.)
BEACHTEN! Wenn Sie nicht die endgültige setzen Sie
"@
bei dem Anfang der Zeile , wird es scheitern. Ich brauchte eine Stunde, um herauszufinden, dass ich das in meinem Code nicht einrücken konnte!Hier ist MSDN zu diesem Thema: Verwenden von Windows PowerShell "Here-Strings"
quelle
Sie können den Backtick-Operator verwenden:
Das ist für meinen Geschmack immer noch etwas zu lang, daher würde ich einige gut benannte Variablen verwenden:
quelle
Wenn Sie eine Funktion haben:
Wenn Sie ein Cmdlet haben :
Wenn Sie eine Bewerbung haben:
Oder
quelle
In PowerShell 5 und PowerShell 5 ISE ist es auch möglich, nur Shift+ Enterfür die mehrzeilige Bearbeitung zu verwenden (anstelle von Standard-Backticks
`
am Ende jeder Zeile):quelle
Splat-Methode mit Berechnungen
Wenn Sie die Splat-Methode wählen, achten Sie auf Berechnungen, die mit anderen Parametern durchgeführt werden. In der Praxis muss ich manchmal zuerst Variablen setzen und dann die Hash-Tabelle erstellen. Außerdem erfordert das Format keine einfachen Anführungszeichen um den Schlüsselwert oder das Semikolon (wie oben erwähnt).
Hinweis: Das Dateiarray enthält Informationen, die sich darauf auswirken, wie die Tabelle gefüllt wird.
quelle
Eine andere Möglichkeit, eine Zeichenfolge über mehrere Zeilen hinweg zu unterbrechen, besteht darin, einen leeren Ausdruck in die Mitte der Zeichenfolge zu setzen und ihn über Zeilen hinweg aufzuteilen:
Beispielzeichenfolge:
"stackoverflow stackoverflow stackoverflow stackoverflow stackoverflow"
über Linien gebrochen:
quelle