azure - Runbook 将 Powershell 运行为 azure 帐户
问题描述
我在订阅/rg 中的 VM 上获得了一个脚本,该脚本运行一个名为 Qlik-Cli 的 ps 模块,它使用证书和登录名。
证书存储在服务帐户的本地存储中,而不是选择,产品如何工作。我需要通过一个 powershell runbook 来触发这个。
为了使它工作,我需要使用服务帐户触发它,否则它不会找到证书。
这是我们要安排的事情,所以必须以这种方式完成。
我怎样才能以这种方式运行它,还是不可能?谷歌搜索时我找不到任何好的选择。
> Import-Module -Name Qlik-Cli
> [Net.ServicePointManager]::SecurityProtocol =
> [Net.SecurityProtocolType]::Tls12 $logpath =
> "E:\Tools\Scripts\log.txt" get-childitem cert:\currentuser\My\ |
> where {$_.Thumbprint -eq '"thumbprint"'} |
> Connect-Qlik "DNS" -UserName
> "user" -TrustAllCerts -verbose 4>&1 | Out-File
> -Append $logpath Start-QlikTask -id df9dfa2f-32ca-4db4-bdce-15ad924fd59f -verbose 4>&1 | Out-File -Append
> $logpath
运行手册中的脚本:
$ServicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'
Add-AzAccount -ServicePrincipal -TenantId $ServicePrincipalConnection.TenantId -ApplicationId $ServicePrincipalConnection.ApplicationId -CertificateThumbprint $ServicePrincipalConnection.CertificateThumbprint
$rgname ="Resource-Group"
$vmname ="Virtual machine name"
$ScriptToRun = "E:\Tools\Scripts\Tasktrigger.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
Invoke-AzVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Remove-Item -Path ScriptToRun.ps1
当我执行运行手册时,脚本(本地脚本)中的日志说的是它找不到不奇怪的证书。
原始输出:在当前用户存储中找到 0 个证书在本地机器存储中找到 0 个证书未找到有效证书,使用 Windows 凭据
解决方案
使用 Github 上的代码为模块 Click-Cli 回溯错误消息。不得不更改证书并将新证书导入个人/机器商店。
此外,从 QlikServer 外部运行时的默认用户名是 domain\Servername$,这意味着您必须更改 QlikSense 中帐户的权限以允许其执行任务。
一路添加正确的证书后,如果您使用详细日志记录归档,则可以看到名称。
推荐阅读
- c - 在 C 中创建新结构时如何正确分配足够的内存(malloc)?
- android-studio - 我可以在Android Studio的不同功能中两次初始化相同的图像吗
- python - python是否缓存或重新计算while循环操作的函数调用
- go - 是否可以在结构之间进行转换?
- c# - 如何根据可以在检查器中分配的变量将组件添加到游戏对象?
- python - Python,高效清除大列表
- php - Netsuite 从内部 ID 数组中获取 SalesOrder 事务
- r - 使用 R 附加具有不同行号的列
- react-native - 无法让 headerBackImage 在 react-navigation 5.xx 中工作
- c# - ERR_CONNECTION_REFUSED 使用 Ajax 调用 api 时出错