Powershell, работающий с командой active directory, работает вне функции, но не внутри функции

#powershell #azure-active-directory #azure-powershell

Вопрос:

Я пишу функцию в PowerShell для автоматизации active directory. При независимом выполнении команд он работает очень хорошо, но он не работает, когда я создаю функцию.

 Function addMember($parent, $child){
    $parentObjectID = Get-AzureADGroup -Filter "DisplayName eq '$parent'" -ErrorAction Continue | select -ExpandProperty ObjectId
    $childObjectID = Get-AzureADGroup -Filter "DisplayName eq '$child'" -ErrorAction Continue | select -ExpandProperty ObjectId

    Add-AzureADGroupMember -ObjectId $parentObjectID -RefObjectId $childObjectID
}


addMember('Main', 'Child')

Get-AzureADGroup : Error occurred while executing GetGroups 
Code: Request_UnsupportedQuery
Message: Unsupported or invalid query filter clause specified for property 'displayName' of resource 'Group'.
RequestId: 0ab4dc0e-0492-427c-8c86-df6cb7d4e7b6
DateTimeStamp: Tue, 06 Jul 2021 08:07:17 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:3 char:22
  ... dObjectID = Get-AzureADGroup -Filter "DisplayName eq '$child'" -Error ...
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      CategoryInfo          : NotSpecified: (:) [Get-AzureADGroup], ApiException
      FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.GetGroup
 
Add-AzureADGroupMember : Cannot bind argument to parameter 'ObjectId' because it is null.
At line:5 char:38
      Add-AzureADGroupMember -ObjectId $parentObjectID -RefObjectId $ch ...
                                       ~~~~~~~~~~~~~~~
      CategoryInfo          : InvalidData: (:) [Add-AzureADGroupMember], ParameterBindingValidationException
      FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.Open.AzureAD16.PowerShell.AddGroupMember
 
 

Является ли это проблемой переменной?

Комментарии:

1. eq должно быть -eq

2. Я попытался использовать-eq, это не сработало. … dObjectID = Get-AzureADGroup -Фильтр «DisplayName -eq ‘$child » — Ошибка … ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo : Не определен: (:) [Get-AzureADGroup], ApiException Полностью квалифицированный идентификатор ошибки : Microsoft.Open. AzureAD16. Клиент. Исключение ApiException,Microsoft.Откройте. AzureAD16. PowerShell. GetGroup Add-AzureADGroupMember : Не удается привязать аргумент к параметру «ObjectId», потому что он равен нулю.

Ответ №1:

Я решил проблему, вызвав функцию с помощью

Добавить элемент ‘Основной’ ‘Дочерний’