2

Я пытаюсь создать скрипт для полной автоматизации присоединения к домену для использования во время развертывания образа 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

2 ответа2

1

Вместо того, чтобы использовать текстовый файл для хранения вашего пароля, почему бы вам не попросить ввод пользователя. Никогда не рекомендуется хранить пароли администратора домена в текстовых файлах. Вы можете даже не беспокоиться о 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
1

Безопасные строки работают только для пользователя, который их создал. Если вы создаете C:\securestring.txt как один пользователь, а затем пытаетесь прочитать его другим пользователем, это не сработает. Попробуйте создать файл с тем же пользователем, который будет его читать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .