You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell检测OpenSSH安装状态时无法获取对象属性问题排查

错误原因

原脚本的Where-Object筛选逻辑错误:你指定了筛选Name属性后,连续添加了两个互斥的-like匹配规则,且Installed是功能的State属性取值,不属于Name属性的匹配范围,所以永远无法匹配到有效对象,导致无法获取属性。

修正后脚本

简洁写法(接近原脚本结构)

if (Get-WindowsCapability -Online | Where-Object {$_.Name -like 'OpenSSH.Server*' -and $_.State -eq 'Installed'}) {
    Write-Output "OpenSSH 服务端已安装"
    exit 0
}
# 未安装时的后续执行代码写在此处

可读性更强的写法

# 获取OpenSSH.Server的安装状态
$openSshServer = Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
if ($openSshServer.State -eq 'Installed') {
    Write-Output "OpenSSH 服务端已安装"
    exit 0
}
# 未安装时的后续执行代码写在此处

补充说明

  • 若需要检测OpenSSH客户端,将筛选规则中的OpenSSH.Server*替换为OpenSSH.Client*即可
  • 脚本匹配到已安装状态后会直接执行exit 0终止运行,符合终止后续代码的需求

内容的提问来源于stack exchange,提问作者Dawid Lis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:54:00