首页 > 解决方案 > 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 凭据

标签: azurepowershellazure-runbookrunbook

解决方案


使用 Github 上的代码为模块 Click-Cli 回溯错误消息。不得不更改证书并将新证书导入个人/机器商店。

此外,从 QlikServer 外部运行时的默认用户名是 domain\Servername$,这意味着您必须更改 QlikSense 中帐户的权限以允许其执行任务。

一路添加正确的证书后,如果您使用详细日志记录归档,则可以看到名称。


推荐阅读