Ich sah einige Fragen zu etwas ähnlich wie meine, aber ich denke, dass WebAdministration-Modul-Cmdlets ein bisschen mehr Ambiguität in ihnen haben könnte.Wie kann ich Invoke-Befehl erfolgreich auf einem Remote-Server zu Add-WebConfigurationProperty
Was ich versuche zu tun: Führen Sie die folgenden auf einem Remote-Server:
Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location "$FBFolderName/User/$Username" -filter "system.webServer/webdav/authoringRules" -name "."
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location "$FBFolderName/User/$Username" -filter "system.webServer/webdav/authoringRules" -name "." -value @{users="$DomainUser";access='Read,Write,Source';path='*'}
Diese arbeiten völlig in Ordnung, wenn ich sie auf dem Server laufen selbst, und auch völlig in Ordnung arbeiten, wenn ich laufen sie interaktiv ein New-PSSession Erstellen
Wenn ich das folgende Skript nicht interaktiv ausführen, aber die Fehler, die ich scheinen erhalten zu hinweisen, dass die diese Befehle lokal ausgeführt, und nicht auf dem Remote-Server in Frage:
$FBFolderName = "FB Demo"
$Username = "user"
$AllUsersRole = "DOMAIN\GTM All Users"
$DomainUser= 'DOMAIN\' + $Username
$s = New-PSSession -computerName server.domain.local
$finalcommand = Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location "$FBFolderName/User/$Username" -filter "system.webServer/webdav/authoringRules" -name "."
Invoke-Command -Session $s -ScriptBlock { Import-module WebAdministration; $finalcommand }
$finalcommand = Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location "$FBFolderName/User/$Username" -filter "system.webServer/webdav/authoringRules" -name "." -value @{users="$DomainUser" access='Read,Write,Source';path='*'}
Invoke-Command -Session $s -ScriptBlock { $finalcommand }
Remove-PSSession $s
Wenn nicht interaktiv ausgeführt wird, erhalte ich folgende Fehlermeldung:
Remove-WebConfigurationProperty : Filename:
Error: Unrecognized configuration path 'MACHINE/WEBROOT/APPHOST/FB Demo'
At line:1 char:17
+ $finalcommand = Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Remove-WebConfigurationProperty], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.IIs.PowerShell.Provider.RemoveConfigurationPropertyCommand
Dies macht Sinn, dass es eine nicht existierende Sammlung auf dem lokalen Rechner zu finden versucht.
Meine Fragen sind:
- Bin ich etwas falsch zu machen dies ermöglichen remote auszuführen?
- Bevor ich versuchte, diese Methode zu entwickeln, benutzte ich psexec mit appcmd, um das gleiche zu tun, was funktioniert, aber es dauert lange, bis psexec eine Verbindung herstellt.
- Bin ich die falsche Herangehensweise? und gibt es eine bessere Methode, dasselbe auf einem Remote-Server zu tun?
Ausgezeichnet. Danke Moerwald! Ich musste weiter forschen, um alles zum Laufen zu bringen, und die Antwort war eine Kombination aus beiden Vorschlägen. Ich werde die vollständige Lösung als eine Antwort für diejenigen, die mit dem gleichen Problem konfrontiert sind, posten. Danke noch einmal! –