我正在尝试创建一个脚本,以完全自动化加入域,以便在 wds 映像部署期间使用。我不想使用 WAIK 选项,因为密码以纯文本形式存储在 xml 文件中。所以我在网上找到了一些看起来可以工作的 powershell 脚本。
这是我用来创建包含密码的加密文件的命令。
read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt
这是我正在使用的脚本。
$domain = "MYDOMAIN.COM"
$password = cat C:\securestring.txt | ConvertTo-SecureString -Force
$username = "$domain\MYUSERNAME"
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Add-Computer -DomainName $domain -Credential $credential
这是我遇到的错误。
C:\>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:\> $domain = "MYDOMAIN.COM"
PS C:\> $password = cat C:\securestring.txt | ConvertTo-Secure
String -Force
ConvertTo-SecureString : Cannot process argument because the value of argument
"input" is invalid. Change the value of the "input" argument and run the operat
ion again.
At line:1 char:66
+ $password = cat C:\securestring.txt | ConvertTo-SecureString <<<< -Force
+ CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], P
SArgumentException
+ FullyQualifiedErrorId : ImportSecureString_InvalidArgument,Microsoft.Pow
erShell.Commands.ConvertToSecureStringCommand
答案1
安全字符串仅对创建它们的用户有效。如果您以一个用户的身份创建C:\securestring.txt
,然后尝试以其他用户的身份读取它,则不会起作用。尝试以将要读取它的同一用户的身份创建文件。
答案2
为什么不要求用户输入密码,而是使用文本文件来存储密码呢?将域管理员密码存储在文本文件中是不可取的。您甚至可能根本不用 Txt 文件,而直接在脚本中声明密码。
Example 1: Requesting user to input the password
$domain = "MYDOMAIN.COM"
$password = Read-Host -Prompt "Enter password for $user" -AsSecureString
$username = "$domain\MYUSERNAME"
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Add-Computer -DomainName $domain -Credential $credential
Example 2: Declare the password instead of point to a text file
$domain = "myDomain"
$password = "Pa$$w0rd123" | ConvertTo-SecureString -asPlainText -Force
$username = "$domain\myUserAccount"
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Add-Computer -DomainName $domain -Credential $credential