0
该脚本正常工作,并将切换服务器上的打印机并确定打印机是否共享(TRUE)。但是,如果服务器上的最后一台打印机恰好不被共享,则会出现问题,然后将共享更改为(False)。这在电子表格中歪曲了结果,表明服务器不是打印服务器,尽管它是。我需要做一些如何创建一个循环,指出如果我们在服务器上找到一台共享打印机,请停止搜索并将服务器放入标记为打印服务器的电子表格中。确定服务器是否为打印服务器
我想提出的类似 $Printers = gwmi Win32_Printer -computername $StrComputer if ($printers.shared -eq "True){# then stop searching that machine and place it in the speadsheet as a print server}
这里是我的代码:
foreach ($StrComputer in $colComputers){
$Printers = gwmi Win32_Printer -computername $StrComputer
$GenItems1 = gwmi Win32_OperatingSystem -Comp $StrComputer
# Populate Printer Sheet 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=$($StrComputer)$))"
$ds.SearchScope = "SubTree"
$r = $ds.FindOne()
$r.Path
$Sheet1.Cells.Item($intRow, 5) = $r.Path
$intRow = $intRow + 1}
}
感谢您的快速回应基督徒。我把代码放在这里,但它不会产生所需的结果。它看起来像挂在第一台服务器上,从不真正产生第一台服务器的真/假结果。 – NobleMan
如果我再次将您的代码放入foreach中,我确实会得到第二台服务器以显示除$ objItem.Shared值之外的所有值。这两个都保持空白。 – NobleMan
当我拿出break命令时,这确实起作用。 – NobleMan