正确压缩文件

正确压缩文件

下面的代码压缩了文件,但是,我担心运行代码后会出现以下情况。我想知道我是否错误地压缩了它们。

VERBOSE: The archive file path 'C:\Users\Desktop\FunctionOutputs\ErrorFiles\Dev\TestingAgain__11122019-122639' supplied to the DestinationPath patameter does not include .zip extension. Hence .zip is appended to the supplied Destina
tionPath path and the archive file would be created at 'C:\Users\Desktop\FunctionOutputs\ErrorFiles\Dev\TestingAgain__11122019-122639.zip'.
VERBOSE: Preparing to compress...
VERBOSE: Performing the operation "Compress-Archive" on target "C:\Users\Desktop\FunctionInputs\logs".
function LogZipper{

Param (
        #[Parameter (Mandatory=$true)] [STRING] $region,
        [Parameter (Mandatory=$true)] [STRING] $env,
        [Parameter (Mandatory=$true)] [STRING] $server



        )


    #$Sourcefile = "C:\ControlFile.csv"

 #   $StartProperties = Import-Csv $SourceFile | Where-Object { ($_.Server_Name -eq $server)  -and ($_.Start_Flag -eq "1")} `
                                              #  | Select Server_Name, Service_Name, Install_Location 



    #foreach($line in $StartProperties){
     #  $Install_Location = [string]$line.'Install_Location'

    $LogPath = "C:\Desktop\FunctionInputs"+"\logs"
    $LogPath

    $NetApp = "C:\Desktop\FunctionOutputs\ErrorFiles\"+$env     
    $NetApp

    if(Test-Path -Path $LogPath) {
        $ZipFolder = "$NetApp\$($server)_$($ErrorCode)_$((Get-Date).ToString("MMddyyyy-HHmmss"))"

        Compress-Archive -Path $LogPath -DestinationPath $ZipFolder -CompressionLevel Optimal -Force -Verbose 

        Get-ChildItem $NetApp -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-15))} | Remove-Item -Verbose
        }
        Write-Host ("Files from " + $server +" have been zipped")
        Write-Host ("Files older than 15 days have been deleted")

}
LogZipper

答案1

-DestinationPath该 cmdlet 的参数需要Compress-Archive输出 ZIP 的路径文件,不是目录

如果您传递的路径参数不是以 结尾的.zip(即,如果路径没有扩展名.zip),Compress-Archive则将自动附加.zip到它 - 这就是您的问题中第一个详细消息所说的。

那是:

  • 您的代码不会创建 ZIP 文件里面$ZipFolder文件夹,它会创建一个$ZipFolder.zip文件旁边文件$ZipFolder夹。

  • 您必须在参数中附加所需输出 ZIP 文件的名称,$ZipFolder以便在其中创建它$ZipFolder

    • logs.zip例如,在以下位置创建文件$ZipFolder
      -DestinationPath (Join-Path $ZipFolder logs)

    • 如果您还想避免路径不以以下形式结尾的详细消息.zip
      -DestinationPath (Join-Path $ZipFolder logs.zip)

注意:目录$ZipFolder 必须已经存在为了使其工作;因此,首先根据需要创建它,例如:(
$null = New-Item -Type Directory -Force $ZipFolder
确保-Force如果目录已经存在则不会发生错误)。

相关内容