首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找缺少的计算机名称前缀

查找缺少的计算机名称前缀
EN

Stack Overflow用户
提问于 2018-05-23 20:49:35
回答 1查看 118关注 0票数 0

我正在尝试编写一个脚本,它将根据计算机的ID自动找到完整的资产标记。

例如:

PC ID是:PC0001

代码语言:javascript
运行
复制
$computerID = PC0001;

但是我需要的完整的资产标记是:WKSPC0001

但是这些资产标记可能有不同的前缀,例如DSTPC0002、TBLPC0003等,但它们都有共同的模式: Prefix+PC+ID ( ID是唯一的,没有重复)。

我正试图找出如何用PowerShell编写查询,但我想不出答案。我试过:

代码语言:javascript
运行
复制
$current = Get-ADComputer -Filter {Name -like "*$computerId.text"} |
           Select -Property Name

但我有问题让它开始工作。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 21:05:11

一些观察。

  • 您希望$computerId是一个字符串,所以$computerID = "PC0001";
  • 的过滤器表达式也应该是一个字符串,这里使用大括号是错误的。所以Get-ADComputer -Filter "..."
  • Powershell可以在字符串中展开变量值,但它只能在双引号字符串中展开。"Name -like '$variable'"会工作,但'Name -like "$variable"'不会。
  • 在您的.text变量中没有$computerId。这是一根普通的绳子。

知道了这一点,试着:

代码语言:javascript
运行
复制
$current = Get-ADComputer -Filter "Name -like '*$computerId'"

其他注释

除非你真的必须这样做,否则不要做... | Select Name。存储计算机对象本身将更加通用。你可以在需要的时候随时做$current.Name

使用以通配符开头的过滤器查询AD是slow。尽量避免。

如果您有固定数量的可能前缀,那么像下面这样的LDAP过滤器会快得多:

代码语言:javascript
运行
复制
$current = Get-ADComputer -LDAPFilter "(|(cn=WKS$computerId)(cn=DST$computerId)(cn=TBL$computerId))"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50497247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档