この項のスクリプトを使用して、事前定義済役割割当てをある環境から別の環境にクローニングします。これらのスクリプトを実行するには、両方の環境のサービス管理者の役割が必要です。
Windows
replicatepredefineroles.ps1を作成します。
# Replicate predefined roles 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]$emailtoaddress
)
$roleassignmentreport="roleassignmentreport.csv"
function replicateroles
{
    # 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
    echo "Creating files to use with epmautomate assignRoles"
    Get-Content ${roleassignmentreport} | ForEach-Object {
        $user=$_.split(',')[0]
        $rolename=$_.split(',')[4]
        if ($rolename -like '*User' -And $rolename -notlike '*Power User') {
            $rolenamearray=$rolename.split(" ")
            $arraysize=$rolenamearray.count
            $rolename="User"
            if ($arraysize.count -le 2) {
                echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
            }
        }
        elseif ($rolename -like '*Viewer') {
            $rolenamearray=$rolename.split(" ")
            $arraysize=$rolenamearray.count
            $rolename="Viewer"
            if ($arraysize -le 2) {
                echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
            }
        }
        elseif ($rolename -like '*Power User') {
            $rolenamearray=$rolename.split(" ")
            $arraysize=$rolenamearray.count
            $rolename="Power User"
            if ($arraysize -le 3) {
                echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
            }
        }
        elseif ($rolename -like '*Service Administrator') {
            $rolenamearray=$rolename.split(" ")
            $arraysize=$rolenamearray.count
            $rolename="Service Administrator"
            if ($arraysize -le 3) {
                echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv" 
            }
        }
        elseif ($rolename -like 'Planner') {
            echo "${user}" | Out-File -Append -Encoding "UTF8" "role-User.csv" 
        }
    }
    # Add header and format
    $rolefiles = Get-ChildItem "role-*.csv"
    foreach ($rolefile in $rolefiles) {
        $rolefilecontent = Get-Content "$rolefile" 
        $headerline='User Login'
        Set-Content $rolefile -value $headerline,$rolefilecontent
        $txt = [io.file]::ReadAllText("$rolefile") -replace "`r`n","`n"
        [io.file]::WriteAllText("$rolefile", $txt)
    }
    # epmautomate login Target App as an IDM Admin
    echo "Logging into target application at ${epmurltarget}"
    epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    $rolefiles = Get-ChildItem "role-*.csv"
    foreach ($rolefile in $rolefiles) {
        $rolenamecsv=$rolefile.BaseName.split('-')[1]
        $rolename=$rolenamecsv.split('.')[0]
        epmautomate deletefile "${rolefile}" | Out-Null
        echo "Uploading file ${rolefile}"
        epmautomate uploadfile "${rolefile}"
        echo "Assigning ${rolename} roles"
        epmautomate assignRole "role-${rolename}.csv" "${rolename}"
        epmautomate deletefile "role-${rolename}.csv"
    }
    epmautomate logout
    rm deletefile*.log | Out-Null
}
function init
{
    # delete ${role}.csv files
    $rolefiles = Get-ChildItem "role-*.csv"
    foreach ($rolefile in $rolefiles) {
        $rolefileexists=Test-Path $rolefile
        if ($rolefileexists) {
            rm "${rolefile}"
        }
    }
}
echo "Replicate predefined roles script started"
init
replicateroles
echo "Replicate predefined roles script completed"
replicatepredefineroles.batを作成します。
@ECHO OFF SET thisdir=%~dp0 SET scriptpath=%thisdir%replicatepredefinedroles.ps1 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 emailtoaddress="<EMAIL_TO_ADDRESS>" REM ----------------------- 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%' -emailtoaddress '%emailtoaddress%'"
replicatepredefineroles.batを更新します。このファイルのプロパティに設定する必要がある値の詳細は、次の表を参照してください。
replicatepredefineroles.batの更新
| パラメータ | 説明 | 
|---|---|
epmusersource | 
ソース環境のアイデンティティ・ドメイン管理者とサービス管理者の役割を持つユーザーのユーザー名。
 例: Windows:  Linux/UNIX:   | 
epmpwdsource | 
ユーザーのパスワードまたは暗号化されたパスワード・ファイルの絶対パス。
 例: Windows:  Linux/UNIX:   | 
epmurlsource | 
ユーザーのコピー元の環境のURL。
 例: Windows:  Linux/UNIX:   | 
epmidentitydomainsource | 
ソース環境で使用されるアイデンティティ・ドメインの名前。
 例: Windows:  Linux/UNIX:   | 
epmusertarget | 
ターゲット環境のアイデンティティ・ドメイン管理者とサービス管理者の役割を持つユーザーのユーザー名。
 例: Windows:  Linux/UNIX:   | 
epmpwdtarget | 
ユーザーのパスワードまたは暗号化されたパスワード・ファイルの絶対パス。
 例: Windows:  Linux/UNIX:   | 
epmurltarget | 
ユーザーを作成する環境のURL。
 例: Windows:  Linux/UNIX:   | 
epmidentitydomaintarget | 
ターゲット環境で使用されるアイデンティティ・ドメインの名前。
 例: Windows:  Linux/UNIX:   | 
proxyserverusername | 
インターネットへのアクセスを制御するプロキシ・サーバーとの安全なセッションを認証するユーザー名。使用しない場合は、このプロパティをすべて削除してください。
 例: Windows:  Linux/UNIX:   | 
proxyserverpassword | 
プロキシ・サーバーに対してユーザーを認証するパスワード。使用しない場合は、このプロパティをすべて削除してください。
 例: Windows:  Linux/UNIX:   | 
proxyserverdomain | 
プロキシ・サーバーに定義されているドメインの名前。使用しない場合は、このプロパティをすべて削除してください。
 例: Windows:  Linux/UNIX:   | 
emailtoaddress | 
オプションで、役割の割当レポートが送信される電子メール・アドレス。この値が指定されている場合のみ、レポートが電子メールで送信されます。
 例:   | 
Linux/UNIX
replicatepredefineroles.shを作成します。
#!/bin/sh
# 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>"
emailtoaddress="<EMAIL TO ADDRESS>"
#-----------------------
roleassignmentreport="roleassignmentreport.csv"
export JAVA_HOME=${javahome}
replicateroles()
{
    # epmautomate login Source App as an DM 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
    echo "Creating files to use with epmautomate assignRoles"
    while read line
    do
        user=$(echo "${line}" | cut -d',' -f1)
        rolename=$(echo "${line}" | cut -d',' -f5)
        if [[ "$rolename" == *"User" ]] && [[ "$rolename" != "*Power User" ]]
        then
            count=$(echo "${rolename}" | wc -w);
            rolename="User"
            if [[ $count -le 2 ]]
            then
                echo "${user}" >> "role-${rolename}.csv" 
            fi
        elif [[ "$rolename" == *"Viewer" ]] 
        then
            count=$(echo "${rolename}" | wc -w);
            rolename="Viewer"
            if [[ $count -le 2 ]]
            then
                echo "${user}" >> "role-${rolename}.csv" 
            fi
        elif [[ "$rolename" == *"Power User" ]] 
        then
            count=$(echo "${rolename}" | wc -w);
            rolename="Power User"
            if [[ $count -le 3 ]]
            then
                echo "${user}" >> "role-${rolename}.csv" 
            fi
        elif [[ "$rolename" == *"Service Administrator" ]] 
        then
            count=$(echo "${rolename}" | wc -w);
            rolename="Service Administrator"
            if [[ $count -le 3 ]]
            then
                echo "${user}" >> "role-${rolename}.csv" 
            fi
        elif [[ "$rolename" == "Planner" ]] 
        then
                echo "${user}" >> "role-User.csv" 
        fi
    done < ${roleassignmentreport}
    # write header line
    for f in role-*.csv
    do
        sed -i '1iUser Login' "$f"
    done
    # epmautomate login Target App as an IDM Admin
    echo "Logging into target application at ${epmurltarget}"
    ${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
    for rolefile in role-*.csv
    do
        rolenamecsv=$(echo "$rolefile" | cut -d'-' -f2)
        rolename=$(echo "$rolenamecsv" | cut -d'.' -f1)
        ${epmautomatescript} deletefile "${rolefile}" > /dev/null 2>&1
        echo "Uploading file ${rolefile}"
        ${epmautomatescript} uploadfile "${rolefile}"
        echo "Assigning roles"
        ${epmautomatescript} assignrole "${rolefile}" "${rolename}"
        ${epmautomatescript} deletefile "${rolefile}"
    done
    ${epmautomatescript} logout
    rm deletefile*.log > /dev/null 2>&1
}
init()
{
    # delete role-${role}.csv files
    for f in role-*.csv
    do
        rm "$f" > /dev/null 2>&1
    done
}
echo "Replicate predefined roles script started"
init
replicateroles
echo "Replicate predefined roles script completed"
replicatepredefineroles.shを更新します。指定する必要がある値の詳細は、前の表を参照してください。さらに、次のプロパティの値を指定する必要があります:
javahome: Javaがインストールされているディレクトリへの絶対パス。epmautomatescript: epmautomatescript.shの場所。例: epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"