New-AzureADMSInvitation только для пользователей, которые еще не приглашены - PullRequest
0 голосов
/ 11 октября 2018

ломал мне голову этим.В основном у моей компании есть материнская компания, и нам нужно подключиться к их AzureAD.Они предоставили нам учетную запись службы, и я создал сценарий для прохождения CSV и пригласил всю компанию, но я пытаюсь создать сценарий, который я могу запланировать, который приглашает только пользователей, которые еще не были приглашены, пройдя черезнаше Azure AD.

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

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

# Import Modules
Import-Module MSOnline
Import-Module AzureAD


# Authentication details for your AzureAD
$365Username = "email"
$365Password = "password"
$365pass = ConvertTo-SecureString -AsPlainText $365Password -Force
$365creds = New-Object System.Management.Automation.PSCredential -ArgumentList $365Username,$365pass
connect-msolservice -Credential $365creds


# Authentication details of Service Account
$Username = "service account email"
$Password = "service account password"
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Connect-AzureAD -Credential $creds -TenantId "tenantID"


# Get your users and email addresses
$Users = Get-MsolGroupMember -ALL -GroupObjectId groupID -MemberObjectTypes User
$emails = $users.EmailAddress


# Find all users already invited
$adazure_user = foreach($email in $emails)
{
    Get-AzureADUser -ErrorAction SilentlyContinue -ObjectId "$($email -replace "@", "_")#EXT#@tenant.onmicrosoft.com"

}


# Invite users who haven't been invited yet
foreach ($email in $emails)
{
    #If the user exists, do nothing
    if($adazure_user){}
    #Else if they don't exist, send the invite
    else
    {
        New-AzureADMSInvitation -InvitedUserEmailAddress $email -InviteRedirectUrl https://myapps.microsoft.com -SendInvitationMessage $false

        Set-AzureADuser -ObjectId $users.Name"."$users.Surname"_domain.com#EXT#@tenant.onmicrosoft.com” -GivenName $users.Name -Surname $users.Surname
    }
}

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 11 октября 2018

Я наконец нашел время, чтобы попытаться понять ваш код.Это решение должно работать.

# Authentication details of Service Account
$Username = "service account email"
$Password = "service account password"
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Connect-AzureAD -Credential $creds -TenantId "tenantID"


# Get your users and email addresses
$Users = Get-MsolGroupMember -ALL -GroupObjectId groupID -MemberObjectTypes User
$emails = $users.EmailAddress

$nonInvited = New-Object -TypeName "System.Collections.ArrayList"

# Traverses all emails and stores those that wasn't found in $nonInvited
foreach($email in $emails)
{
    $userTemp = $null

    try {
        $userTemp = Get-AzureADUser -ErrorAction SilentlyContinue -ObjectId "$($email -replace "@", "_")#EXT#@tenant.onmicrosoft.com"
    }
    catch {}

    if($null -eq $userTemp) {
        $nonInvited.Add($email)
    }
}


# Invite users who haven't been invited yet
foreach ($email in $nonInvited)
{

        New-AzureADMSInvitation -InvitedUserEmailAddress $email -InviteRedirectUrl https://myapps.microsoft.com -SendInvitationMessage $false

        Set-AzureADuser -ObjectId $users.Name"."$users.Surname"_domain.com#EXT#@tenant.onmicrosoft.com” -GivenName $users.Name -Surname $users.Surname

}

Когда я проводил тестирование, Get-AzureADUser плохо проваливался, когда искал пользователя, которого не смог найти.Вот почему я использую раздел try {} catch {}, чтобы выручить меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...