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!