Ошибка вызова метода, поскольку [Selected.Microsoft.ActiveDirectory.Mangement.ADGroup] не содержит метод с именем 'substring' - PullRequest
1 голос
/ 29 января 2020

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

    $ADGroupList = Get-ADGroup -Filter * | Select Name | Sort Name
    ForEach($Group in $ADGroupList)
    {
        $GroupName = $Group.substring($Group.length -7, $Group.length -8)
        $members = Get-ADGroupMember -Identity "$GroupName" | Select Name, SAMAccountName | Sort Name
        ForEach($member in $members)
        {
            Write-Host ($member.Name + "," + $member.SAMAccountName  + "," + $Group.name)
        }
    }

Он продолжает сбой со следующей ошибкой:

Ошибка вызова метода, поскольку [Selected.Microsoft.ActiveDirectory.Mangement.ADGroup] не содержит метод с именем 'substring'

Где я go ошибся? Я думал, SubString был метод PowerShell?

Ответы [ 2 ]

1 голос
/ 30 января 2020

В случае, если кто-то наткнется на это в будущем, вот конечный результат, включая выход, передаваемый в CSV:

1 голос
/ 30 января 2020

Вы ищете получить подстроку имени объекта. Измените свой оператор группы следующим образом:

$GroupName = $Group.Name.substring($Group.Name.length -7, $Group.Name.Length -8)
             #    string.substring(startIndex           , number of characters)

Примечание Метод подстроки Powershell принимает индекс и количество символов, которые вам нужны из этого индекса. метод .substring не имеет начала и конца, как можно подумать.

Документация:

Substring()
Return part of a longer string.

Syntax
      .Substring( StartIndex [, length] )


Key
   StartIndex  Characters to skip from the start of the string.
               Use 0 to start from the beginning of the string.
               Cannot be less than zero.

   length      The number of characters to return.
               Cannot be less than zero or longer than the string.
               If omitted all remaining characters will be returned.
...