运行book 运行 Powershell 添加 azure 帐号

Runbook Run Powershell as azure acccount

我在 subscription/rg 中的 VM 上获得了一个脚本,运行 是一个名为 Qlik-Cli 的 ps 模块,它使用证书和登录名。

证书存储在服务帐户的本地存储中,而不是选择产品的工作方式。 我需要通过 powershell 运行book.

来触发这个

为了让它工作,我需要用服务帐户触发它,否则它将找不到证书。

这是我们要安排的事情,所以必须这样做。

我怎么能运行这样,还是不可能? 我在谷歌搜索时找不到任何好的选择。

> 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   

当我执行 运行book 时,日志从脚本(本地脚本)中说的是它找不到证书,这并不奇怪。

原始输出: 在当前用户存储中找到 0 个证书 在本地机器商店中找到 0 个证书 未找到有效证书,使用 windows 凭据

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

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

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

Qlik-CLI 模块,读取 client,QlikClient,证书来自 cert:\\CurrentUser\My.

因此,如果您尝试 运行 Qlik-CLI 脚本作为与 Qlik Sense 服务用户帐户不同的用户(或在另一台机器上),您需要以服务帐户登录,导出QlikClient 证书,包括私钥,并将其安装在用户 运行ning 脚本下。

-UserName 参数只是告诉 Qlik 你想成为谁,前提是你有证书。

简而言之:运行 作为 Qlik 服务用户的脚本。它会为你省去很多麻烦。 :)