当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 检查 Azure AD 用户是否存在 PowerShell 函数

作者:精品下载站 日期:2024-12-14 07:13:23 浏览:13 分类:玩电脑

检查 Azure AD 用户是否存在 PowerShell 函数


在 AzureAD 中使用云用户编写脚本时,有些人可能会问如何检查 Azure AD 用户是否可用。在为客户编写脚本时,我还必须挑战这个场景。之后我想这可能是很多人需要的东西。这是我的解决方案,并提供了一些在您自己的脚本中使用它的解释。

检查正常的 Azure AD 用户

Function Check-AzureUser()
{
  param(
    [Parameter(Mandatory=$true)][string]$UserPrincipalName
 )
  ## check if azure AD connection is already established (if not quit function)
        try {
            Write-Host "Checking if Azure AD Connection is established..." -ForegroundColor Yellow
            $azconnect = Get-AzureADTenantDetail -ErrorAction Stop
            $displayname = ($azconnect).DisplayName
            write-host "Azure AD connection established to Tenant: $displayname " -ForegroundColor Green
            }
            catch {
            write-host "No connection to Azure AD was found. Please use Connect-AzureAD command" -ForegroundColor Red
            break
                    }
                    ## check if user exists in azure ad 
                    #check if upn is not empty    
                    if($UserPrincipalName){
                    $UserPrincipalName = $UserPrincipalName.ToString()
                    $azureaduser = Get-AzureADUser -All $true | Where-Object {$_.Userprincipalname -eq "$UserPrincipalName"}
                       #check if something found    
                       if($azureaduser){
                             Write-Host "User: $UserPrincipalName was found in $displayname AzureAD." -ForegroundColor Green
                             return $true
                             }
                             else{
                             Write-Host "User $UserPrincipalName was not found in $displayname Azure AD " -ForegroundColor Red
                             return $false
                             }
                    }
}

这个小东西有什么作用呢?

  1. 它检查是否有到 azure AD 的连接,如果没有,则取消功能(第 8 -17 行)
  2. 获取所有 Azure AD 用户并搜索作为参数给出的用户主体名称
  3. 如果找到用户,则返回“TRUE”,否则返回“FALSE”

那么如何使用这个呢?嗯,这很容易。执行完整的函数然后输入;

检查-AzureUser [email protected]

$user = "[email protected]"

if(Check-AzureUser $user){
 Write-Host "Do something with this user $user.." -ForegroundColor Green
}
else{
    Write-Host "Break the script" -ForegroundColor Red
}

[玩转系统] 检查 Azure AD 用户是否存在 PowerShell 函数

如果用户存在,该函数返回“TRUE”,因此可以在 IF 情况下使用。如示例所示。

检查 Azure AD 来宾用户

有时,人们想要检查是否存在特殊来宾用户以及他们的一些东西(可能会邀请 M365 租户内的其他任何东西加入团队),所以我编写了另一个函数来管理此类需求。

Function Check-AzureGuestUser(){
  param(
    [Parameter(Mandatory=$true)][string]$Mailaddress
  )

  try {
    Write-Host "Checking if Azure AD Connection is established..." -ForegroundColor Yellow
    $azconnect = Get-AzureADTenantDetail -ErrorAction Stop
    $displayname = ($azconnect).DisplayName
    write-host "Azure AD connection established to Tenant: $displayname " -ForegroundColor Green
    }
    catch {
    write-host "No connection to Azure AD was found. Please use Connect-AzureAD command" -ForegroundColor Red
    break
            }
            $guestuser = Get-AzureADUser -Filter "userType eq 'Guest'" -All $true | Where-Object {$_.Mail -eq "$Mailaddress"}

            if($guestuser){
              $guestemail = ($guestuser).Mail
              $guestupn = ($guestuser).Userprincipalname
                    #check if something found    
                 
                       Write-Host "GuestUser: $guestupn was found in $displayname AzureAD." -ForegroundColor Green
                       return $true
             }
              else{
                Write-Host "User $UserPrincipalName was not found in $displayname Azure AD " -ForegroundColor Red
                return $false
                }
}

这个函数有什么作用?和第一个几乎一样。

  1. 检查 Azure AD 连接
  2. 检查所有访客用户以及参数中的用户是否存在
  3. 查找访客的用户主体名称(及其邮件地址)
  4. 如果访客存在则返回“TRUE”,如果访客不存在则返回“FALSE”

这里的程序相同:

检查-AzureGuestUser [email protected]

另一个小用例。

$user = "[email protected]"

if(Check-AzureGuestUser $user){
 Write-Host "Do something with this user $user.." -ForegroundColor Green
}
else{
    Write-Host "Break the script" -ForegroundColor Red
}

[玩转系统] 检查 Azure AD 用户是否存在 PowerShell 函数

我认为这根本没有那么复杂。

将所有组合在一起

有时您需要知道用户是否存在并且是 azure 广告用户还是来宾(特别是如果您集成了多个域)
您可以使用这两个函数并将其放在一起来检查用户是否(无论是来宾还是 azure)用户存在)。看看魔术。

$azusers = "[email protected]","[email protected]","[email protected]","[email protected]"
foreach($azuser in $azusers ){
      if(Check-AzureUser -UserPrincipalName "$azuser"){
        Write-Host "$azuser is an AzureAD User" -ForegroundColor Green
       }
      else{
            if(Check-AzureGuestUser -Mailaddress "$azuser"){
              Write-Host "$azuser is a guest user"
            }
            else{
              Write-Host "User $azuser was not found in azure ad, checked azure ad user and guest user" -ForegroundColor Gray
            }
      }
}

[玩转系统] 检查 Azure AD 用户是否存在 PowerShell 函数

这段小代码检查它是否是 azure AD 用户,如果不是,它会检查来宾用户的邮件地址。在来宾或天蓝色广告用户中找不到用户,它表示找不到用户。这两个功能并不困难,但可以帮助最大限度地减少用户创建时的错误。

如果您喜欢这篇文章,请点击“有帮助”,否则请使用评论部分告诉我。

请继续关注并继续使用 Azure 脚本。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯