Powershell: создание пользователей из файла и создание каталога на общем ресурсе

#powershell #active-directory

#powershell #active-directory

Вопрос:

Здравствуйте, я пытаюсь настроить скрипт, который импортирует текстовый файл пользователей, разделяет имя / фамилию, затем создает пользователя в подразделении. Это работает, однако я попытался добавить другую команду после нее, но все еще в цикле, который создает каталог в общем ресурсе, поскольку, когда я пытался установить домашний каталог для пользователя в команде, домашний каталог был установлен, но каталог так и не был создан. Поэтому я пытаюсь добавить создать каталог в эту команду, но я получаю сообщение об ошибке:

 Get-Content C:Userstest.userDesktopname.txt | ForEach-Object {
    $Split = $_.Split(" ");
    $given=$Split[0];
    $sur=$Split[1]; 
    $uname=$given   "."   $sur; 
    New-ADUser -GivenName $given -Surname $sur -Name ($given   " "   $sur) `
      -UserPrincipalName (($uname   "@"   "$env:userdnsdomain")).ToLower() `
      -path "OU=testou, DC=testdomain, DC=local" -SamAccountName ($uname).ToLower() `
      -AccountPassword (ConvertTo-SecureString -AsPlainText "pass-word1" `
      -Force) -Enabled $true -ChangePasswordAtLogon $true `
      -Verbose New-Item -Path "\testdomain.localuserdatatest users$uname" -ItemType "directory"
}
 

New-ADUser : Cannot bind parameter because parameter 'Path' is specified more than once. To provide multiple values to parameters that can accept multiple values, use the array syntax. For example, "-parameter value1,value2,value3". At line:1 char:509

Я не уверен, как это сделать, как он рекомендует, поскольку я новичок в написании сценариев. Как можно добавить команду New-Item -Path в команду, чтобы она создавала каталог в общем ресурсе, чтобы я мог затем установить для него домашние каталоги пользователей. Затем я могу попытаться реализовать настройку домашнего каталога в этой команде. Я попытался удалить -Path, поскольку вы можете создавать каталоги без него, но затем он выдал ошибку:
New-ADUser: не удается найти позиционный параметр, который принимает аргумент ‘New-Item’.
В строке: 1 символ: 161

Любая помощь будет принята с благодарностью

Комментарии:

1. Пожалуйста, отформатируйте свой код и сообщения об ошибках. Как сейчас, это едва читаемо

2. В Интернете уже есть примеры сценариев, показывающие, как это сделать, а также видеоролики Youtube о варианте использования. Никогда не запускайте destructive () Создавать, обновлять, перемещать, удалять, переименовывать код без надлежащей проверки. Тестируйте / проверяйте результаты перед реальными запусками. -WhatIf/ $Confirm:, найдите их. Тем более, что вы это сказали. [‘Я не уверен, как это сделать, например, так, как он рекомендует, поскольку я новичок в написании сценариев.’] Вам действительно нужно потратить необходимое время, чтобы освоиться с PowerShell и ДОБАВИТЬ к нему скрипты. На Youtube есть множество видеороликов, которые помогут вам в этом.

Ответ №1:

При форматировании вашего кода для вас проблема в том, что вам не хватает a ; . Вот обновленная версия. В следующий раз постарайтесь не использовать однострочный текст, это займет чертовски много времени, чтобы выяснить, что происходит.

 Get-Content C:Userstest.userDesktopname.txt | ForEach-Object {
    $Split = $_.Split(" ");
    $given=$Split[0];
    $sur=$Split[1]; 
    $uname=$given   "."   $sur; 
    New-ADUser -GivenName $given -Surname $sur -Name ($given   " "   $sur) `
      -UserPrincipalName (($uname   "@"   "$env:userdnsdomain")).ToLower() `
      -path "OU=testou, DC=testdomain, DC=local" -SamAccountName ($uname).ToLower() `
      -AccountPassword (ConvertTo-SecureString -AsPlainText "pass-word1" `
      -Force) -Enabled $true -ChangePasswordAtLogon $true `
      -Verbose -WhatIf # Semi-colon here if you want it a one-liner, or new line for readability
    New-Item -Path "\testdomain.localuserdatatest users$uname" -ItemType "directory" -WhatIf
}
 

Он New-Item должен быть в новой строке, или точка с запятой должна быть после -Verbose .

Редактировать

Добавлено в -WhatIf согласно комментариям postanote, и я согласен.