我有一个奇怪的问题,即作为if语句一部分的变量没有按预期执行与值的比较
该值位于CSV文件中。它是一个数字,而不是一个字符串,所以它应该工作正常。如果值比较设置为-eq "0"
,它将打印出仅为零的文件条目。如果我使用-gt
,它只列出值条目不为零。到目前为止一切都很好。
如果我使用-le
或-lt
,则会打印所有文件条目。如果我使用多个比较,例如-gt "0"
和-lt "5"
这也不起作用 - 它会打印出所有值(当然除了那些等于零的值)。我不知道如何使代码正常工作(忽略Write-host
,这就是我可以看到输出)。
我正在使用Foreach
,因为我永远不会有超过10-20个条目,否则我会选择Foreach-Object
。代码详情如下:
$extractFile = "C:\SrvInventory\DBLoginChk.csv"
$passwdexp = 5
$DBdetails = Import-csv $extractfile
Foreach ($DBCreds in $DBdetails) {
If (($DBCreds.DaysUntilExpiration -gt "0") -and
($DBCreds.DaysUntilExpiration -le $passwdexp)) {
$Expdt = $($DBCreds.DaysUntilExpiration)
$DBName = $($DBCreds.LoginName)
$Emailaddr = $DBName+'@'+'myplace.com'
Write-host $Expdt
}
}
文件内容如下所示:
"LoginName","DaysUntilExpiration"
"spot","35"
"pup","22"
"cat","21"
"rhino","3"
"camel","1"
"Bull","0"
"warthog","0"
"GViewer","0"
"grandrapids","0"