New-SmbShare не обновляет «Сетевой общий доступ к файлам и папкам» - PullRequest
0 голосов
/ 24 января 2020

Я хочу настроить SmbShare от Powershell, я создал папку и изменил расширенный общий доступ, но «Сетевой общий доступ к файлам и папкам» не обновляется. Это означает, что другие пользователи в сети не могут получить доступ к этой папке.

new-item -Name foobar -Path C:\ -ErrorAction SilentlyContinue -ItemType directory -Verbose
New-SmbShare -Name foobar -Path C:\foobar -FullAccess everyone -Verbose 

Как обновить «группы или имена пользователей» в «Сетевом доступе к файлам и папкам» (кроме как с GUI)

Я прикрепил скриншоты GUI ниже.

Обновление расширенного общего доступа обновляется, как и ожидалось: Advanced Share

Но это не обновляет «Сетевой общий доступ к файлам и папкам» Network file and folder sharing

Я бы ожидал увидеть это: Expected

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Мне нужно было сделать это с помощью ACL, а не SMBshare.

Я написал функцию для более легкого изменения настроек.

Set-NetworkShareAccess -path "C:\foobara" -Confirm

Моя функция:

function Set-NetworkShareAccess
{
    [CmdletBinding(
        SupportsShouldProcess=$true, 
        ConfirmImpact='Medium'
    )]
    Param
    (
        [ValidateSet(
            'ReadData', 'WriteData', 'CreateFiles', 'CreateDirectories', 'AppendData',
            'ReadExtendedAttributes', 'WriteExtendedAttributes', 'Traverse', 'ExecuteFile',
            'DeleteSubdirectoriesAndFiles', 'ReadAttributes', 'WriteAttributes', 'Write', 'Delete',
            'ReadPermissions', 'Read','ReadAndExecute', 'Modify', 'ChangePermissions', 'TakeOwnership',
            'Synchronize', 'FullControl'
        )]
        $PermissionLevel = 'FullControl',
        [Parameter(Mandatory=$true)]
        $path = "C:\foobara",
        $User  = 'everyone',
        [ValidateSet('None', 'NoPropagateInherit', 'InheritOnly')]
        $recursive = 'None'
    )

    $Acl = Get-Acl -Path $path
    $Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("$User", "$PermissionLevel", "ContainerInherit,ObjectInherit", "$recursive", "Allow")


    $Acl.SetAccessRule($Ar)
    Set-Acl -Path $path -AclObject $Acl
}
0 голосов
/ 24 января 2020

Спасибо за публикацию. Не уверен, но попробуйте включить это в свой скрипт. Install-SmbShare -Name MyShare -Path X: \ -FullAccess 'Everybody'

...