Azure 自动化获取 AzureRmStorageAccountKey
Azure Automation Get-AzureRmStorageAccountKey
我正在开发一个脚本,该脚本从我为其配置了 RBAC 的每个订阅中的所有存储帐户中获取多个参数。我已经测试了脚本在本地完全正常工作,但是当我尝试将它带到 Azure Automation(以便我可以安排它在将来工作)时,我在使用 Get-AzureRmStorageAccountKey 命令时遇到了很多问题,因为它似乎没有输出任何东西。
这不是我正在处理的整个脚本,而是相关部分:
$VerbosePreference = 'Continue'
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$storageaccounts = get-azurermstorageaccount
ForEach ($account in $storageaccounts)
{
$PrimaryKey = Get-AzureRmStorageAccountKey -ResourceGroupName $account.ResourceGroupName
$PrimaryKey
在脚本的最后一行,我希望得到变量 $PrimaryKey 的输出,但结果是空的,正如我在脚本移至 运行 的下一部分时所看到的错误说它不能引用空值。
当我在 Powershell ISE 上本地 运行 时,一切都很好,我列出了所有主 SAS 密钥。我使用 ISE 的 Azure 自动化模块进行了尝试,它在本地测试中也很有效。一旦我在 Azure 上测试了草稿,即使进行了详细的登录,我也完全没有得到任何结果,最后的输出是。
Environments
------------
{[AzureChinaCloud, AzureChinaCloud], [AzureCloud, AzureCloud],
[AzureGermanCloud, AzureGermanCloud], [AzureUSGovernme...
有没有人有经验,这是自动化脚本不会泄露被认为是私有信息(例如 SAS 密钥)的某种预期行为吗?对我来说,问题是我不能在这里使用固定变量(至少我不知道我怎么可以),因为我 运行 将这个脚本针对所有现有的存储帐户,我希望脚本在没有人工干预的情况下工作,即使已创建新帐户。
干杯。
好吧,我知道一旦我 post 我会想出一些办法来解决这个问题。我确定我的自动化模块是最新的,但显然它们不是,这解决了整个问题。
有人可以随意关闭它:)
https://docs.microsoft.com/en-us/azure/automation/automation-update-azure-modules
我正在开发一个脚本,该脚本从我为其配置了 RBAC 的每个订阅中的所有存储帐户中获取多个参数。我已经测试了脚本在本地完全正常工作,但是当我尝试将它带到 Azure Automation(以便我可以安排它在将来工作)时,我在使用 Get-AzureRmStorageAccountKey 命令时遇到了很多问题,因为它似乎没有输出任何东西。
这不是我正在处理的整个脚本,而是相关部分:
$VerbosePreference = 'Continue'
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$storageaccounts = get-azurermstorageaccount
ForEach ($account in $storageaccounts)
{
$PrimaryKey = Get-AzureRmStorageAccountKey -ResourceGroupName $account.ResourceGroupName
$PrimaryKey
在脚本的最后一行,我希望得到变量 $PrimaryKey 的输出,但结果是空的,正如我在脚本移至 运行 的下一部分时所看到的错误说它不能引用空值。
当我在 Powershell ISE 上本地 运行 时,一切都很好,我列出了所有主 SAS 密钥。我使用 ISE 的 Azure 自动化模块进行了尝试,它在本地测试中也很有效。一旦我在 Azure 上测试了草稿,即使进行了详细的登录,我也完全没有得到任何结果,最后的输出是。
Environments
------------
{[AzureChinaCloud, AzureChinaCloud], [AzureCloud, AzureCloud],
[AzureGermanCloud, AzureGermanCloud], [AzureUSGovernme...
有没有人有经验,这是自动化脚本不会泄露被认为是私有信息(例如 SAS 密钥)的某种预期行为吗?对我来说,问题是我不能在这里使用固定变量(至少我不知道我怎么可以),因为我 运行 将这个脚本针对所有现有的存储帐户,我希望脚本在没有人工干预的情况下工作,即使已创建新帐户。
干杯。
好吧,我知道一旦我 post 我会想出一些办法来解决这个问题。我确定我的自动化模块是最新的,但显然它们不是,这解决了整个问题。
有人可以随意关闭它:)
https://docs.microsoft.com/en-us/azure/automation/automation-update-azure-modules