Chef不会调用PS脚本的第二行

时间:2016-09-26 08:14:26

标签: powershell chef-recipe

我正在使用Chef Kitchen做一个POC。我们有一个PowerShell脚本进入网络路径,根据日期[安装屏蔽安装程序]对构建进行排序,复制到文件夹中的VM。

当我使用Power Shell手动在VM内部运行时,此脚本可以正常工作。当我使用Chef Kitchen运行时,我没有收到任何错误,配方运行但只有第一行。我可以在VM中看到名为Build的文件夹。

我做了一个实验并添加了第二行来创建另一个文件夹,它工作正常。所以问题是我用来复制和粘贴构建的逻辑似乎不适用于Chef。

第一行创建一个新文件夹,第二行和第三行设置源和目标路径。第四行将构建从网络路径[按日期排序以获取最新]复制到VM。最后一个是重命名。

还有一种有效的方法可以使用Chef将文件从网络路径[按日期排序]复制到VM吗?

powershell_script 'CopyBuild' do
  code <<-EOH
New-Item -ItemType directory -Path C:\Build
$source = gci \\BuildPath\Build | ? { $_.PSIsContainer } | sort CreationTime -Desc | select -f 1
$destination = "C:\Build"
Copy-Item "\\BuildPath\Build\$source\*" $destination
Get-ChildItem $destination -r -i "*app1*.exe" | Rename-Item -NewName {"Test.exe"}
EOH
end

我也试过这个,调用PS脚本:

cookbook_file 'getbuild.ps1' do
  mode '0755'
end

1 个答案:

答案 0 :(得分:0)

这看起来像是一个Windows远程问题,你的powershell需要正确的配置才能访问网络共享。

要验证是否是这种情况:替换UNC路径并只复制本地目录 - 如果这样可以进一步挖掘以设置Windows远程处理的要求,请参阅以下链接以获得进一步的帮助:

  1. Safely running windows automation operations that fail inside winrm or powershell remoting(请参阅“无法访问网络资源”一章)
  2. Knife issue 655
  3. enabling and using credssp
  4. 总结这些链接:您可以在PS中安排一个本地任务来执行此操作,或设置credssp。