
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.