Commvaultバックアップの操作にREST APIを使うことができる。
・Commvault V11SP24の「REST API Overview」
・Commvault Rest APIの出力サンプル群
ログインして、指定したクライアントのサブクライアント情報を取得するPowerShellで作成してみた。
# CommCellユーザ情報
$restapiuser="admin"
$restapipasswd="パスワード"
# REST APIで使用するURL
# どちらを使うかについて https://documentation.commvault.com/11.24/expert/45592_available_web_services_for_rest_api.html
#$restapiurlbase="http://~:81/SearchSvc/CVWebService.svc/"
$restapiurlbase="http://~/webconsole/api/"
# 検索用文字列
$clientname="クライアント名"
# CommCell環境にログイン
$restapipasswdbase64=[Convert]::ToBase64String(([System.Text.Encoding]::Default).GetBytes($restapipasswd))
$headers=@{
"Accept"="application/json"
"Content-Type"="application/json"
}
$loginReq = @{
username=$restapiuser
password=$restapipasswdbase64
}
$loginresponse=Invoke-RestMethod -Method post -Uri $($restapiurlbase+"Login") -Body $($loginReq|ConvertTo-Json) -ContentType 'application/json' -Headers $headers
# 指定クライアントのサブクライアント情報取得
$headers=@{
"Accept"="application/json"
"Authtoken"=$loginresponse.token
}
$response=Invoke-RestMethod -Method Get -Uri $($restapiurlbase+"Subclient?clientName="+$clientname) -Headers $headers
# $response.subClientProperties.subClientEntity にサブクライアントの情報が入っているが
# 複数のサブクライアントがあると $response.subClientProperties.subClientEntity.subclientName が複数行になるので注意
# 表示
$response.subClientProperties.subClientEntity | ForEach-Object {
$subcliententory=$_
Write-host $subcliententory
}
# CommCellログアウト
$headers=@{
"Accept"="application/json"
"Authtoken"=$loginresponse.token
}
$logoutresponse=Invoke-RestMethod -Method post -Uri $($restapiurlbase+"Logout") -Headers $headers
ただ、このスクリプトを使うとCommvault Event viewerに表示されるログイン情報が「Machine:unknown Locale:unknown」となる。
これを設定できるか調べて見たが、無いように思える。