2015-01-12 5 views
1

Ниже приведены мои текущие попытки вытащить группы AD, которым присвоены равные имена, такие как «ML ...». Я продолжаю получать ошибки, поэтому мне хотелось знать, почему я не могу фильтровать управляемые с помощью «-like», когда я могу фильтровать управляемые переменные «-eq $ ...». Я попытался сделать переменную $ name = "ML *", чтобы я мог выполнять {managedby -eq $ name}, но все равно не повезло.Фильтр Managedby Powershell

основном я получаю ошибку, как:

Operator(s): The following: ''Eq', 'Ne'' are the only operator(s) suppor 
ted for searching on extended attribute: 'ManagedBy'. 

и так далее, потому что «-eq» принимается только для некоторых фильтров, которые я сделал. Когда я использую -eq я получаю эти ошибки:

Import-Module : The following error occurred while loading the extended type dat 
a file: 
Microsoft.PowerShell, C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ActiveD 
irectory\ActiveDirectory.Types.ps1xml : File skipped because it was already pres 
ent from "Microsoft.PowerShell". 
Microsoft.PowerShell, C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ActiveD 
irectory\ActiveDirectory.Types.ps1xml : File skipped because it was already pres 
ent from "Microsoft.PowerShell". 

At J:\\ManagedbyEqualsML.ps1:1 char:14 
+ Import-Module <<<< ActiveDirectory 
+ CategoryInfo   : InvalidOperation: (:) [Import-Module], RuntimeExc 
eption 
+ FullyQualifiedErrorId : FormatXmlUpateException,Microsoft.PowerShell.Comm 
ands.ImportModuleCommand 

The term 'Get-adgroup' is not recognized as the name of a cmdlet, function, scri 
pt file, or operable program. Check the spelling of the name, or if a path was i 
ncluded, verify that the path is correct and try again. 
At J:\\ManagedbyEqualsML.ps1:53 char:27 
+ $MLgroupAll = Get-adgroup <<<< -Properties managedby, enabled, name -filter 
{managedby -eq $name} 
+ CategoryInfo   : ObjectNotFound: (Get-adgroup:String) [], CommandN 
otFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException 

Вот мои коды, где я попытался найти владельцев, которые имеют имя ML *

Import-Module ActiveDirectory 

$name = "ML*" 

#Attempt 1 

$MLgroups = Get-adgroup -Properties managedby, enabled, name -filter * | Select name, managedby 

foreach ($group in $MLgroups){ 

if ($group.managedby -like "ML*"){ 
write-host $group.name + $group.managedby} 

} 

#Attempt 2 

$Mgroups = get-adgroup -Properties name, managedby -filter * 
foreach ($groups in $Mgroups){ 
     # here get the group name and use the "managedBy attribute to retrieve the user object 
     # grou naem 
     $gname = $_.Name 
     $manager=Get-AdUser $_.ManagedBy 
     $MangerName = $manager.DisplayName 

     if ($managerName -like "ML*"){ 
     write-host $gname + $managerName} 

} 

#Attempt 3 

$exportlist = "C:\Temp\managedby.txt" 

Clear-Content $exportlist 


$Header = ` 
"Group ID Name" + "|" + "ManagedBy" 

$Header | Out-File $exportlist -Append 

$list = get-adgroup -properties name, managedby -filter {managedby -like "ML_*"} ` 
| Select name, managedby | Export-CSV $exportlist -NoType -Delimiter '|' 

#Attempt 4 

$MLgroupAll = Get-adgroup -Properties managedby, enabled, name -filter {managedby -like $name} 
foreach ($group in $MLgroupAll) { 

write-host $group.name + $group.managedby} 

UPDATE: если я пытаюсь изменил мое имя $ переменная все еще не работает и дает другую ошибку.

$MLgroupAll = get-adgroup -Properties managedby, enabled, name -filter {managedby -eq $name} 
foreach ($group in $MLgroupAll) { 

$managed = $group.managedby 
    if ($managed -like "ML*"){ 
write-host $group.name + $group.managedby } 

} 

ОШИБКА: Get-ADgroup: информация Удостоверение, представленную в расширенном атрибуте: Кл 'ManagedBy' не d быть решена. Причина: «Невозможно найти объект с идентификатором:« ML * »под:« D C = мы, DC = dirsrv, DC = com '.'.

@Paul: вот моя ошибка по-прежнему:

enter image description here

+0

'Термин«Get -adgroup 'не распознается как имя cmdlet' Я бы подумал, что вам нужно решить эту проблему, прежде чем беспокоиться о любых сценариях. Не похоже, что он находит командлет вообще. – arco444

+0

Я использовал get-adgroup для нескольких программ, прежде чем получить эту ошибку, не имеет для меня никакого смысла. – narue1992

+0

См. Проблему с тем, что вы пытаетесь сделать, это то, что свойство managedby содержит DistinguishedName, вам будет трудно сравнивая DN с чем-то вроде «ML *». вы можете попробовать «get-aduser ml *», а затем получить DN пользователя и сравнить его с свойством managedby, если это поможет. Или, используя ваш последний пример, добавьте вторую звездочку до того, как ML понравится этот '$ managed -like '* ML *" 'в цикле – Paul

ответ

1

Вот пример, который работает для меня (ориентируя себя в последней попытке):

get-adgroup -filter * -Properties managedby | % { 

if($_.managedby -like "CN=ML*"){ 
write-host $_.name + $_.managedby 
} 

} 
+0

Я разместил изображение, используя ваш пример. s – narue1992

+0

О, я вижу, что вы удалили мою часть фильтра. Ну, я удалил то, что удалило ошибки ... просто ничего не напечатало haha ​​ – narue1992

+0

@AlyssaCooke в этом случае, вероятно, нет группы, управляемой пользователем, или есть? – Paul