gpt4 book ai didi

powershell - 避免这种 $null 测试的方法

转载 作者:行者123 更新时间:2023-12-01 17:56:20 26 4
gpt4 key购买 nike

我正在编写一个脚本,它将删除旧的 sql 备份,但前提是有更新的备份。我已经编写了以下脚本,但不确定是否应该以这种方式处理 $d[0] -eq $null 部分。我尝试进行计数,但逻辑一直失败,因为如果 $dir |获取子项 | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays($days) -and $_.extension.ToString() -eq ".bak"} 没有返回任何内容 $d 的计数仍然为 1。那么,还有其他方法或写法吗?

Set-Location \\Server\Backups

$days = -2
$list = @()

$DBFolders = Get-ChildItem | Where-Object {$_.PSIsContainer -eq $true }

Foreach ($dir in $DBFolders)
{
$d = @()
$d += $dir | Get-ChildItem | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays($days) -and $_.extension.ToString() -eq ".bak"}

if ($d[0] -ne $null)
{
$list += $dir | Get-ChildItem | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays($days) -and $_.extension.ToString() -eq ".bak" -or $_.extension.tostring() -eq ".trn"}
}
}

$list | remote-item

最佳答案

简单地测试 $d 是否计算为 $true$false - 空集合总是计算为 $false:

$d = @()
$d += $dir | Get-ChildItem | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays($days) -and $_.extension.ToString() -eq ".bak"}

if($d){
# $d is not empty
}

关于powershell - 避免这种 $null 测试的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com