Pipeline-Eingabe zur ausführbaren Datei mit PowerShell

Pipeline-Eingabe zur ausführbaren Datei mit PowerShell

Ich muss den folgenden Befehl in PowerShell ausführen:

%windir%\system32\inetsrv\appcmd add site /in < c:\mywebsite.xml

Ich versuche es folgendermaßen zu machen:

$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"      

[String] $targetFilePath = $restoreFromDirectory + "config.xml"

$AllArgs = @('add', 'site', '/in')

& $appCmd $AllArgs | Get-Content $targetFilePath

Aber das ist offensichtlich falsch, da es mir einen Fehler gibt:

Das Eingabeobjekt kann an keine Parameter für den Befehl gebunden werden, entweder weil der Befehl keine Pipeline-Eingabe akzeptiert oder weil die Eingabe und ihre Eigenschaften mit keinem der Parameter übereinstimmen, die Pipeline-Eingabe akzeptieren.

Bitte helfen Sie mir, was die richtige Alternative zum oben genannten Skript in PowerShell ist.

Antwort1

Die PowerShell-Pipe nimmt die Eingabe auf der linken Seite entgegen und übergibt sie an den Befehl auf der rechten Seite. In diesem Fall übergeben Sie die Ausgabe Ihres Befehls an Get-Content, das keinen Eingabeparameter annimmt.

Ändern Sie Ihre Aufrufzeile so, dass die Eingabe von links nach rechts fließt:

Get-Content $targetFilePath | & $appCmd $AllArgs

Sieh dir das anAntwort auf StackOverflowzum Beispiel.

verwandte Informationen