Я пытаюсь использовать PowerShell DSC для копирования содержимого папки из общего сетевого ресурса. Вот код:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
Это не работает, однако - когда я запускаю его, я получаю следующее сообщение об ошибке:
The related file/directory is: \\Server\SomeShare\SomeFolder.
The path cannot point to the root directory or to the root of a net share.
SourcePath must be specified if you want to configure the destination directory recursively. Make sure that SourcePath is a directory and that it is accessible.
+ CategoryInfo : InvalidArgument: (:) [], CimException
+ FullyQualifiedErrorId : MI RESULT 4
+ PSComputerName : localhost
The SendConfigurationApply function did not succeed.
+ CategoryInfo : InvalidArgument: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 4
+ PSComputerName : localhost
Я получаю аналогичные результаты при попытке установить пакет из общей сетевой папки или извлечь архив из общей сетевой папки. Я использую PowerShell 4 на Windows Server 2008 R2 SP1.
Есть ли способ использовать PowerShell DSC с сетевыми ресурсами?
windows
powershell
network-share
dsc
Ричард
источник
источник
Ответы:
Диспетчер локальной конфигурации DSC работает как локальная учетная запись SYSTEM, а не как учетная запись пользователя. Поэтому он не сможет получить доступ к сетевым ресурсам, если ему не предоставлены явные разрешения.
Есть две возможные ситуации. Либо общий ресурс находится на том же компьютере, к которому применяется конфигурация DSC (назовем этот компьютер A), либо общий ресурс находится на другом компьютере (назовем этот компьютер B).
Если общий ресурс находится на компьютере A, разрешения на чтение должны быть предоставлены пользователю SYSTEM. Например:
Если общий ресурс находится на компьютере B, необходимо предоставить разрешения на чтение учетной записи компьютера на компьютере A. Например:
Источник: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
источник
В
DSC
пробеги наlocalhost
для того , чтобы применить конфигурацию. Это означает, чтоDSC
файлы ресурсов должны быть распределены на каждую машину, через которую необходимо выполнить настройкуDSC
.Поэтому управление копиями имеет решающее значение при копировании файлов DSC из общего ресурса.
DSC
запускается подNT AUTHORITY\SYSTEM
учетной записью и, еслиCredential
атрибут не был установлен,Computer account
используется при извлечении файлов из общего сетевого ресурса.Поэтому и в зависимости от того, откуда файлы извлекаются,
SYSTEM
учетной записи должны быть предоставленыread
разрешения для локального общего ресурса иComputer account
должны быть предоставленыread
разрешения для удаленного общего ресурса.Это подробно описано в ответе Ричардса, который расширяет синтаксис исходного источника блога для этой информации.
источник
Сейчас у меня нет времени на дальнейшее изучение этого вопроса, но похоже, что можно безопасно передавать учетные данные для использования Local Configuration Manager. Фактически, в публикации блога его пример использует ресурс File для извлечения файлов из общего сетевого ресурса. Я надеюсь попробовать это в ближайшее время, а затем вернуться, чтобы лучше конкретизировать этот ответ.
Блог TechNet. Хотите защитить учетные данные в конфигурации Windows PowerShell Desired State? - Трэвис Планк
источник
Powershell почти такой же тупой, как старая оболочка cmd. У него все еще очень ограниченная поддержка путей UNC. Имея это в виду ... Вы пытались навязать путь UNC? т.е.
А затем обратитесь к пути как
UNCPath:\SomeFolder
. Очистить,Remove-PSDrive
когда вы закончите.Также иногда вы можете указать
FileSystem::\\Server\SomeShare\SomeFolder
в качестве пути. Я видел случаи, когда это не работает ... но оно того стоит.источник
FileSystem::\\Server\SomeShare\SomeFolder
, безусловно, путьRelative path is not supported