J'ai vu quelques questions concernant quelque chose de similaire au mien, mais je pense que les cmdlets de module WebAdministration pourraient avoir un peu plus d'ambiguïté en eux.Comment puis-je invoke-command avec succès sur un serveur distant à Add-WebConfigurationProperty
Ce que je suis en train de faire: Exécutez les opérations suivantes sur un serveur distant:
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='*'}
Ceux-ci fonctionnent parfaitement bien quand je les exécuter sur le serveur lui-même, et fonctionne aussi parfaitement bien quand je Exécutez-les de manière interactive en créant un nouveau-PSSession
Lorsque j'exécute le script suivant de manière non interactive, cependant, l'erreur que je reçois semble indiquer que ces instructions s'exécutent localement, et non sur le serveur distant en question:
$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
Lors de l'exécution non interactive, je reçois l'erreur suivante:
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
Cela est logique en ce qu'il essaie de trouver une collection inexistante sur la machine locale.
Mes questions sont les suivantes:
- que je fais quelque chose de mal à permettre que cela fonctionne à distance?
- Avant d'essayer de développer cette méthode, j'utilisais psexec avec appcmd pour faire la même chose, ce qui fonctionne, mais psexec prend beaucoup de temps pour établir la connexion.
- Est-ce que je prends la mauvaise approche? et existe-t-il une meilleure méthode pour faire de même sur un serveur distant?
Excellent. Merci Moerwald! J'ai dû faire d'autres recherches pour que tout fonctionne, et la réponse était une combinaison de vos deux suggestions. Je vais poster la solution complète comme une réponse pour ceux qui pourraient être confrontés au même problème. Merci encore! –