powershell 如何检查computername是否是一个代理的一部分,然后采取行动

eanckbw9  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(158)

我试图创建一个快速脚本来检查当前主机名是否在一个主机名中,然后根据该结果执行一个操作。
我可以在“Name”属性下返回目录中的计算机,但是当试图匹配当前的$env:computername时,它永远不会与目录中的计算机返回的内容匹配。
我尝试了以下代码。

$pccheck = Get-ADComputer -Filter * -SearchBase "OU=Test,OU=Computers,DC=TESTENV,DC=local" | Select Name

if ($pccheck -contains $env:computername) {
    # Do something

$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("Pc is eligible") 

} else {

$Output = $wshell.Popup("Not eligible")

}

字符串
即使我目前在一台计算机上,这是为$pccheck变量返回的结果的一部分,它永远不匹配if语句的条件,代码继续到“else”代码。
例如,这部分代码返回result“Userpc”作为name属性。我的if语句不能识别我当前在“Userpc”上,然后执行if语句的第一部分,总是只执行最后一部分。

Get-ADComputer -Filter * -SearchBase "OU=Test,OU=Computers,DC=TESTENV,DC=local" | Select Name


有没有人对if语句条件需要什么语法有什么建议?
任何帮助都非常感谢!

hs1rzwqc

hs1rzwqc1#

使用Active Directory filter来简化代码:

$getADComputerSplat = @{
    Filter     = "name -eq '$env:ComputerName'"
    SearchBase = 'OU=Test,OU=Computers,DC=TESTENV,DC=local'
}

$pccheck = Get-ADComputer @getADComputerSplat

if ($pccheck) {
    # Do something
    $wshell = New-Object -ComObject Wscript.Shell
    $Output = $wshell.Popup('Pc is eligible')
}
else {
    $Output = $wshell.Popup('Not eligible')
}

字符串
您可以包含SearchScope = 'OneLevel'来搜索直接子对象。

相关问题