#powershell
#powershell
Вопрос:
Я пытаюсь создать массовые локальные пользователи с исходным файлом xml со всеми подробностями в нем, используя сценарии powershell. Ниже приведен мой пример XML-файла с кодом, который я использую для создания пользователей. Может ли кто-нибудь помочь мне заставить это работать?
# To run this script use: amp; "C:UsersrLisdonkDesktopToServerTest.ps1"
$computerName = "USSECAVDSPDWK27"
$serviceAccountWebName = "saAsaWeb"
$serviceAccountWebPassword = "MyPassword123"
"Get computer info"
$computer = [ADSI]("WinNT://" $computerName ",computer")
"Determine if user [saAsaWeb] exists"
$serviceAccount = [ADSI]("WinNT://" $computerName "/$serviceAccountWebName" ",user")
if(!$serviceAccount.Name)
{
"Create user [saAsaWeb]"
$user = $computer.Create("user", $serviceAccountWebName)
"Set password"
$user.SetPassword($serviceAccountWebPassword)
$user.SetInfo()
"Disable [User must change password at next logon]"
$user.PasswordExpired = 0
$user.SetInfo()
"Enable [Password never expires]"
$wmiuser = Get-WmiObject -class "Win32_UserAccount" -filter "name=’$serviceAccountWebName’"
$wmiuser.PasswordExpires = $false
$wmiuser.Put()
}
Ответ №1:
Powershell заменит переменную только значением внутри двойных кавычек, одинарные кавычки вернут буквальное значение. Вы захотите экранировать одинарные кавычки символом ` backtick, поэтому было бы:
$wmiuser = Get-WmiObject Win32_UserAccount -filter "LocalAccount=True AND name=`'$serviceAccountWebName`'"
При запуске он должен запускаться с повышенными разрешениями. Если вы хотите сделать это на удаленном компьютере, вам нужно сделать это с помощью удаленного взаимодействия или полностью использовать WMI. Без указанной ошибки я предполагаю, что именно этот запрос WMI, скорее всего, вас задерживает.