gpt4 book ai didi

powershell - PowerShell意外将 “CN=”前缀添加到计算机名称

转载 作者:行者123 更新时间:2023-12-03 01:30:12 26 4
gpt4 key购买 nike

我正在尝试遍历计算机列表并检索每台计算机的模型。当我使用Write-Output打印每台计算机的名称时,这正是我所期望的(只是名称)。但是,当我尝试使用wmic命令获取模型时,似乎正在使用“CN = $ name”。即使我执行了.Substring(3),它仍然会抛出错误“找不到别名”,并显示“CN = $ name”。这是我的脚本:

$computers = Get-ADComputer -Filter '*'

foreach ($computer in $computers) {
Write-Output $computer.Name # Outputs how I expect, just the name
wmic /node:$computer.Name csproduct get name | Write-Output # Throws error, alias not found CN=$name
}

最佳答案

执行此操作时:

wmic /node:$computer.Name csproduct get name

PowerShell仅认为 $computer是应扩展的变量。因此,它在 ToString()上执行一个 $computer,该名称变成计算机的完整专有名称(这就是为什么从一开始就修剪 CN=并没有帮助的原因)。如果输出以下内容,则可以看到此内容:
Write-Output "$computer.Name"

您会看到您获得了专有名称并附加了 .Name

为避免这种情况,您可以通过将其括在 $computer.Name中来明确告诉它要解析 $( ):
wmic /node:$($computer.Name) csproduct get name

如果您愿意,可以在这里阅读更多相关信息: Variable expansion in strings and here-strings

关于powershell - PowerShell意外将 “CN=”前缀添加到计算机名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58997578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com