我有一台机器,需要从网络共享(在域上)复制文件,以便从域外的机器进行部署。
目前我有以下代码;
配置 deployWebsite { 参数 ( [string[]] $MachineName =“localhost” ) 节点 $MachineName { 文件测试 { SourcePath = “\\buildserver\mywebsite” 目标路径 = “C:\deployments” 递归 = $true 类型 = “目录” } } } deployWebsite-MachineName“at-test-2012”
我运行这个并且能够生成一个很好的 MOF 文件。
我收到的错误如下;
PS C:\dsc> Start-DscConfiguration -Path .\deployWebsite -CimSession $sess -Wait -Verbose -Force 详细:使用以下参数执行操作“调用 CimMethod”,“methodName”= SendConfigurationApply,“className”= MSFT_DSCLocalConfigurationManager,“namespaceName”= root/Microsof t/Windows/DesiredStateConfiguration'。 详细:来自计算机 AT-TEST-2012 的 LCM 方法调用,用户 sid 为 S-1-5-21-77344112-180879520-4075690869-1002。 详细:[AT-TEST-2012]:LCM:[开始设置] 详细:[AT-TEST-2012]:LCM:[启动资源] [[文件]测试] 详细:[AT-TEST-2012]:LCM:[开始测试] [[文件]测试] 详细:[AT-TEST-2012]:[[文件]测试] 访问被拒绝。 详细:[AT-TEST-2012]:[[文件]测试]相关文件/目录是:\\buildserver\mywebsite。 详细:[AT-TEST-2012]:[[文件]测试] 路径不能指向根目录或网络共享的根目录。 详细:[AT-TEST-2012]:[[文件]测试]相关文件/目录是:\\buildserver\mywebsite。 VERBOSE:[AT-TEST-2012]:如果要以递归方式配置目标目录,则必须指定 [[File]Test] SourcePath。请确保 SourcePath 是 di 牧师住宅,并且可进入。 如果要递归配置目标目录,则必须指定 SourcePath。请确保 SourcePath 是一个目录并且可以访问。 + 类别信息:无效参数:(:) [],CimException + FullyQualifiedErrorId : MI 结果 4 + PSComputerName:at-test-2012 SendConfigurationApply 函数未成功。 + CategoryInfo:无效参数:(root/Microsoft/...gurationManager:String)[],CimException + FullyQualifiedErrorId : MI 结果 4 + PSComputerName:at-test-2012 详细:操作“调用 CimMethod”完成。 详细:完成配置作业所需的时间为 3.979 秒
CIM 会话似乎设置得很好。
PS C:\dsc> 获取-CimSession 编号:1 名称 :CimSession1 实例 ID:7ae9cd9b-fc65-4879-94c1-ec9805479500 计算机名称:at-test-2012 协议:WSMAN
它是用以下代码创建的;
$sess = New-CIMSession-cn at-test-2012-身份验证Credssp-凭据$cred
并且它传递了工作组计算机上的本地管理员用户的凭据,并且该用户是尝试从中提取文件的域计算机上的本地用户。
如果我通过创建 PSSession 并尝试复制文件来尝试另一个测试,那么它可以正常工作,并且我会看到文件出现在工作组计算机上。
$cred = 获取凭据-凭据 deployuser $sess = New-PSSession-cn at-test-2012-身份验证Credssp-凭据$cred 调用命令-会话$sess-ScriptBlock{复制项目-路径'\\buildserver\mywebsite'-目标'C:\deployments'}
问题在于 Start-DscConfiguration 似乎不支持 PSSessions,仅支持 CIMSessions。
那么,接下来该尝试什么,有什么提示吗?我认为我的 CIMsession 设置正确,并且我认为文件共享、工作组计算机上的所有必要设置都正确设置,因为 PSSession 工作正常。
欢呼吧,安迪
答案1
通常我会用以下三种方法之一来解决此类问题:
- 使用显式凭据在远程计算机上创建一个计划任务,以在本地执行 Start-DscConfiguration。它将以本地用户身份运行,以实现远程处理的下一跳。
- 考虑创建并使用 JEA 端点。这更复杂,但可以简化管理远程计算机的持续凭据管理。
- 您可以使用脚本资源之类的东西创建具有明确凭据的到远程共享的映射驱动器
如果您有其他配置可能会对网络产生影响,请谨慎执行远程 Start-DscConfiguration。
例如,通过 JustEnoughAdministration 资源创建前面提到的 JEA 端点可能会重置 WinRM 并过早中断本地和远程 Start-DscConfiguration 调用 -Wait。
计划任务不受配置中的网络影响问题以及其他环境因素导致的简单网络不稳定的影响。最大的技巧是,如果您需要监控配置的稳定性,这是读者的练习(或未来的问题/答案)。