В PowerShell
Я создал папку модели и запустил:
Get-ACL \\server\folder | % {$_.Access}
Вот вывод для разрешений, которые я хотел бы эмулировать:
FileSystemRights : DeleteSubdirectoriesAndFiles, Modify, Synchronize
AccessControlType : Allow
IdentityReference : CONTOSO\bgates
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
Другими словами: я перешел к расширенным настройкам безопасности для bgates и дал ему полный доступ и снял флажок «Взять на себя владение».
Я пытаюсь ввести вышеуказанную часть в поле FileSystemRights в скрипт, который я нашел в Интернете(по жизни я не могу найти ссылку), чтобы он мог создать папку с такими же разрешениями.
# this script checks to see if the folder has already been created
# if it hasn't it will create the folder then sets permissions on it
# then verifies if the folder has been created or not
# NEED TO CHANGE PATH ($Path = '\\server\folder\folder') !!!
# NEED TO CHANGE USER PERMISSION ($permission = 'UserAliasGoesHere') !!!
# this is the path for the new folder
$Path = '\\server\folder'
# test to see if folder already exists
if (Test-Path $Path) {
Write-Host -ForegroundColor Yellow "
-------------------------------------------------------
`n
The folder has previously been created. No action taken
`n
-------------------------------------------------------
"
}
else {
# create new folder
$null = New-Item -Path $Path -ItemType Directory
# get permissions
$acl = Get-Acl -Path $path
# add a new permission (FullControl, Modify, Read)
$permission = 'bobmarley', 'Allow', 'Deletesubdirectories', 'Modify', Synchronize'
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission
$acl.SetAccessRule($rule)
# set new permissions
$acl | Set-Acl -Path $path
# verify the folder has been created
if (Test-Path $Path) {
Write-Host -ForegroundColor Green "
----------------------------
`n
The folder has been created.
`n
----------------------------
"
}
else {
Write-Host -ForegroundColor Red "
--------------------------------
`n
The folder has not been created.
`n
--------------------------------
"
}
}
Конечно, это трагически завершается ошибкой со следующим сообщением об ошибке:
New-Object: Невозможно преобразовать аргумент "1" со значением: "Allow",для "FileSystemAccessRule" ввести "System.Security.AccessControl.FileSystemRights": "Невозможно преобразовать значение" Разрешить "для ввода" System.Security.AccessControl.FileSystemRights ". Ошибка:" Невозможно сопоставить имя идентификатора Разрешить допустимое имя перечислителя,Укажите одно из следующих имен перечислителей и повторите попытку: ListDirectory, ReadData, WriteData, CreateFiles, CreateDirectories, AppendData, ReadExtendedAttributes, WriteExtendedAttributes, Traverse, ExecuteFile, DeleteSubdirectoriesAndFiles, ReadAttributes, WriteAttributes, Write, Delete, ReadE ReadE Reader Reader, TakeOwnership, Synchronize, FullControl "" В строке: 28 символов: 9 + $ rule = New-Object -TypeName System.Security.AccessControl.FileSystem ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [New-Object], MethodException + FullyQualifiedErrorId: ConstructorInvokedThrowException, Microsoft.PowerShell.Commands.NewObjectCommand
Исключение, вызывающее «SetAccessRule» с аргументом «1»: «Значение не может быть нулевым. Параметрname: rule "В строке: 29 char: 1 + $ acl.SetAccessRule ($ rule) + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: ArgumentNullException
Я читаю сообщения об ошибках и, конечно, не нахожу здесь никакой комбинации моего вывода get-acl.
Теперь, очевидно, я думаю, чтоПроблема в том, что я не понимаю, как перевести разрешения, которые я хочу, в этот скрипт.Я предполагаю, что, возможно, этот скрипт или New-Object -TypeName является неправильным, но я не могу найти документацию для "-ArgumentList", так что я знаю, как подключить разрешения.
Я был бы очень признателен, если бы кто-нибудь показал мне, что я делаю здесь неправильно, и показал мне подходящий способ настройки разрешений, которые я ищу.
Бесконечная благодарность, мистерАнтифриз