0

我对此代码的结果有疑问。出于某种原因,脚本的专有名称部分给出了我的工作站的值,而不是阵列中服务器的专有名称......

    Function WMILookup {
    foreach ($StrComputer in $colComputers){
    $GenItems1 = gwmi Win32_OperatingSystem -Comp $StrComputer
    $Printers = gwmi Win32_Printer -computername $StrComputer


    # Populate General Sheet(1) with information
foreach ($objItem in $GenItems1){
    $Sheet1.Cells.Item($intRow, 1) = $StrComputer
    $Sheet1.Cells.Item($intRow, 2) = $objItem.Caption
    $Sheet1.Cells.Item($intRow, 3) = $objItem.CSDVersion
    }

foreach ($objItem in $Printers){
    $Sheet1.Cells.Item($intRow, 4) = $objItem.Shared
    }


$de = New-Object System.DirectoryServices.DirectoryEntry
$ds = New-Object System.DirectoryServices.DirectorySearcher
$ds.SearchRoot = $de
    $ds.Filter = "(&(objectCategory=computer)(objectClass=computer)  (samAccountName=$($env:Computername)$))"
$ds.SearchScope = "SubTree"
$r = $ds.FindOne()
$r.Path
$Sheet1.Cells.Item($intRow, 5) = $r.Path

    $intRow = $intRow + 1}
    }
4

1 回答 1

0

它给了你你问他的东西:

$ds.Filter = "(&(objectCategory=computer)(objectClass=computer)  (samAccountName=$($env:Computername)$))"

$env:Computername是执行函数的计算机名称。

也许你想要这个:

$ds.Filter = "(&(objectCategory=computer)(objectClass=computer)  (samAccountName=$($StrComputer)$))"
于 2012-11-22T06:25:04.037 回答