下面的代码压缩了文件,但是,我担心运行代码后会出现以下情况。我想知道我是否错误地压缩了它们。
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
如果目录已经存在则不会发生错误)。