У меня здесь есть шаблон роли (XML-файл), который я создал для настройки нескольких серверов IIS одновременно. Шаблон находится на общем ресурсе UNC, у которого есть доступ на чтение к той же учетной записи пользователя, что и для запуска удаленной PowerShell. Эту учетную запись я также использую для RDP к этим серверам. Если я запускаю Install-WindowsFeature -ConfigurationFilePath \\path\to\RoleTemplate.xml
на любом сервере, все работает нормально. Но выполнение этого в блоке сценария от одного сервера до многих других завершается неудачно с «Доступ к пути запрещен».
Эта команда не поддерживается изнутри ScriptBlock?
Пример сценария
$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...
}
}
Если я просто запускаю команду самостоятельно на этом сервере, используя те же учетные данные, она работает. Однако выполнение одного и того же оператора удаленно приводит к отказу:
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