我想通过以下命令使用Azure Cli v2.9.0创建新的Azure Key Vault机密(我们在管道中使用此版本,目前将很难升级。),
$myValue = "abc^def"
az keyvault secret set --vault-name $myKeyVaultName -n $mySecretName --value @myValue
@myValue的值实际上作为参数传递给脚本。
该命令被接受并创建了一个新的机密,但是它从字符串中删除了脱字符号(^),并产生了abcdef的机密值,而不是预期的abc ^ def。
我之前在这里提出了一个问题,Joy Wang正确地指出,形成字符串文字'"abc^def"'
将允许通过Powershell正确添加值。作为对该问题的扩展,我想知道如何将相同的值az keyvault secret set
从变量传递到cmdlet中。
如下执行此操作仍会删除插入符号(^)
$myValue = "abc^def"
az keyvault secret set --vault-name $myKeyVaultName -n $mySecretName --value @myValue
$myValue = "abc^def"
az keyvault secret set --vault-name $myKeyVaultName -n $mySecretName --value $(@myValue)
发布脚本片段以进行澄清
param (
[Parameter(Mandatory=$True)]
[ValidateNotNullorEmpty()]
[string]$KeyVaultResourceGroup,
[Parameter(Mandatory=$True)]
[ValidateNotNullorEmpty()]
[string]$KeyVaultInstanceName,
[Parameter(Mandatory=$True)]
[ValidateNotNullorEmpty()]
[string]$CCnB_FileServer_Password_Value
)
#####################################
###########Initialsiing##############
#####################################
$ErrorActionPreference = "Stop"
$WarningPreference = 'SilentlyContinue'
Set-Location $PSScriptRoot
[Console]::ResetColor()
#############################################################
########### Create new Gasmap Key Vault secrets #############
#############################################################
#Create Secrets
if ($secrets.name -NotContains "CCnBFileServerPassword"){
Write-Output "INFO: Creating CCnBFileServerPassword secret in key vault $KeyVaultInstanceName"
az keyvault secret set --vault-name $KeyVaultInstanceName -n "CCnBFileServerPassword" --value $CCnB_FileServer_Password_Value | Out-Null
} else {
Write-Output "INFO: CCnBFileServerPassword secret already exists in key vault $KeyVaultInstanceName"
}
return 0
知道如何正确传递此值吗?
抱歉,@是一种类型,应该是$。该值作为参数发送到脚本中,因此我无法如上所述进行操作。
@PhilMurray如果通过传递参数
abc"^"def
,它将起作用吗?我会尝试的,但是该值来自CSV文件,因此我怀疑它是否可以工作。
@PhilMurray好吧,请告诉我,如果有任何更新,顺便说一句,您是否有机会在本文中测试我的解决方案?stackoverflow.com/questions/65178711/…
那是我要做的事情。不幸的是,它越来越长。找零后,我会尽快寻找。感谢您的帮助,Joy。