【发布时间】:2021-11-08 13:50:08
【问题描述】:
我正在尝试查找正在运行的服务,同时检查我的机器中是否存在正确的版本及更高版本,如果是,那么我需要返回 1 否则为零
我需要检查
条件 1:$servicestatus = true
或
Condition 2 : Where Status -ne "Running" = true
与
条件 3:Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall* | 选择对象 DisplayName、DisplayVersion、Publisher、InstallDate | Where-Object {$.DisplayName -like "Crow*" -and $.DisplayVersion -gt 6.28} 命令至少要有 1 条记录
然后退出1
如果条件3没有记录则退出0
问题
但是当
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall* |选择对象 DisplayName、DisplayVersion、Publisher、InstallDate | Where-Object {$.DisplayName -like "Crow*" -and $.DisplayVersion -gt 6.28} 结果是否有记录,那么整个代码就是结果 1
但是当没有记录导致第三种情况时,我期望为零。
请帮忙:这是我写的完整代码
$servicestatus = get-service 'something'
If (@($servicestatus | Where Status -ne "Running" | Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Where-Object {$_.DisplayName -like "Crow*" -and $_.DisplayVersion -gt 6.28}).Count -gt 0)
{
echo "1"
Exit 1
}
Else
{
echo "1"
Exit 0
}
我修改了代码以添加一个和条件,但仍然没有运气
$servicestatus = get-service 'something'
If (@(($servicestatus | Where Status -ne "Running" ) -and (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Where {($_.DisplayName -like "Crow*") -and ($_.DisplayVersion -gt 6.28)})).Count -gt 0)
{
echo "1"
Exit 1
}
Else
{
echo "1"
Exit 0
}
【问题讨论】:
-
请澄清:
(C1 or C2) and C3或C1 or (C2 and C3) -
(C1 或 C2)和 C3
-
对不起,我在这两个地方都回显 1 很抱歉:D
标签: powershell conditional-statements logic powershell-2.0