Mam tutaj szablon roli (plik XML), który utworzyłem, aby skonfigurować wiele serwerów IIS jednocześnie. Szablon znajduje się na udziale UNC, który ma dostęp do odczytu do tego samego konta użytkownika, na którym uruchamiam zdalną wersję PowerShell as. Tego konta używam również do RDP na tych serwerach. Jeśli uruchomię Install-WindowsFeature -ConfigurationFilePath \\path\to\RoleTemplate.xml
na dowolnym serwerze, działa dobrze. Ale uruchomienie tego w bloku skryptu z jednego serwera do wielu innych kończy się niepowodzeniem z powodu „Odmowa dostępu do ścieżki”.
Czy to uruchomienie tego polecenia nie jest obsługiwane z poziomu ScriptBlock?
Przykład skryptu
$servers = "abc123 abc456 abc789";
ForEach ($server in ([regex]::matches($servers, "abc\d+") | %{$_.value})){
Invoke-Command -ComputerName $server -ArgumentList {param($server)} -ScriptBlock {
# IIS Role Setup
Install-WindowsFeature -ConfigurationFilePath \\path\to\RoleTemplate.xml
# Other irrelevant commands...
}
}
Jeśli po prostu uruchomię polecenie samodzielnie na tym serwerze, używając tych samych poświadczeń, zadziała. Jednak zdalne uruchomienie tej samej instrukcji powoduje:
Access to the path '\\path\to\RoleTemplate.xml' is denied.
+ CategoryInfo : InvalidArgument: (\\path\to\...oleTemplate.xml:String) [Install-WindowsFeature], CmdletInvocationException
+ FullyQualifiedErrorId : Install_WindowsFeature_ConfigurationFile_Import_Exception,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand
+ PSComputerName : abc123