удалите назначение ролей Azure для группы пользователей в разных подписках - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь удалить назначенные роли для группы пользователей из файла CSV:

$Users = Import-Csv 'C:\Users.csv' | select -ExpandProperty SignInName

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

 foreach ($user in $Users)
 {
   $Users = (Get-AzureRmADUser -UserPrincipalName $User).Id
 }

К сожалению, он получает только идентификатор 1 пользователя, а не всех пользователей в таблице. Наконец, когда я пытаюсь удалить назначение роли для сгенерированного результата, используя следующий командлет:

Remove-AzureRmRoleAssignment -ObjectId $Users -RoleDefinitionName "*Owner*"

Я получаю следующую ошибку: Remove-AzureRmRoleAssignment: предоставленная информация не сопоставляется с назначением роли Пожалуйста, сообщите, почему я получаю только одного пользователя после цикла, а также, почему я получаю эту ошибку.

UPDATE Чтобы скрипт мог удалять пользователей из разных подписок, я немного изменил скрипт

$Users = Import-Csv 'C:\Users.csv' | select -ExpandProperty SignInName
$Subs = (Import-Csv 'C:\Users.csv').SubscriptionId

foreach ($sub in $Subs)
{
    Select-AzureRmSubscription -Subscription $sub
    foreach ($user in $Users)
     {
        $OID = (Get-AzureRmADUser -UserPrincipalName $User).Id
        Remove-AzureRmRoleAssignment -ObjectId $OID.Guid -RoleDefinitionName Owner -Scope /subscriptions/$sub -Verbose
     }
}

К сожалению, я получаю следующую ошибку: Remove-AzureRmRoleAssignment: предоставленная информация не сопоставляется с назначением роли.

1 Ответ

0 голосов
/ 05 июля 2018

РЕДАКТИРОВАТЬ: Так что из ваших правок я не думаю, что вы поняли ForEach. Я постараюсь объяснить ваше редактирование ForEach для вас в конце. Но сейчас это должно работать на основе вашей информации.

$Users = Import-Csv 'C:\Users.csv'

foreach ($user in $Users){
    Remove-AzureRmRoleAssignment -RoleDefinitionName Owner -SignInName $_.SignInName -Scope /subscriptions/$_.SubscriptionId -Verbose
}

Теперь проблема с вашим отредактированным кодом.

# The CSVs can be combined down to one and specific data pulled from them when needed.
$Users = Import-Csv 'C:\Users.csv' | select -ExpandProperty SignInName
$Subs = (Import-Csv 'C:\Users.csv').SubscriptionId

# This says for each object in variable $subs...
foreach ($sub in $Subs)
{
    # Select the subscription - But do nothing with it cuz herp.
    Select-AzureRmSubscription -Subscription $sub
    foreach ($user in $Users)
     {
        # Searches for the ObjectID of a User based on their SignInName (Email) and assigns to variable
        $OID = (Get-AzureRmADUser -UserPrincipalName $User).Id
        Remove-AzureRmRoleAssignment -ObjectId $OID.Guid -RoleDefinitionName Owner -Scope /subscriptions/$sub -Verbose
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...