6 Stimmen

Wie führt man appCmd in PowerShell aus, um benutzerdefinierte Header zur Standard-Website hinzuzufügen?

Bitte helfen Sie mir herauszufinden, wie ich die Argumente ordnungsgemäß escapen kann, damit sie funktionieren, wenn ich appcmd innerhalb von Powershell aufrufe.

Mein Skript sieht so aus:

$defaultWebSite = "Default Web Site"
$appCmd = "C:\windows\system32\inetsrv\appcmd.exe"
$addHeaderP3P = "set config ""$defaultWebSite"" -section:system.webServer/httpProtocol /+""customHeaders.[name='P3P',value='policyRef=`\`"/w3c/p3p.xml`\`",CP=`\`"DSP COR NID OUR COM PRE`\`"']`""

Write-Output "Hier ist der Argument-String: " $addHeaderP3P

Write-Output "`nAufruf Ergebnis:"
Invoke-Expression "$appCmd $addHeaderP3P"

Write-Output "`n& Ergebnis:"
& $appCmd --%"$addHeaderP3P"

Die Ausgabe sieht wie folgt aus, wenn Sie innerhalb von powershell_ise ausgeführt wird:

PS C:\Users\robert.bratton> D:\Junk\p3pheader.ps1
Hier ist der Argument-String: 
set config "Default Web Site" -section:system.webServer/httpProtocol /+"customHeaders.[name='P3P',value='policyRef=\"/w3c/p3p.xml\",CP=\"DSP COR NID OUR COM PRE\"']"

Aufruf Ergebnis:
Fehler bei der Verarbeitung der Eingabe: Der Parameter 'COR' muss mit einem / oder - beginnen (HRESULT=80070057).

& Ergebnis:
Fehler bei der Verarbeitung der Eingabe: Der Parameter 'NID' muss mit einem / oder - beginnen (HRESULT=80070057).

Dies funktioniert von der Befehlszeile aus

"C:\windows\system32\inetsrv\appcmd.exe" set config "Default Web Site" -section:system.webServer/httpProtocol /+"customHeaders.[name='P3P',value='policyRef=\"/w3c/p3p.xml\",CP=\"DSP COR NID OUR COM PRE\"']"

Vielen Dank für Ihre Hilfe!

9voto

Keith Hill Punkte 183005

Probieren Sie es so aus:

$env:defaultWebSite = "Standard-Website"
$appCmd = "C:\windows\system32\inetsrv\appcmd.exe"

& $appCmd --% set config "%defaultWebSite%" -section:system.webServer/httpProtocol /+customHeaders.[name='P3P',value='policyRef="/w3c/p3p.xml",CP="DSP COR NID OUR COM PRE"']

Wenn Sie nach dem --% Variablen verwenden, müssen es Umgebungsvariablen sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X