如何解决Powershell脚本需要帮助
我正在尝试执行在以下位置找到的powershell脚本:
https://github.com/amanbedi18/Azure-KeyVault-Automation/tree/master/UploadSecrets
https://github.com/amanbedi18/Azure-KeyVault-Automation
我创建了以下json文件并将其命名为 /user/kv/AzureSecretsMetaData.json
[
{
"key": "test1","value": "1"
},{
"key": "test2","value": "2"
}
]
然后我将set@R_404[email protected]的内容复制到 /user/kv/set@R_404[email protected]
我尝试了自述文件和powershell脚本文件中提到的以下命令,并得到以下错误,有人可以帮助我正确执行此脚本,并指出我在这里做错了什么。
./ set@R_404[email protected] -@R_404_6174@aultName'avkv01'
set@R_404[email protected]: Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.
./ set@R_404[email protected] -@R_404_6174@aultName'avkv01'-KVSecretMetadataFilePath'/home/aditya/kv/AzureSecretsMetaData.json'
set@R_404[email protected]: Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.
任何帮助将不胜感激。谢谢
解决方法
如果您找到了这些脚本,则它们的书写效果很差,我建议您不要使用它们。我建议安装az powershell模块并使用这些脚本作为编写自己的脚本的参考。您可以使用powershellget安装az powershell模块:
Install-module az -force -allowclobber
您尝试调用的脚本的编写方式非常奇怪。它定义了两个不同的参数集,但是两个参数中的每个参数对于两个参数集都是必需的?那没有什么意义。如果必须运行它们,则可能需要对其进行一些修改。他们似乎还没有真正完成。为什么不修改脚本并完全摆脱参数集?此外,脚本中的示例表明“ $ KVSecretMetadataFilePath”参数不是必需的,因为未调用它,但是在定义参数时被定义为必需的。您需要明确是否需要此参数。如果需要,请使其看起来像这样:
<#
.PREREQUISITE
1. An Azure key vault and its name as parameter.
2. Json template should be properly populated with valid json schema in sampleSecretValues.json in KeyVaultjson directory.
.PARAMETER vaultName
The name of the key vault.
.EXAMPLE
. setKeyVaultSecret.ps1 -KeyVaultName 'somekeyvault'
#>
# provision keys and secrets to a key vault
Param(
[Parameter(Mandatory=$true)]
[String]
$KeyVaultName,[Parameter(Mandatory=$true)]
[String]
$KVSecretMetadataFilePath
)
Install-Module -Name AzureADPreview -ErrorAction SilentlyContinue -Force
Import-Module Azure -ErrorAction SilentlyContinue
Import-Module AzureRM.Resources
Set-StrictMode -Version 3
$json = Get-Content $KVSecretMetadataFilePath | Out-String | ConvertFrom-Json
$json | ForEach {
$secretToSearch = Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $_.key -ErrorAction SilentlyContinue
if($secretToSearch -ne $null)
{
echo "The secret $_.key already exists !"
}
Else
{
$NewSecret = Set-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $_.key -SecretValue (ConvertTo-SecureString $_.value -AsPlainText -Force ) -Verbose
Write-Host
Write-Host "Source Vault Resource Id: "$(Get-AzureRmKeyVault -VaultName $KeyVaultName).ResourceId
}
}
如果不需要,请删除$ KVSecretMetadataFilePath声明上方的“ [Parameter(Mandatory = $ true)]”行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。