网络共享中的PowerShell DSC副本


17

我正在尝试使用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

当尝试从网络共享中安装软件包或从网络共享中提取档案时,我得到类似的结果。我在Windows Server 2008 R2 SP1上运行PowerShell 4。

是否可以将PowerShell DSC与网络共享一起使用?


该链接中没有描述解决方案吗?powershellmagazine.com/2013/09/02/...
ErikE

感谢您指出正确的方向。由于共享位于同一台计算机上,因此并不能完全解决问题,因此我不得不向SYSTEM帐户授予权限。如果您想在指向该链接时给出答案,我将奖励您。
理查德

Answers:


14

DSC本地配置管理器作为本地SYSTEM帐户而不是您的用户帐户运行。因此,除非获得明确的许可,否则它将无法访问网络资源。

有两种可能的情况。共享位于与要应用DSC配置的同一台计算机上(称为此计算机A),或者共享位于其他计算机上(称为此计算机B)。

如果共享在计算机A上,则需要将SYSTEM用户授予READ权限。例如:

net share SomeShare=C:\SomeShare /GRANT:"NT AUTHORITY\SYSTEM",READ

如果共享在计算机B上,则需要将读取权限授予计算机A的计算机帐户。例如:

net share SomeShare=C:\SomeShare /GRANT:DOMAIN\MachineA$,READ

资料来源:http : //www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/


5

DSC上运行localhost,以应用配置。这意味着DSC需要将资源文件分发到要通过配置的每台机器DSC

因此,从共享复制DSC文件时,权限管理至关重要。

DSCNT AUTHORITY\SYSTEM帐户下运行,除非Credential已设置该属性,否则Computer account从网络共享中提取文件时将使用。

因此,根据从何处提取文件,SYSTEM需要为该帐户授予read本地共享权限,并Computer account需要为该read远程共享授予权限。

在Richards答案中对此进行了详细的详细说明,该答案在原始Blog来源上针对此信息扩展了语法上明智之处



-2

Powershell几乎和旧的cmd shell一样愚蠢。它对UNC路径的支持仍然非常有限。考虑到这一点...您是否尝试过别名UNC路径?即

New-PSDrive -Name UNCPath -PSProvider FileSystem -Root \\Server\SomeShare\

然后将路径称为UNCPath:\SomeFolderRemove-PSDrive完成后进行清理。

另外,有时您可以指定FileSystem::\\Server\SomeShare\SomeFolder作为路径。我见过这种情况不起作用的情况,但是值得一试。


在这种情况下(配置数据)FileSystem::\\Server\SomeShare\SomeFolder绝对是必经之路
Mathias R. Jessen

2
谢谢您的建议,但不幸的是,使用其中任何一个我都收到错误消息Relative path is not supported
Richard Richard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.