создание локальных пользователей с использованием XML-файла в качестве исходного с помощью сценариев powershell

#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, скорее всего, вас задерживает.