こんにちは。tkです。
今回はAPIシリーズの3回目です。
以前の記事はこちら↓↓
・Workspace ONE UEM をAPIで操作する(Workspace ONE UEM Explorer)
・Workspace ONE UEM をAPIで操作する(Postman)
PoserShellでWorkspace ONEにAPIを実行する方法については、以下英語のブログで紹介されていますので、これを参考に今回検証していきたいと思います!
How to Use REST API in Workspace ONE UEM (with PowerShell) - Brooks Peppin's Blog
【UEM:認証用 AOuthトークン作成】
Postmanの時はAccessの認証用にトークンを作成しました。
UEMの認証用にトークンを作成します。
①Workspace ONE UEMにログインし、[グループと設定] > [構成] > [OAuth クライアント管理] を選択する。
②「追加」をクリックする。
③「新しいクライアントを登録」で以下の通り設定し、「保存」をクリックする。
④クライアントIDとクライアントシークレットが表示されるため、メモ帳などにコピーする。
※クライアントシークレットは後から確認できないため注意
⑤一覧に作成したトークンが表示される。
【PowerShell でUEMにAPIを実行する】
UEMユーザー情報を取得するサンプルスクリプト
PowerShellでは、「Invoke-WebRequest」コマンドを使います。
REST API による UEM 機能の使用 (vmware.com)
<# 環境変数の指定。接続先となるUEMとそのトークン情報 #>
$server = "https://cnXXXX.awmdm.com"
$client_id = "クライアントID"
$client_secret = "クライアントシークレット"
$access_token_url = "https://na.uemauth.vmwservices.com/connect/token"
<# リクエストパラメータ #>
$body = @{
grant_type = "client_credentials"
client_id = $client_id
client_secret = $client_secret
}
try {
$response = Invoke-WebRequest -Method Post -Uri $access_token_url -Body $body -UseBasicParsing
$response = $response | ConvertFrom-Json
$oauth_token = [string]$($response.access_token)
}
catch {
$ErrorMessage = $PSItem | ConvertFrom-Json
Write-Log "Failed to create OAuth Token for: $env with following ErrorCode: $($ErrorMessage.errorCode) - $($ErrorMessage.message)" -ForegroundColor Red
}
<# ヘッダー情報。認証情報とデータ形式 #>
$header_v1 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=1";
"Content-Type" = "application/json"
}
$header_v2 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=2";
"Content-Type" = "application/json"
}
<# コマンドを実行 #>
$UEMusers = Invoke-RestMethod -Uri "$server/API/system/users/search?" -Method Get -Headers $header_v1
<# 情報を整形して出力 #>
$UEMusers.Users | ft -AutoSize -Wrap -Property * | Out-file -filepath C:\temp\UEM.txt -width 10000v1とv2両方のヘッダーで試して、出力結果を見たほうがいいかもしれません。
UEMユーザー情報を取得するサンプルスクリプト2
<# ユーザー名とIDだけ出力 #>
$UEMusers.Users | ft UserName,Id
UserName Id
-------- --
User01 @{Value=150500}
User02 @{Value=150501}
User03 @{Value=150499}
User04 @{Value=150691}
User05 @{Value=150778}
<# IDだけ出力 #>
$UEMusers.Users.Id
Value
-----
150500
150501
150499
150691
150778
150747
150746
150877
151641
150670
<# テーブルのヘッダを消し、空行を削除する #>
$UEMusers.Users.Id | ft -hide | Out-String -Stream | ?{$_ -ne ""}
150500
150501
150499
150691
150778
150747
150746
150877
151641
150670UEMユーザー情報を取得するサンプルスクリプト3
対象のIDに関する情報をGETするスクリプトですが、Deleteなどいろいろな使い方ができそうです。
$list = $UEMusers.Users.Id | ft -hide | Out-String -Stream | ?{$_ -ne ""}
foreach ( $userid in $list)
{
Invoke-RestMethod -Uri "$server/API/system/users/$userid" -Method Get -Headers $header_v1
}
【PowerShell でAccessにAPIを実行する】
<# 環境変数の指定。接続先となるAccessとそのトークン情報 #>
$server = "https://XXXXXXXXXX.vidmpreview.com"
$client_id = "AccessのサービスクライアントトークンID"
$client_secret = "Accessのクライアントシークレット"
$access_token_url = "https://XXXXXXXXXX.vidmpreview.com/SAAS/auth/oauthtoken"
<# リクエストパラメータ #>
$body = @{
grant_type = "client_credentials"
client_id = $client_id
client_secret = $client_secret
}
try {
$response = Invoke-WebRequest -Method Post -Uri $access_token_url -Body $body -UseBasicParsing
$response = $response | ConvertFrom-Json
$oauth_token = [string]$($response.access_token)
}
catch {
$ErrorMessage = $PSItem | ConvertFrom-Json
Write-Log "Failed to create OAuth Token for: $env with following ErrorCode: $($ErrorMessage.errorCode) - $($ErrorMessage.message)" -ForegroundColor Red
}
<# ヘッダー情報。認証情報とデータ形式 #>
$header_v1 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=1";
"Content-Type" = "application/json"
}
$header_v2 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=2";
"Content-Type" = "application/json"
}
<# コマンドを実行 #>
$accessusers = Invoke-RestMethod -Uri "$server/SAAS/jersey/manager/api/scim/Users?" -Method Get -Headers $header_v1
<# 情報を整形して出力 #>
$accessusers.Resources | ft -AutoSize -Wrap -Property * | Out-file -filepath C:\temp\access.txt -width 10000




