Я пытаюсь создать сценарий, который создаст папку для нового пользователя на нашем файловом сервере. Затем заберите унаследованные права из этой папки и снова добавьте определенные права. Я успешно добавляю папку (если я дам ей статическую запись в скрипте), предоставляя права администратора домена, удаляя наследование и т.д., но я У меня проблемы с использованием переменной, которую я установил как пользователь. Я не хочу, чтобы каждый раз был статический пользователь, я хочу иметь возможность запускать этот скрипт, запрашивать у меня имя пользователя, затем он выходит и создает папку, а затем дает этому же пользователю полные права на это папка на основе имени пользователя, которое я ей предоставил. Я могу использовать Smithd как пользователь, например:
New-Item \\ fileserver \ home $ \ Smithd - каталог типа
Но не могу заставить его ссылаться на пользователя следующим образом:
New-Item \\ fileserver \ home $ \ $ username –Type Directory
Вот что у меня есть:
$username = read-host -prompt "Enter User Name"
New-Item \\\fileserver\home$\$username –Type Directory
Get-Acl \\\fileserver\home$\$username
$acl = Get-Acl \\\fileserver\home$\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\"+$username,"FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl \\\fileserver\home$\$username $acl
Я пробовал несколько способов заставить его работать, но безуспешно. Любые идеи или предложения приветствуются, спасибо.
На моей предыдущей работе я вспоминаю, что у меня была возможность использовать старую команду mkdir для создания папок в моих сценариях PowerShell, но для начала я бы предложил сначала процитировать ваш путь и протестировать с помощью echo / write-host. Попробуйте это, просто чтобы проверить:
write-host "\\${file_server}\home$\${user_name}"
У меня нет доступа к машине с Windows для тестирования, но я предполагаю, что «$» тоже может быть проблемой.
попробуйте это с обратным тиком, чтобы попытаться избежать $
:
write-host "\\${file_server}\home`$\${user_name}"
и не продолжайте, пока не узнаете, что строка вам нравится. Я не думаю, что вам нужна подсказка в вашем хосте чтения, хотя, вероятно, это не проблема. запись-хостинг - это всегда хорошая проверка.
Я надеюсь, что скоро получу доступ к машине с Windows, чтобы лучше помочь.
Кроме того, если интересно, вы можете указать имя пользователя в качестве параметра в верхней части программы, так что вы можете повторно вызывать сценарий из другого, который считывает имена из файла пар $ file_server, $ user_name. Просто плюнуть param( [string] $file_server, [string] $user_name )
Удачи! :)
Ознакомьтесь с этими статьями:
http://powershell.com/cs/blogs/tobias/archive/2011/09/21/applying-ntfs-permissions.aspx
и
Это было бы полезно ..