powershell 脚本需要帮助
Assistance needed with powershell script
我正在尝试执行在 :
找到的 powershell 脚本
https://github.com/amanbedi18/Azure-KeyVault-Automation/tree/master/UploadSecrets
https://github.com/amanbedi18/Azure-KeyVault-Automation
此脚本用于自动将机密上传到 Azure 密钥库。
我创建了下面的 json 文件并将其命名为 /user/kv/AzureSecretsMetaData.json
[
{
"key": "test1",
"value": "1"
},
{
"key": "test2",
"value": "2"
}
]
然后我将 setKeyVaultSecrets.ps1 的内容复制到 /user/kv/setKeyVaultSecrets。ps1
我已经尝试了自述文件和 powershell 脚本文件中提到的以下命令并得到以下错误,有人可以帮我正确执行这个脚本并指出我在这里做错了什么。
./setkeyVaultSecret.ps1 -KeyVaultName 'avkv01'
setkeyVaultSecret.ps1: 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.
./setkeyVaultSecret.ps1 -KeyVaultName 'avkv01' -KVSecretMetadataFilePath '/home/aditya/kv/AzureSecretsMetaData.json'
setkeyVaultSecret.ps1: 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)]”。
我正在尝试执行在 :
找到的 powershell 脚本https://github.com/amanbedi18/Azure-KeyVault-Automation/tree/master/UploadSecrets
https://github.com/amanbedi18/Azure-KeyVault-Automation
此脚本用于自动将机密上传到 Azure 密钥库。
我创建了下面的 json 文件并将其命名为 /user/kv/AzureSecretsMetaData.json
[
{
"key": "test1",
"value": "1"
},
{
"key": "test2",
"value": "2"
}
]
然后我将 setKeyVaultSecrets.ps1 的内容复制到 /user/kv/setKeyVaultSecrets。ps1
我已经尝试了自述文件和 powershell 脚本文件中提到的以下命令并得到以下错误,有人可以帮我正确执行这个脚本并指出我在这里做错了什么。
./setkeyVaultSecret.ps1 -KeyVaultName 'avkv01'
setkeyVaultSecret.ps1: 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.
./setkeyVaultSecret.ps1 -KeyVaultName 'avkv01' -KVSecretMetadataFilePath '/home/aditya/kv/AzureSecretsMetaData.json'
setkeyVaultSecret.ps1: 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)]”。