如何在DevOps流水线中免用户名/密码调用Invoke-ASCmd?
Invoke-ASCmd是否支持集成身份验证?
问题背景
当前在DevOps流水线中使用的Invoke-ASCmd代码如下:
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword) $delQuery = '{ "delete": { "object": { "database": "' + $asModelName + '" } } }' Invoke-ASCmd -Query $delQuery -TenantId $tenantId -Server $analysisServicesServer -Credential $credential
希望移除用户名/密码组合,改用集成身份验证,同时遇到以下错误:
Invoke-ASCmd : 身份验证失败:当用户界面不可用时,必须提供用户名和密码。
解答
- Invoke-ASCmd支持集成身份验证,但需要结合DevOps流水线的运行上下文配置正确的身份方式:
- 移除
-Credential参数,改用-Authentication Integrated参数(部分旧版本模块可能需要用-AuthType Integrated,可通过Get-Command Invoke-ASCmd -Syntax查看当前模块支持的参数) - 在DevOps流水线中需确保运行任务的账号拥有访问Analysis Services服务器的权限:
- 若使用微软托管代理,需配置服务主体或托管身份,并为其赋予Analysis Services的对应权限(如服务器管理员、数据库管理员)
- 若使用自托管代理,代理运行所在的机器账号需具备访问权限,此时直接用集成身份验证即可通过机器账号完成认证
- 调整后的示例代码:
- 移除
$delQuery = '{ "delete": { "object": { "database": "' + $asModelName + '" } } }' Invoke-ASCmd -Query $delQuery -TenantId $tenantId -Server $analysisServicesServer -Authentication Integrated
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

