Пакетный скрипт для переименования компьютера и присоединения к домену одним щелчком мыши - PullRequest
0 голосов
/ 28 мая 2020

У меня 200 компьютеров домена, и мне нужно изменить имя хоста и одним щелчком вернуться в домен.

  1. Первая операция
Powershell.exe "-ExecutionPolicy Bypass Add-Computer -DomainName <Domain Name> -ComputerName <Old_ComputerName> -NewName <New_ComputerName> -$credential = New-Object System.Management.Automation.PSCredential($username = "<Domain\User ID>", ($password = <Password> | ConvertTo-SecureString -asPlainText -Force))" 
Вторая операция
net user Administrator <Password>
Перезагрузите компьютер

Но, при выполнении вышеуказанного скрипта в cmd с повышенными привилегиями. Я получаю ошибку ниже.

At line:1 char:206
+ ... ement.Automation.PSCredential($username = Domain\User ID, ($passw ...
+                                                                 ~
Missing argument in parameter list.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingArgument  

Нам нужна однострочная команда для выполнения вышеуказанной операции.

1 Ответ

0 голосов
/ 29 мая 2020

Этот синтаксис команды неверен.

Сделайте это скриптом и запустите скрипт (доставьте пользователям как exe с помощью инструмента PS2EXE ), поэтому нет необходимости в пакете файл.

# Begin Script
$AddComputerSplat = @{
    DomainName   = <Domain Name> 
    ComputerName = <Old_ComputerName> 
    NewName      = '<New_ComputerName>'
    $credential  = New-Object System.Management.Automation.PSCredential($username = 'Domain\UserID', 
    ($password   = 'Password' | ConvertTo-SecureString -asPlainText -Force))
}
Add-Computer @AddComputerSplat

Get-LocalUser

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/get-localuser?view=powershell-5.1

New-LocalUser

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/new-localuser?view=powershell-5.1

Get-LocalGroupMember

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/get-localgroupmember?view=powershell-5.1

Add-LocalGroupMember

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/add-localgroupmember?view=powershell-5.1

# End Script

Или, если вы просто хотите использовать cmd.exe и вызвать consoelhost, этот подход должен сработать для вас.

$Command = 'Add-Computer -DomainName <Domain Name> -ComputerName <Old_ComputerName> -NewName <New_ComputerName> -$credential = New-Object System.Management.Automation.PSCredential($username = "<Domain\User ID>", ($password = <Password> | ConvertTo-SecureString -asPlainText -Force))"'
powershell -ArgumentList '-NoExit', 'NoProfile', '-ExecutionPolicy Bypass', "-Command  &{ $ConsoleCommand }"
...