PowerShell DSC文件复制 – 工作组机器

我有一台机器,我需要从networking共享(域上)复制文件,以从域外的机器进行部署。

目前我有以下代码;

configurationdeployWebsite 
 { 
   PARAM 
   (
   [string []] $ MachineName =“localhost”
   )

  节点$ MachineName 
   { 

    文件testing{
       SourcePath =“\\ buildserver \ mywebsite”
       DestinationPath =“C:\ deployments”
      recursion= $ true
       Type =“目录”

     }
   }
 }
 deployWebsite -MachineName“at-test-2012”

我运行这个,我能够生成一个很好的MOF文件。

我得到的错误如下;

 PS C:\ dsc> Start-DscConfiguration -Path。\ deployWebsite -CimSession $ sess -Wait -Verbose -Force
 VERBOSE:使用以下参数执行操作'调用CimMethod',''methodName'= SendConfigurationApply,'className'= MSFT_DSCLocalConfigurationManager,'namespaceName'= root / Microsof
 T /窗/ DesiredStateConfiguration”。
 VERBOSE:用户sid S-1-5-21-77344112-180879520-4075690869-1002从计算机AT-TEST-2012到达的LCM方法呼叫。
 VERBOSE:[AT-TEST-2012]:LCM:[开始设置]
 VERBOSE:[AT-TEST-2012]:LCM:[启动资源] [[文件]testing]
 VERBOSE:[AT-TEST-2012]:LCM:[开始testing] [[文件]testing]
 VERBOSE:[AT-TEST-2012]:[[File] Test]访问被拒绝。
 VERBOSE:[AT-TEST-2012]:[[File] Test]相关的文件/目录是:\\ buildserver \ mywebsite。
 VERBOSE:[AT-TEST-2012]:[[File] Test]path不能指向根目录或networking共享的根目录。
 VERBOSE:[AT-TEST-2012]:[[File] Test]相关的文件/目录是:\\ buildserver \ mywebsite。
 VERBOSE:[AT-TEST-2012]:[[File] Test]如果要recursionconfiguration目标目录,必须指定SourcePath。 确保SourcePath是一个di
教区和它是可访问的。
如果要recursionconfiguration目标目录,则必须指定SourcePath。 确保SourcePath是一个目录,并且它是可访问的。
     + CategoryInfo:InvalidArgument:(:) [],CimException
     +完全合格错误Id:MI结果4
     + PSComputerName:at-test-2012

 SendConfigurationApply函数没有成功。
     + CategoryInfo:InvalidArgument:(root / Microsoft / ... gurationManager:String)[],CimException
     +完全合格错误Id:MI结果4
     + PSComputerName:at-test-2012

 VERBOSE:操作“调用CimMethod”完成。
 VERBOSE:configuration作业完成时间为3.979秒

CIM会议似乎安装的很好。

 PS C:\ dsc> Get-CimSession


 Id:1
名称:CimSession1
 InstanceId:7ae9cd9b-fc65-4879-94c1-ec9805479500
 ComputerName:at-test-2012
协议:WSMAN

它是用下面的代码创build的。

 $ sess = New-CIMSession -cn at-test-2012 -Authentication Credssp -Credential $ cred

它是通过工作组计算机上的本地pipe理员用户的凭证,并且是试图从中提取文件的域计算机上的本地用户。

如果我通过创build一个PSSession尝试另一个testing,并试图复制文件,那么它工作正常,我看到文件出现在工作组机器上。

 $ cred = Get-Credential -Credential部署用户
 $ sess = New-PSSession -cn at-test-2012 -Authentication Credssp -Credential $ cred 

 Invoke-Command -Session $ sess -ScriptBlock {Copy-Item -Path'\\ buildserver \ mywebsite'-Destination'C:\ deployments'}

问题是,Start-DscConfiguration似乎不支持PSSession,只有CIMSessions。

那么,下一步要尝试什么? 我认为我的CIMsession安装正确,我想我有所有必要的设置在文件共享,工作组机器都设置正确的PSSession正常工作。

干杯,安迪

通常我以三种方式之一处理这样的问题:

  1. 使用显式凭证在远程计算机上创build计划任务,以在本地执行Start-DscConfiguration。 它将以本地用户的身份运行,以用于远程处理中的下一个跃点。
  2. 考虑创build和使用JEA端点。 这更复杂一些,但是可以使您简化pipe理远程机器的持续凭证pipe理。
  3. 您可能能够使用类似脚本资源的东西来创build映射驱动器到远程共享

如果您有其他可能影响更改的networking的configuration,请注意做远程Start-DscConfiguration。
例如,通过JustEnoughAdministration资源创build前面提到的JEA端点,可以重置WinRM并提前中断本地和远程的Start-DscConfiguration调用 – 等等。

计划任务不受networking影响configuration内的问题的影响,也不受其他环境因素的影响。 最大的窍门是如果你需要监视configuration的稳定性,这对读者来说是一个练习(或将来的问题/答案)。