將使用者從某個識別網域複製到另一個識別網域

使用本節中的指令碼將使用者從某個識別網域複製到另一個識別網域。執行這些指令碼的使用者必須在來源與目標環境中具有識別網域管理員服務管理員角色。

Windows

複製本節中的指令碼,以建立 replicateusers.batreplicateusers.ps1

  1. 複製以下指令碼來建立 replicateusers.ps1

    # Replicate users script
    
    param(
      [string]$epmusersource,
      [string]$epmpwdsource,
      [string]$epmurlsource,
      [string]$epmidentitydomainsource,
      [string]$epmusertarget,
      [string]$epmpwdtarget,
      [string]$epmurltarget,
      [string]$epmidentitydomaintarget,
      [string]$proxyserverusername,
      [string]$proxyserverpassword,
      [string]$proxyserverdomain,
      [string]$userpassword,
      [string]$resetpassword,
      [string]$emailtoaddress
    )
    
    $roleassignmentreport="roleassignmentreport.csv"
    $usersreport="users.csv"
    
    echo "Replicate users script started"
    
    
    # delete existing reports
    $roleassignmentreportexists=Test-Path $roleassignmentreport
    if ($roleassignmentreportexists) {
        rm $roleassignmentreport 2>&1 | out-null
    }
    
    $usersreportexists=Test-Path $usersreport
    if ($usersreportexists) {
        rm $usersreport 2>&1 | out-null
    }
    
    # epmautomate login Source App as an IDM Admin
    echo "Logging into source application at ${epmurlsource}"
    epmautomate login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    echo "Creating role assignment report: ${roleassignmentreport}"
    epmautomate roleAssignmentReport ${roleassignmentreport}
    if (${emailtoaddress} -match "@") {
        epmautomate.bat sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport}
    echo "Downloading role assignment report"
    epmautomate downloadfile ${roleassignmentreport}
    epmautomate deletefile ${roleassignmentreport}
    epmautomate logout
    
    # Create users report
    Get-Content ${roleassignmentreport} | ForEach-Object {
        $user=$_.split(',')[0]
        $firstname=$_.split(',')[1]
        $lastname=$_.split(',')[2]
        $email=$_.split(',')[3]
    
        if ($firstname -eq "First Name") {
            return
        } else {
            echo "${firstname},${lastname},${email},${user}" >> ${usersreport}
        }
    
    }
    
    Get-Content -Path "${usersreport}" | Sort-Object -Unique > "${usersreport}.tmp"
    mv -Force "${usersreport}.tmp" "${usersreport}"
    $userheader="First Name,Last Name,Email,User Login"
    "${userheader}`r`n" + (Get-Content $usersreport -Raw) | Set-Content $usersreport
    
    # epmautomate login Target App as an IDM Admin
    echo "Logging into target application at ${epmurltarget}"
    epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    epmautomate deletefile ${usersreport} | Out-Null
    echo "Uploading file ${usersreport}"
    epmautomate uploadfile ${usersreport}
    echo "Adding users"
    epmautomate addUsers ${usersreport} userPassword=${userpassword} resetPassword=${resetpassword}
    epmautomate deletefile ${usersreport}
    epmautomate logout
    rm deletefile*.log | Out-Null
    echo "Replicate users script completed"
    
  2. 複製以下指令碼來建立 replicateusers.bat
    @ECHO OFF
    SET thisdir=%~dp0
    SET scriptpath=%thisdir%replicateusers.ps1
    SET paramRequiredMessage=Syntax: replicateusers.bat "USER_PASSWORD"
    
    REM USER DEFINED VARIABLES
    REM -----------------------
    set epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>"
    set epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>"
    set epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>"
    set epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>"
    set epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>"
    set epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>"
    set epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>"
    set epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>"
    set proxyserverusername="<PROXY SERVER USER NAME>"
    set proxyserverpassword="<PROXY SERVER PASSWORD>"
    set proxyserverdomain="<PROXY SERVER DOMAIN>"
    set resetpassword=false
    set emailtoaddress="<EMAIL_TO_ADDRESS>"
    REM -----------------------
    
    if "%~1" == "" (
            echo USER_PASSWORD is missing. This is used to set the default password for the replicated users.
            echo %paramRequiredMessage%
            exit /b 1
      )
    
    PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%scriptpath%' -epmusersource '%epmusersource%' -epmpwdsource '%epmpwdsource%' -epmurlsource '%epmurlsource%' -epmidentitydomainsource '%epmidentitydomainsource%' -epmusertarget '%epmusertarget%' -epmpwdtarget '%epmpwdtarget%' -epmurltarget '%epmurltarget%' -epmidentitydomaintarget '%epmidentitydomaintarget%' -proxyserverusername '%proxyserverusername%' -proxyserverpassword '%proxyserverpassword%' -proxyserverdomain '%proxyserverdomain%' -userpassword '%~1' -resetpassword '%resetpassword%' -emailtoaddress '%emailtoaddress%'"
    
  3. 更新 replicateusers.bat。查看下列表格以瞭解您必須指定的值。
    參數 描述
    epmusersource 在來源環境中具有識別網域管理員服務管理員角色的使用者名稱。

    範例:

    Windows:set epmusersource="jDoe"

    Linux/UNIX:epmusersource="jDoe"

    epmpwdsource 使用者的密碼或加密密碼檔案的絕對路徑。

    範例:

    Windows:set epmpwdsource="Example"

    Linux/UNIX:epmpwdsource="Example"

    epmurlsource 要複製使用者的來源環境 URL。

    範例:

    Windows:set epmurlsource="https://example.oraclecloud.com"

    Linux/UNIX:epmurlsource="https://example.oraclecloud.com"

    epmidentitydomainsource 來源環境使用的識別網域名稱。

    範例:

    Windows:set epmidentitydomainsource="example_source_dom"

    Linux/UNIX:epmidentitydomainsource="example_source_dom"

    epmusertarget 在目標環境中具有識別網域管理員服務管理員角色的使用者名稱。

    範例:

    Windows:set epmusertarget="John.Doe"

    Linux/UNIX:set epmusertarget="John.Doe"

    epmpwdtarget 使用者的密碼或加密密碼檔案的絕對路徑。

    範例:

    Windows:set epmpwdtarget="Example1"

    Linux/UNIX:epmpwdtarget="Example1"

    epmurltarget 要建立使用者的環境 URL。

    範例:

    Windows:set epmurltarget="https://example.oraclecloud.com"

    Linux/UNIX:epmurltarget="https://example.oraclecloud.com"

    epmidentitydomaintarget 目標環境使用的識別網域名稱。

    範例:

    Windows:set epmidentitydomaintarget="example_source_dom"

    Linux/UNIX:epmidentitydomaintarget="example_target_dom"

    proxyserverusername 用於驗證代理伺服器 (控制網際網路存取) 之安全階段作業的使用者名稱。刪除這個特性出現的所有地方 (若未使用)。

    範例:

    Windows:set proxyserverusername="Example"

    Linux/UNIX:proxyserverusername="Example"

    proxyserverpassword 使用代理伺服器驗證使用者的密碼。刪除這個特性出現的所有地方 (若未使用)。

    範例:

    Windows:set proxyserverpassword="examplePwd"

    Linux/UNIX:proxyserverpassword="examplePwd"

    proxyserverdomain 為代理伺服器定義的網域名稱。刪除這個特性出現的所有地方 (若未使用)。

    範例:

    Windows:set proxyserverdomain="exampleDom"

    Linux/UNIX:proxyserverdomain="exampleDom"

    emailtoaddress (選擇性) 要傳送角色指派報表的目標電子郵件地址。只有當指定這個值的時候,才會透過電子郵件傳送報表。

    範例: emailtoaddress=john.doe@example.com

Linux/UNIX

  1. 複製下列指令碼以建立 replicateusers.sh
    #!/bin/sh
    
    userpassword="$1"
    
    # USER DEFINED VARIABLES
    #-----------------------
    javahome="<JAVA HOME>"
    epmautomatescript="<EPM AUTOMATE SCRIPT LOCATION>"
    epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>"
    epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>"
    epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>"
    epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>"
    epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>"
    epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>"
    epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>"
    epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>"
    proxyserverusername="<PROXY SERVER USER NAME>"
    proxyserverpassword="<PROXY SERVER PASSWORD>"
    proxyserverdomain="<PROXY SERVER DOMAIN>"
    resetpassword="false"
    emailtoaddress="<EMAIL TO ADDRESS>"
    #-----------------------
    
    roleassignmentreport="roleassignmentreport.csv"
    usersreport="users.csv"
    paramrequiredmessage='Syntax: replicateusers.sh "USER_PASSWORD"'
    
    export JAVA_HOME=${javahome}
    
    if [ "${userpassword}" == "" ]
    then
        echo "USER_PASSWORD is missing. This is used to set the default password for the replicated users."
        echo "${paramrequiredmessage}"
        exit
    fi
    
    echo "Replicate users script started"
    
    # epmautomate login Source App as an IDM Admin
    echo "Logging into source application at ${epmurlsource}"
    ${epmautomatescript} login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    echo "Creating role assignment report: ${roleassignmentreport}"
    ${epmautomatescript} roleAssignmentReport ${roleassignmentreport}
    if [[ "${emailtoaddress}" == *"@"* ]]
    then
        ${epmautomatescript} sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
    fi
    echo "Downloading role assignment report"
    ${epmautomatescript} downloadfile ${roleassignmentreport}
    ${epmautomatescript} deletefile ${roleassignmentreport}
    ${epmautomatescript} logout
    
    awk -F, '{print $2","$3","$4","$1}' ${roleassignmentreport} | (read -r; printf "%s\n" "$REPLY"; sort -u) > ${usersreport}
    
    # epmautomate login Target App as an IDM Admin
    echo "Logging into target application at ${epmurltarget}"
    ${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    ${epmautomatescript} deletefile ${usersreport} > /dev/null 2>&1
    echo "Uploading file ${usersreport}"
    ${epmautomatescript} uploadfile ${usersreport}
    echo "Adding users"
    ${epmautomatescript} addUsers ${usersreport} userPassword=${userpassword} resetPassword=${resetpassword}
    ${epmautomatescript} deletefile ${usersreport}
    ${epmautomatescript} logout
    rm deletefile*.log > /dev/null 2>&1
    
    echo "Replicate users script completed"
    
  2. 更新 replicateusers.sh。查看前面的表格以瞭解您必須指定之值的資訊。此外,您必須指定這些特性的值:
    • javahome:安裝 Java 之目錄的絕對路徑。
    • epmautomatescriptepmautomatescript.sh 的位置,例如 epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"