【问题标题】:Can i export all azure active directory users to a MySQL database via a Runbook in azure automation?我可以通过 azure 自动化中的 Runbook 将所有 azure Active Directory 用户导出到 MySQL 数据库吗?
【发布时间】:2020-04-25 04:35:01
【问题描述】:

我可以通过 azure 自动化中的运行手册将所有 azure 活动目录用户导出到 MySQL 数据库吗? 有某种代码的人,例如只有用户的名字和姓氏?

【问题讨论】:

    标签: mysql azure azure-active-directory azure-automation


    【解决方案1】:

    是的,你可以。您的代码看起来像这样。

    ######## Connect to Azure AD ##################
    # Get Azure Run As Connection Name
    $connectionName = "AzureRunAsConnection"
    # Get the Service Principal connection details for the Connection name
    $servicePrincipalConnection = Get-AutomationConnection -Name $connectionName         
    
    # Logging in to Azure AD with Service Principal
    "Logging in to Azure AD..."
    Connect-AzureAD -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
    
    ######## Create CSV of all users ##################
    
    $users = Get-AzureADUser -All $true
    $userList = @()
    
    foreach ($user in $users){
        $userex = $user | Select-Object -ExpandProperty ExtensionProperty
        $userProperties = [ordered] @{
            accountEnabled=$user.GivenName
            userPrincipalName=$user.Surname
    
        }
        $u = new-object PSObject -Property $userProperties
        $userList += $u
    }
    $userList | Export-Csv  .\users.csv -NoTypeInformation
    
    $csvFullPath = Resolve-Path .\users.csv
    
    ######## Import CSV data into MySql ##################
    
    [system.reflection.assembly]::LoadWithPartialName("MySql.Data")
    $mysqlConn = New-Object -TypeName MySql.Data.MySqlClient.MySqlConnection
    $mysqlConn.ConnectionString = "SERVER=localhost;DATABASE=loadfiletest;UID=root;PWD=pwd"
    $mysqlConn.Open()
    $MysqlQuery = New-Object -TypeName MySql.Data.MySqlClient.MySqlCommand
    $MysqlQuery.Connection = $mysqlConn
    $MysqlQuery.CommandText = "LOAD DATA LOCAL INFILE '$csvFullPath' INTO TABLE loadfiletest.testtable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' LINES TERMINATED BY '\r\n' (GivenName, Surname)"
    $MysqlQuery.ExecuteNonQuery()
    

    【讨论】:

    • 嗨 Merill,感谢您的回答,但您也可以将其直接存储到数据库中而不是先存储到 CSV 中吗?
    • 您可以构造一个包含所有插入命令的字符串,然后在 CommandText 中使用它。这样您就可以在内存中完成所有操作,而无需写入本地文件。
    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多