#powershell #active-directory
Вопрос:
Я создаю сценарий, в котором создается новый пользователь рекламы. Я также хочу дать ему Профиль и Домашний путь. Но я всегда получаю ошибку, когда запускаю эту часть, когда пытаюсь создать новый профиль и Домашний путь. Это мой сценарий:
$StandardPath = "\192.168.1.32Users"
$ProfilePath = “\192.168.1.32Users$($Username)"
$HomePath = “\192.168.1Users$($Username)Home"
New-Item -path $StandardPath -Name $Username -ItemType Directory -force
Set-ADUser $Username -ProfilePath $ProfilePath
New-Item -path $Profilepath -Name "Home" -ItemType Directory -force
Set-ADUser $Username -HomeDrive $driveLetter -HomeDirectory $HomePath
И вот в чем Ошибка:
New-Item : The path is not of a legal form.
At C:UsersewzadminDesktopAddADUsers.ps1:47 char:9
New-Item -path $StandardPath -Name $Username -ItemType Direct ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (\192.168.1.32Users:String) [New-Item], ArgumentException
FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.NewItemCommand
Кто-нибудь может мне помочь?
Комментарии:
1. Вы не забыли о приводе в стандартном пути$?
"\192.168.1.32$driveLetterUsers"
? P.S. лучше не использовать (в данном случае смешивать) фигурные кавычки“
и всегда использовать вместо них прямые кавычки. Также убедитесь, что ваша переменная$Username
не содержит недопустимых символов имени папки2. Боже, да, ты прав насчет приводного устройства, я совсем забыл об этом.
3. Не забывайте, что общие папки с административными буквами дисков также имеют суффикс
$
«а».
Ответ №1:
У тебя тут кое — что происходит:
- Вам необходимо указать имя общего ресурса в пути UNC между именем сервера и путем общего доступа. Административные общие ресурсы автоматически создаются для подключенного хранилища по умолчанию (например, для
C:
), а буква диска имеет суффикс a$
.- Вам не нужно избегать
$
, так как процесс
- Вам не нужно избегать
- Вы забыли последний октет IP-адреса при настройке
$HomePath
- Хотя это не проблема, мы можем использовать
$StandardPath
переменную для построения двух других - Оба
New-Item
вызова могут опустить-Name
параметр, так как у вас есть пути к каталогу, указанные в-Path
переменной. Использование-Name
параметра приведет к созданию другого каталога в указанном каталоге , в-Path
котором уже будут созданы все отсутствующие каталоги. - Вы также можете просто использовать
$ProfilePath
для создания$Username
каталога, так как путь совпадает с$StandardPath$Username
- Вам не нужно использовать
$($Username)
для расширения одну переменную. Вы можете полностью опустить оператор под-выражения$()
.
Приведенные ниже исправления должны сработать для вас:
Внимание: Если вам необходимо использовать перемещаемые профили, создайте их резервную копию с помощью
DFS
или, по крайней мере, соответствующего устройства хранения, а неCIFS
общего ресурса с одного сервера. Также не используйте IP-адрес, используйтеNetBIOS
DNS
, илиFQDN
имя вUNC
пути. Если этот сервер выйдет из строя или IP-адрес изменится, у вашего пользователя в этой системе возникнут проблемы с неправильной синхронизацией профиля, а перемещаемые профили могут быть непостоянными, когда дело доходит до проблем с синхронизацией.
$StandardPath = "\192.168.1.32$driveletter$Users"
$ProfilePath = "$StandardPath$Username"
$HomePath = “$ProfilePathHome"
New-Item -Path $ProfilePath -ItemType Directory -Force
Set-ADUser $Username -ProfilePath $ProfilePath
New-Item -Path $ProfilePath -ItemType Directory -Force
Set-ADUser $Username -HomeDrive $driveLetter -HomeDirectory $HomePath