【发布时间】:2015-12-11 13:47:30
【问题描述】:
这是我的 powershell 代码:
$SourceZipFolder = "C:\temp\TEST\tempzip"
New-Item -type directory -path $SourceZipFolder
[Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" ) | Out-Null
$CompressionLevel= [System.IO.Compression.CompressionLevel]::Optimal
$FileSource = Get-ChildItem -Path "C:\temp\TEST" | Where-Object LastWriteTime -lt (get-date).AddDays(-2)
Move-Item $FileSource.FullName -Destination $SourceZipFolder
Foreach ($Fichiers in $FileSource) {
$ZipDestination ="C:\temp\TEST\archive\$($Fichiers.Name).zip"
[io.compression.zipfile]::CreateFromDirectory($SourceZipFolder, $ZipDestination, $CompressionLevel)
}
Remove-Item -Path $SourceZipFolder -Recurse
我在执行时遇到了这个错误:
Cannot find an overload for "CreateFromDirectory" and the argument count: "3".
At C:\Users\test\Desktop\temp.ps1:17 char:1
+ [io.compression.zipfile]::CreateFromDirectory($SourceZipFolder, $ZipDestination, ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
我的ForEach 循环不接受[io.compression.zipfile]::CreateFromDirectory 中的$CompressionLevel 参数,我不明白为什么...因为当我使用For 循环而不是ForEach 时,它可以工作...
感谢您的帮助
我使用 Powershell V4。
【问题讨论】:
-
A 没有看到带有三个参数的
CreateFromDirectory的任何重载。 -
CreateFromDirectory有三个参数的重载,但方法签名是 CreateFromDirectory(String, String, Encoding)。但是,您正在尝试将 CompressionLevel 作为编码传递给它。
标签: .net powershell foreach