我是傀儡新手 我想解压缩一个保存在puppet windows agent中的zip文件。
class ziptest {
exec {"test" :
command =>'unzip Test.zip',
cwd => 'D:\',
path => 'D:\',
}
}
执行时我收到错误:
COULD NOT FIND COMMAND UNZIP
答案 0 :(得分:4)
Theres a puppet module用于包含解压缩类型的Windows配置。
答案 1 :(得分:1)
我无法使用Win7上的模块counsyl / windows解压缩存档。相反,我有另一个有效的解决方案。问题是,Windows没有内置的命令行工具来解压缩档案。
解决方案: 1.在代理上复制7za.exe(下载here: www.7-zip.org) 2.运行exec以解压缩文件
如何复制7za:
class sevenzip {
$location = '\\SERVER\path\7za920\7za.exe'
$local_file = 'C:\Windows\System32\7za.exe'
file { $local_file:
ensure => file,
source => $location,
source_permissions => ignore
}
}
如何运行7za:
class install_updates_win {
$location = '\\SERVER\path\PSWindowsUpdate.zip'
$local_file = 'C:\PSWindowsUpdate.zip'
$destination = 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate'
file { $local_file:
ensure => file,
source => $location,
source_permissions => ignore,
}
exec { 'extract-pswindowsupdate':
command => "C:\Windows\System32\cmd.exe /c C:/Windows/System32/7za.exe e $local_file -o$destination -y",
cwd => 'C:/',
logoutput => true,
}
}
答案 2 :(得分:0)
我也是傀儡的新手,也有同样的问题。 :)可以使用ps模块从puppet调用powershell:https://forge.puppet.com/puppetlabs/powershell
exec { "unzip":
command => "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command Expand-Archive -Path $source -DestinationPath $destination -Force",
logoutput => true,
}
或没有模块只调用ps.exe
define zip::expandarchive($source, $destination) {
if $::kernel == 'windows' {
exec { "unzip with ps ($source, $destination)":
command => "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command Expand-Archive -Path $source -DestinationPath $destination -Force",
logoutput => true,
}
}
else {
exec { "unzip ($source, $destination)":
command => "unzip -o -d $destination $source",
logoutput => true,
}
}
}
我正在使用需要PS 4的扩展存档,因此我还必须进行一些版本检查以确保安全。
我认为你可以编写一个在Linux机器上使用unzip和在Windows机器上使用PS的类。
zip::expandarchive { 'ziptest' :
source => 'D:/Test.zip',
destination => 'D:',
}
用法:
exec { 'unzip package':
command => "c:/cygwin64/bin/unzip.exe -o -d $destination $source",
logoutput => true,
}
使用cygwin似乎也可以正常工作,但是在安装时需要选择zip和解压缩工具。另外将bin文件夹添加到PATH不起作用,因此您需要完整路径(如果您知道如何解决此问题,请告诉我):
Problem1_1.Shape square1 = new Problem1_1.Square("sq1", 2);
double square1Area = square1.GetArea();
string square1Name = square1.GetName();
Console.WriteLine($"Name={square1Name}, Area={square1Area}");