如何在PowerShell的Get-ADComputer -Filter中使用变量?
解决PowerShell Get-ADComputer过滤器变量不生效的问题
你的问题出在双引号嵌套导致变量未被解析:原代码中内层双引号会被视为字符串的一部分,PowerShell不会识别$EOLOS为变量。以下是几种可行的修改方案:
方案1:单引号包裹过滤器+直接引用变量(推荐)
用单引号定义过滤器字符串,PowerShell会自动解析其中的变量,避免引号混乱:
$ServerOS = "Windows server 2022" # 精确匹配 Get-ADComputer -Filter 'operatingsystem -like $ServerOS' # 模糊匹配(带通配符) $ServerOS = "*Windows server 2022*" Get-ADComputer -Filter 'operatingsystem -like $ServerOS'
方案2:转义双引号
用反引号`转义内层双引号,让PowerShell正确识别变量:
$ServerOS = "Windows server 2022" Get-ADComputer -Filter "operatingsystem -like `"$ServerOS`""
方案3:使用脚本块过滤器(PowerShell 3.0+)
直接用脚本块形式编写过滤器,语法更直观,无需处理引号:
$ServerOS = "Windows server 2022" Get-ADComputer -Filter { operatingsystem -like $ServerOS }
注意:如果需要模糊匹配操作系统名称,记得给变量添加通配符
*,否则只会匹配完全一致的字符串。
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

