簡體   English   中英

使用ForEach循環找不到重載

[英]Cannot find an overload with ForEach loop

這是我的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它有效...

Thansk的幫助

我使用的是Powershell V4。

如果要設置壓縮級別而不關心編碼類型,則需要使用以下方法簽名:

CreateFromDirectory(String, String, CompressionLevel, Boolean)

https://msdn.microsoft.com/en-us/library/hh485721%28v=vs.110%29.aspx

對於代碼的相關部分:

Foreach ($Fichiers in $FileSource) {
    $ZipDestination ="C:\temp\TEST\archive\$($Fichiers.Name).zip"
    [io.compression.zipfile]::CreateFromDirectory($SourceZipFolder, $ZipDestination, $CompressionLevel, $false)
}

請注意最后的附加參數。 如果希望將基本源目錄包含在zip文件中,則需要使用$ true;如果只希望源目錄的內容位於zip文件中,則需要使用$ false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM