Powershell脚本来查找文件夹和存在的时间

时间:2019-01-14 18:07:19

标签: powershell

创建一个PowerShell脚本以查找Windows.old文件夹的存在。如果该文件夹存在,脚本将检查该文件夹的使用期限是否超过14天。如果年龄超过14天,则将输出设置为“ 1”。如果年龄小于14天,则输出应为“ 0”。如果该文件夹不存在,脚本还应将输出设置为“ 0”。

下面是我在前两个条件正常的情况下创建的脚本。对于第三种情况,它将根据需要提供输出(0),但显示如图所示的错误。我们是否可以选择没有错误消息的输出。

$limit = (Get-Date).AddDays(-15)
$path = "C:\Windows.old"
$test = Test-Path $path
$task = ((Get-Item $path |
        Where-Object { $_.CreationTime -lt $limit }))
if ($test -eq $true) {
    if ($task) {
        $compliance ='1'
    } else {
        $compliance ='0'
    }
    $compliance
}
if ($test -eq $false) {
    Write-host '0'
}

Output Screenshot

1 个答案:

答案 0 :(得分:0)

所以我写了一个函数,它应该可以满足您的需求

function Get-ItemTest(){
    Param(     
        [Parameter(ValueFromPipeline, Mandatory=$True)]
        [string]$Path,
        [Parameter(Mandatory=$True)]
        [DateTime]$Limit
    )
    process{
        if(Test-Path $Path){
            Get-Item $path | %{
                if($_.Creationtime -lt $Limit){
                    new-object psobject -Property @{Name=$_.FullName;Compliance=1}
                }else{
                    new-object psobject -Property @{Name=$_.FullName;Compliance=0}
                }
            }
        }else{
            new-object psobject -Property @{Name=$Path;Compliance=0}
        }
        return $Response
    }
}

Get-ItemTest -Limit (get-date).AddDays(-15) -Path "C:\Windows"

"C:\Windows.old", "C:\Windows","C:\Users" | Get-ItemTest -Limit (get-date).AddDays(-15)

让我们回顾一下这里发生的事情。

在您的脚本中

$task = ((Get-Item $path | Where-Object { $_.CreationTime -lt $limit }))

在测试路径是否有效之前,您已经在尝试获取商品。 您可以使用 Test-Path

将其封装在 IF 语句中
if(Test-Path $Path){
    Get-Item ...
}else{
    "failed"
}