2013-06-05 5 views
0

Я пытаюсь отфильтровать вывод следующего сценария PS;Фильтрация вывода Powershell

Мы используем имена серверов, таких как:

SRV-APP-001, PRD-APP-001, TST-APP-001 и т.д ...

$strCategory = "computer" 
$strOperatingSystem = "Windows*Server*" 

$objDomain = New-Object System.DirectoryServices.DirectoryEntry 

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
$objSearcher.SearchRoot = $objDomain 

$objSearcher.Filter = ("OperatingSystem=$strOperatingSystem") 

$colProplist = "name" 
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)} 

$colResults = $objSearcher.FindAll() 

foreach ($objResult in $colResults) 
    { 
    $objComputer = $objResult.Properties; 
    $objComputer.name 
    } 

Вывод этого сценария все серверы в Домене.

Но я хочу видеть только серверы, которые начинаются с «СРВ» или «ПРД»

| where { $_name -like "SRV*"} не НАСТОЯЩЕМУ работает после $objComputer.name части.

Спасибо заранее

+1

Пожалуйста, не используйте [Венгерская нотация] (http://windowsitpro.com/blog/what-do-not-do -powershell-часть-5). Спасибо. –

ответ

3

Измените фильтр для:

"(|(name=SRV*)(name=PRD*))(OperatingSystem=Windows*Server*)" 
+0

Хм, я не понимаю, как это работает с этой строкой кода или его образцами. Нужно ли применять его после/в '$ objSearcher.Filter = ("OperatingSystem = $ strOperatingSystem")?? –

+1

$ objSearcher.Filter = "(| (name = SRV *) (name = PRD *)) (OperatingSystem = Windows * Server *)" –

Смежные вопросы