无法使用 Keyvault Secrets 加入域
Unable to use Keyvault Secrets to do Domain Join
我正在尝试使用隐藏用户名和密码的脚本化过程加入域。
我认为在 Azure 中使用 Keyvault 是最好的方法,但是当我使用下面的脚本时,它给了我一些错误。这可能吗,还是我做错了。
这些是 Azure VM
$AdminUser = 'https://<Keyvault>.vault.azure.net:443/secrets/AdminUser/de7d74df74ff4099b0bd7422c171a4fe'
$AdminPassName = 'https://<Keyvault>.vault.azure.net:443/secrets/SQLPassword/f394ded0cc16482096bc181f5ab650bd'
$mycred = New-Object System.Management.Automation.PSCredential ("$($AdminUser.SecretValueText)", $AdminPass.SecretValue)
$domain = 'hmr.loc'
Add-Computer -DomainName $domain -Credential $mycred
我得到的错误是
New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process argument because the value of argument "userName" is not valid. Change the value of the
"userName" argument and run the operation again."
At line:1 char:11
+ $mycred = New-Object System.Management.Automation.PSCredential ("$($A ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
我认为它与这条线有关...
$mycred = New-Object System.Management.Automation.PSCredential ("$($AdminUser.SecretValueText)", $AdminPass.SecretValue)
提前致谢..
你的方法没有意义(想法有)。您需要对秘密 URI 执行其余调用,而不仅仅是声明 uri 并将其用作变量。所以你通常有两种方法:
- 自己执行 rest call(在这种情况下,您必须自己处理 auth)
- 使用 powershell cmdlet 检索 Key Vault Secret,但您需要先向 Azure 进行身份验证,并具有足够的权限来执行此调用
无论哪种方式,您都必须传递一些您将用于身份验证的数据,因此您可能需要退后一步,使用您的更高级别 scripts\entities 为您处理并安全地传递 user\password 到您的脚本。
我正在尝试使用隐藏用户名和密码的脚本化过程加入域。
我认为在 Azure 中使用 Keyvault 是最好的方法,但是当我使用下面的脚本时,它给了我一些错误。这可能吗,还是我做错了。
这些是 Azure VM
$AdminUser = 'https://<Keyvault>.vault.azure.net:443/secrets/AdminUser/de7d74df74ff4099b0bd7422c171a4fe'
$AdminPassName = 'https://<Keyvault>.vault.azure.net:443/secrets/SQLPassword/f394ded0cc16482096bc181f5ab650bd'
$mycred = New-Object System.Management.Automation.PSCredential ("$($AdminUser.SecretValueText)", $AdminPass.SecretValue)
$domain = 'hmr.loc'
Add-Computer -DomainName $domain -Credential $mycred
我得到的错误是
New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process argument because the value of argument "userName" is not valid. Change the value of the
"userName" argument and run the operation again."
At line:1 char:11
+ $mycred = New-Object System.Management.Automation.PSCredential ("$($A ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
我认为它与这条线有关...
$mycred = New-Object System.Management.Automation.PSCredential ("$($AdminUser.SecretValueText)", $AdminPass.SecretValue)
提前致谢..
你的方法没有意义(想法有)。您需要对秘密 URI 执行其余调用,而不仅仅是声明 uri 并将其用作变量。所以你通常有两种方法:
- 自己执行 rest call(在这种情况下,您必须自己处理 auth)
- 使用 powershell cmdlet 检索 Key Vault Secret,但您需要先向 Azure 进行身份验证,并具有足够的权限来执行此调用
无论哪种方式,您都必须传递一些您将用于身份验证的数据,因此您可能需要退后一步,使用您的更高级别 scripts\entities 为您处理并安全地传递 user\password 到您的脚本。