我正在尝试使用脚本化进程加入域,其中隐藏了用户名和密码。
我认为在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)
提前致谢..
答案 0 :(得分:1)
你的方法没有意义(想法确实如此)。您需要对秘密URI执行休息调用,而不仅仅是声明uri并将其用作变量。所以你通常有两种方法:
无论哪种方式,您都必须传入一些用于进行身份验证的数据,因此您可能需要退后一步并使用更高级别的脚本\实体为您处理并安全地将用户\密码传递给您的脚本