适用于 PowerShell 7 的 Azure Automation Hybrid-Worker Get-AutomationPSCredential
Azure Automation Hybrid-Worker Get-AutomationPSCredential for PowerShell 7
我们正在将一些 Azure 自动化混合辅助角色脚本移至 PowerShell 7.1。为此,PowerShell 5.1 中可用的命令之一是:[PSCredential] $AutomationCredential = Get-AutomationPSCredential -Name 'abcdef'
。当我们在 PowerShell 7.1 中尝试相同的命令时,出现错误 The 'Get-AutomationPSCredential' command was found in the module 'Orchestrator.AssetManagement.Cmdlets', but the module could not be loaded. For more information, run 'Import-Module Orchestrator.AssetManagement.Cmdlets'
我们已将导入模块添加到代码中,但我们得到 Could not load file or assembly 'JobRuntimeData.Client, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified
。
我们确实在沙盒区域中找到了 Orchestrator.AssetManagement.Cmdlets 混合工作者。我们知道这个模块是在安装 hybrid-worker 时加载的 (https://docs.microsoft.com/en-us/azure/automation/shared-resources/modules#internal-cmdlets).
'Get-AutomationPSCredential
目前支持到 Azure powershell 6.6.0
注意:Powershell 7.1 仍在预览中,所以这可能是错误的原因。
请参阅此 MS DOC 了解更多信息。
我们假设 Orchestrator.AssetManagement.Cmdlets
在这一点上被窃听,但没有发现任何证据表明它是。为了解决这个问题,我们打算使用 runbook 变量来存储密码,但它需要 cmdlet 来实际解码 secret/hidden 值。
最后,我们使用了密钥库来存储密码。以下是用作解决方法的方法。
$User = "AutomationUser"
$KeyVaultName = "KeyVault"
try {
$Password = (ConvertTo-SecureString (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $User -AsPlainText) -AsPlainText -Force)
[PSCredential] $AutomationCredential = New-Object System.Management.Automation.PSCredential($User, $Password)
}
catch {
$ErrorMessage = "Unable to retrieve credentials for user: [${$User}]. $_"
throw $ErrorMessage
BREAK
}
我们正在将一些 Azure 自动化混合辅助角色脚本移至 PowerShell 7.1。为此,PowerShell 5.1 中可用的命令之一是:[PSCredential] $AutomationCredential = Get-AutomationPSCredential -Name 'abcdef'
。当我们在 PowerShell 7.1 中尝试相同的命令时,出现错误 The 'Get-AutomationPSCredential' command was found in the module 'Orchestrator.AssetManagement.Cmdlets', but the module could not be loaded. For more information, run 'Import-Module Orchestrator.AssetManagement.Cmdlets'
我们已将导入模块添加到代码中,但我们得到 Could not load file or assembly 'JobRuntimeData.Client, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified
。
我们确实在沙盒区域中找到了 Orchestrator.AssetManagement.Cmdlets 混合工作者。我们知道这个模块是在安装 hybrid-worker 时加载的 (https://docs.microsoft.com/en-us/azure/automation/shared-resources/modules#internal-cmdlets).
'Get-AutomationPSCredential
目前支持到 Azure powershell 6.6.0
注意:Powershell 7.1 仍在预览中,所以这可能是错误的原因。
请参阅此 MS DOC 了解更多信息。
我们假设 Orchestrator.AssetManagement.Cmdlets
在这一点上被窃听,但没有发现任何证据表明它是。为了解决这个问题,我们打算使用 runbook 变量来存储密码,但它需要 cmdlet 来实际解码 secret/hidden 值。
最后,我们使用了密钥库来存储密码。以下是用作解决方法的方法。
$User = "AutomationUser"
$KeyVaultName = "KeyVault"
try {
$Password = (ConvertTo-SecureString (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $User -AsPlainText) -AsPlainText -Force)
[PSCredential] $AutomationCredential = New-Object System.Management.Automation.PSCredential($User, $Password)
}
catch {
$ErrorMessage = "Unable to retrieve credentials for user: [${$User}]. $_"
throw $ErrorMessage
BREAK
}