Chef 没有调用 PS 脚本的第二行
Chef doesn't call the second line of the PS script
我正在使用 Chef Kitchen 进行 POC。我们有一个 PowerShell 脚本,它转到网络路径,根据日期 [Install shield installer] 对构建进行排序,复制到文件夹中的 VM。
当我 运行 在 VM 中手动使用电源 Shell 时,此脚本可以正常工作。当我 运行 使用 Chef Kitchen 时我没有收到任何错误,配方是 运行 但只有第一个 line.I 可以看到在 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
这看起来像是一个 windows 远程处理问题,您的 powershell 需要正确的配置才能访问网络共享。
验证是否是这种情况:替换 UNC 路径并仅复制本地目录 - 如果可行,您可以进一步挖掘以设置 windows 远程处理的要求,请参阅以下链接以获得更多帮助:
- Safely running windows automation operations that fail inside winrm or powershell remoting(请参阅“无法访问网络资源”一章)
- Knife issue 655
- enabling and using credssp
总结一下这些链接:您可以在 PS 中安排一个本地任务来执行复制以实现此目的,或者设置 credssp。
我正在使用 Chef Kitchen 进行 POC。我们有一个 PowerShell 脚本,它转到网络路径,根据日期 [Install shield installer] 对构建进行排序,复制到文件夹中的 VM。
当我 运行 在 VM 中手动使用电源 Shell 时,此脚本可以正常工作。当我 运行 使用 Chef Kitchen 时我没有收到任何错误,配方是 运行 但只有第一个 line.I 可以看到在 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
这看起来像是一个 windows 远程处理问题,您的 powershell 需要正确的配置才能访问网络共享。
验证是否是这种情况:替换 UNC 路径并仅复制本地目录 - 如果可行,您可以进一步挖掘以设置 windows 远程处理的要求,请参阅以下链接以获得更多帮助:
- Safely running windows automation operations that fail inside winrm or powershell remoting(请参阅“无法访问网络资源”一章)
- Knife issue 655
- enabling and using credssp
总结一下这些链接:您可以在 PS 中安排一个本地任务来执行复制以实现此目的,或者设置 credssp。