无法删除14天以前的zip文件夹

时间:2017-08-28 10:39:11

标签: powershell

我无法从目录中删除超过14天的zip文件夹。我的其余部分工作正常,但以下代码块失败:

它没有抛出任何错误,路径已经过检查,但是,我将旧文件放入其中以查看它们是否被清除无效。它打印文件夹路径存在的语句,但不删除文件夹中的任何内容。

if (!(Test-Path $folderpath)) {
    New-Item -ItemType Directory -Path $folderpath
    Write-Host "$folderpath created"
} else {
    Write-Host "$folderpath already exists, will remove old items"
    $HowOld = -14
    Get-ChildItem $Path -Recurse |
        where {$_.LastWriteTime -lt (Get-Date).AddDays($HowOld) -and -not $_.PSIsContainer} |
        % {Remove-Item $_.FullName -Force -WhatIf}
}

以下是完整性的完整脚本:

#Get backup folder drive letter
$letter = [System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed' -and $_.Name -notlike '*C*'} | Select-Object  -Property Name
[string] $drive =  "$letter"
$Drive2 = $null
$Drive2 = $drive.Substring($drive.IndexOf('=')+1)
$BackupDrive = $Drive2.Substring(0, $Drive2.IndexOf('}'))

#Check the programname log path.
$logspath = "C:\ProgramData\programname\programname4.0\Logs" 
If (!(test-path $logspath))
{

  $IQlogspath = "C:\ProgramData\programname\iQSonar4.0\Logs"
  }
Else
{
$IQlogspath = "C:\ProgramData\programname\programname4.0\Logs" 
}


#check if backup folder exists, clean if exists and if not create it.
$folderpath = $BackupDrive + "programname_logs"

If(!(test-path $folderpath))
{
New-Item -ItemType Directory -Path $folderpath
write-host "$folderpath created"
}

Else
{
write-host "$folderpath already exists, will remove old items"
$HowOld = -14
get-childitem $Path -recurse | where {$_.lastwritetime -lt (get-date).adddays($HowOld) -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -whatif}
}

#check if todays folder exists, if not create it
$todaysdate = (Get-Date).ToString('dd-MM-yyyy')
$todaysbackup = $folderpath + "\Logs_Backup_" + $todaysdate
$todaysbackupzip = $todaysbackup + ".zip"

If(!(test-path $todaysbackup))
{
New-Item -ItemType Directory -Path $todaysbackup
write-host  "$todaysbackup created, now moving items"

#select and move files to backup folder
get-childitem -Path $IQlogspath | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-7) -and $_.Name -notmatch "Service"} | 
    move-item -destination $todaysbackup
Start-Sleep -s 10

write-host "checking for zip"
If(Test-path $todaysbackupzip) {
write-host "$todaysbackupzip already exists, changing name"
$todaysbackupzip = $null
$todaysbackupzip = $folderpath + "\Logs_Backup_" + $todaysdate + ".re-run" + ".zip"
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($todaysbackup, $todaysbackupzip)
write-host  "$todaysbackupzip created"
Remove-Item -Recurse -Force $todaysbackup
write-host  "$todaysbackup removed"
exit
}
write-host  "creating zip folder, $todaysbackupzip"
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($todaysbackup, $todaysbackupzip)
write-host  "$todaysbackupzip created"
Remove-Item -Recurse -Force $todaysbackup
write-host  "$todaysbackup removed"
exit
}

Else
{
write-host "$todaysbackup already exists, attempting to zip"

#check if zip backup folder already exists
If(Test-path $todaysbackupzip) {
write-host "$todaysbackupzip already exists, changing name"
$todaysbackupzip = $null
$todaysbackupzip = $folderpath + "\Logs_Backup_" + $todaysdate + ".re-run" + ".zip"
[io.compression.zipfile]::CreateFromDirectory($todaysbackup, $todaysbackupzip)
write-host  "$todaysbackupzip created"
Remove-Item -Recurse -Force $todaysbackup
write-host  "$todaysbackup removed"
exit
}

Else
{
Start-Sleep -s 10
write-host  "creating zip folder, $todaysbackupzip"

Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($todaysbackup, $todaysbackupzip)
write-host  "$todaysbackupzip created"
Remove-Item -Recurse -Force $todaysbackup
write-host  "$todaysbackup removed"
exit
}
}

#Get OS disk label
$OSDisk = Get-WmiObject  Win32_OperatingSystem | Select-Object WindowsDirectory
[string] $drive =  "$OSDisk"
$Drive2 = $null
$Drive2 = $drive.Substring($drive.IndexOf('=')+1)

$OSDrive = $Drive2.Substring(0, $Drive2.IndexOf('\'))
$OSDrive2 = "'$OSDrive'"
$disk = Get-WmiObject Win32_LogicalDisk  -Filter "DeviceID=$OSDrive2"| Select-Object FreeSpace
[INT] $FreeSpace = $disk.FreeSpace /1GB

If ($FreeSpace -gt 5) {
write-host "no additional backup requirement, exiting script"
exit
}

Else {
write-host "Running one off clear"
$OneOff = $IQlogspath + "\Logs_One_Off_" + $todaysdate
$OneOffZip = $OneOff + ".zip"
If(!(test-path $OneOff))
{
New-Item -ItemType Directory -Path $OneOff
write-host  "$OneOff created"
}
Else {
write-host "folder already exists"
}
#select and move files to backup folder
write-host "moving logs to $OneOff"
get-childitem -Path $IQlogspath | 
    where-object {$_.Name -notmatch "Service"} | 
    move-item -destination $OneOff
Start-Sleep -s 10
write-host  "creating zip folder, $todaysbackupzip"

Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($OneOff, $OneOffZip)
write-host  "$todaysbackupzip created"
Remove-Item -Recurse -Force $todaysbackup
write-host  "$todaysbackup removed"
exit
}

0 个答案:

没有答案