2013-12-05 3 views
3

Почему нет приведенной ниже командной строки get-adcomputer? Это действительно раздражает, когда командлеты не поддерживают синтаксис powershell. По крайней мере, похоже, что это происходит здесь. Если я делаю запись-вывод, он отображает именно то, что я хочу вставить в командную строку. Однако, когда я использую его с командлетом get-adcomputer, результаты не возвращаются.Модуль Powershell ActiveDirectory Переменная с подстановочным знаком не работает

PS: C:\> $Variable = "88FF" 

PS: C:\> write-output "*$($Variable)*" 
*88FF* 

PS: C:\> Get-ADComputer -Filter {Name -like "*$($Variable)*"} -Property * 
PS: C:\> 
PS: C:\> Get-ADComputer -Filter {Name -like "*88FF*"} -Property * 
computer1 
computer2 
computer3 

Я пробовал кучу разных вариантов ... в том числе даже при добавлении буквальные кавычки переменной, убегая их. Я вытаскиваю свои волосы, пытаясь понять, что нужно делать менее 10 секунд.

PS: C:\> $Variable = "`"*888FF*`"" 
PS: C:\> $Variable 
"*88FF*" 
PS: C:\> PS: C:\> Get-ADComputer -Filter {Name -like $Variable} -Property * 
PS: C:\> 

Edit: Я также попытался ниже варианта с точно таким же результатом:

PS: C:\> Get-ADComputer -Filter {Name -like '*$Variable*'} -Property * 
PS: C:\> 
+0

Является '' -Property * действительный ключ/аргумент? Этот http://technet.microsoft.com/en-us/library/ee617192.aspx, по-видимому, указывает, что действительный коммутатор - '-Properties' –

+0

@inquisitor yes -property просто отлично. –

+0

Возможный дубликат [Powershell Passing Variable to -Filter with Wild Card] (http://stackoverflow.com/questions/19171597/powershell-passing-variable-to-filter-with-wild-card) – JPBlanc

ответ

1

Довольно хромые, похоже, что это один из многих ограничений модуля Active-каталога Powershell, который приходит с Windows. Я не делал ничего плохого в своих первоначальных попытках. Я закончил работу с конвейером, где {}, чтобы отфильтровать его.

Get-ADComputer -properties Name, OperatingSystem -Filter *| ?{$_.name -like "*$($Variable)*"} |ft Name, OperatingSystem -Wrap -Auto 
+0

Это не было * ограничение модуля ActiveDirectory от Microsoft до недавнего времени. Такое поведение возникает при использовании RSAT для Server 2012 R2 под PowerShell 4.0 в Windows 8.1. Когда я обновился, эта проблема сломала кучу моих скриптов. Я (и другие) опубликовал проблему на форумах TechNet, но получил несколько ответов «меня тоже». –

0

Как об этом:

$myvar="*888FF*" 
get-adcomputer -filter {name -like $myvar} -property * 

Это действительно раздражает, можно было бы ожидать, чтобы это работало, но -filter просто имеет некоторые странные правила анализа внутренне я думаю

$myvar="888FF" 
get-adcomputer -filter {name -like "*$myvar*"} -property * 
3

Дайте этому попробуйте:

Get-ADComputer -Filter "Name -like '*$Variable*'" -Property * 
0

Решение Shay работает красиво (по крайней мере, на v4)

Я также узнал, что LDAPFilters тоже будут работать!

Get-adcomputer -LDAPFilter "(& (имя = $ Имя *) (OperatingSystem = сервер))"

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