创建使用 PowerShell 调用 vRealize Automation 项目 API 的示例脚本。

过程

  1. 在本地计算机上,打开命令行 shell。
  2. 创建 vro-powershell-vra 文件夹。
    mkdir vro-powershell-vra
  3. 导航到 vro-powershell-vra 文件夹。
    cd vro-powershell-vra
  4. 创建名为 handler.ps1 的 PowerShell 脚本。
    touch handler.ps1
    handler.ps1 脚本必须定义一个接受以下两个参数的函数:vRealize Orchestrator 工作流运行的上下文和绑定的 vRealize Orchestrator 输入。
    function Handler {
      Param($context, $inputs)
     
     
      $inputsString = $inputs | ConvertTo-Json -Compress
      Write-Host "Inputs were $inputsString"
    }
    注: 使用标准日志记录库时,在使用脚本的操作中记录的所有内容也会显示在工作流日志中。脚本的输入和返回内容必须在 vRealize Orchestrator 客户端中具有已配置的相应输入参数和返回类型。例如,脚本中的 vRAUrl 输入必须在 vRealize Orchestrator 客户端中具有名为 vRAUrl 的相应输入参数。同样,如果脚本返回字符串值,则在 vRealize Orchestrator 客户端中配置的返回类型也必须是字符串类型。如果操作返回复合类型对象,则可以使用 PropertiesComposite Type 返回类型。
  5. 安装 PowerShell 断言模块。
    重要事项: 第三方依赖关系模块必须安装在主 vro-powershell-vra 脚本文件夹中的根级别文件夹中。在此用例中,请为您的断言模块创建一个 Modules 文件夹。
    1. 创建 Modules 文件夹。
      mkdir Modules
    2. 安装断言模块。
      pwsh -c "Save-Module -Name Assert -Path ./Modules/ -Repository PSGallery"
  6. 将断言模块添加到 handler.ps1 脚本中。
    Import-Module Assert
     
    function Handler {
      Param($context, $inputs)
     
     
      $inputsString = $inputs | ConvertTo-Json -Compress
      Write-Host "Inputs were $inputsString"
    }
  7. 创建对使用 Invoke-RestMethod cmdlet 的 vRealize Automation 项目 API 的 GET 请求。
    $token = ''
    $vRAUrl = ''
    $projectsUrl = $vRAUrl + "/project-service/api/projects"
    $response = Invoke-RestMethod $projectsUrl + '/iaas/api/projects' -Headers @{'Authorization' = "Bearer $token"} -Method 'GET'
     
    Write-Host "Got response: $response"
  8. 定义 tokenvRAUrl 值。
    1. 使用 vRealize Automation 身份验证服务 API 检索访问令牌。请参见获取 vRealize Automation API 的访问令牌
    2. 添加 Assert-NotNullAssert-Type 断言模块属性。
      $token | Assert-NotNull
      $token | Assert-Type String
    3. 对于 vRAUrl 值,请定义脚本,使其使用具有相同名称的 vRealize Orchestrator 输入参数。
      $vRAUrl = $inputs.vRAUrl
    4. 将新值添加到 handler.ps1 文件中。
      Import-Module Assert
      $ErrorActionPreference = "Stop"
      function Handler {
        Param($context, $inputs)
        $token = "ACCESS_TOKEN"
        $token | Assert-NotNull
        $token | Assert-Type String
        $vRAUrl = $inputs.vRAUrl
        $projectsUrl = $vRAUrl + "/project-service/api/projects"
        $response = Invoke-RestMethod $projectsUrl -Headers @{'Authorization' = "Bearer $token"} -Method 'GET'
       
        Write-Host "Got response: $response"
       
        return $response
      }
      注: 由于来自 vRealize Automation 项目 API 的响应为 JSON 格式,因此请对 vRealize Orchestrator 操作使用 PropertiesComposite Type 返回类型。
  9. 创建一个 ZIP 包,其中包含 handler.ps1 文件和断言模块的 Modules 文件夹。
    
    zip -r --exclude=*.zip -X vro-powershell-vra.zip .

后续步骤

将 PowerShell 脚本导入到 vRealize Orchestrator 操作。请参见在 vRealize Orchestrator 客户端中创建操作