2015-11-09 1 views
0

Я пытаюсь изменить акцию разрешения расшаренных на кучу окон серверов, работающих под управлением либо 2008 R2 или 2012.Изменение разрешений Использование Powershell

Я работал на сценарий, который вы можете найти здесь:

Import-Module ActiveDirectory 

$list = Get-ADComputer -Filter 'SamAccountName -like "*FP*"' | Select -Exp Name 



foreach ($Computer in $list) 


{ 
Grant-SmbShareAccess -Name User -CimSession Server -AccountName "username" -AccessRight Full -confirm:$false 
$acl = (Get-Item \\$Computer\d$\User).GetAccessControl('Access') 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ("Corp\uc4serv","FullControl","ContainerInherit, ObjectInherit","None","Allow") 
$acl.AddAccessRule($rule) 
Set-Acl \\$Computer\d$\User $acl 
Write-Host -ForegroundColor DarkGreen "Permissions granted on $Computer" 
} 
Write-Host -ForegroundColor DarkBlue "Command Has Completed" 

Но он не работает на серверах 2008 предположительно потому, что они не могут выполнить командлет Get-SmbShareAccess.

То, что я пытаюсь сделать, очень похож на этот пост здесь: How to set share permissions on a remote share with Powershell?, но конкретно на серверах Windows.

Я также нашел этот код на веб-сайте (http://windowsitpro.com/powershell/managing-file-shares-windows-powershell):

$acl = Get-Acl ` 
    \\servername\c$\Users\username\sharetest 
$permission = "corp\uc4serv","FullControl","Allow" 
$accessRule = New-Object ` 
    System.Security.AccessControl.FileSystemAccessRule ` 
    $permission 
$acl.SetAccessRule($accessRule) 
$acl | 
    Set-Acl \\servername\c$\Users\username\sharetest 

Но это только устанавливает безопасности на акцию вместо разрешений на акции.

Я также изучил использование команды Net Share, но для того, чтобы изменить права доступа к ней, он должен полностью удалить и повторно создать общий диск.

+0

Я помню поиск ЛО для этого на Google (разрешения на уровне доли, а не безопасности NTFS ACL), и я думаю, что я нашел то, что вам нужно: https://gallery.technet.microsoft.com/Create-a-Share-and-Set-eb177a79 – sodawillow

ответ

0

Вы можете использовать «Net Share». Используйте Invoke-Command для запуска на каждом удаленном сервере.

Источник - https://social.technet.microsoft.com/Forums/windowsserver/en-US/3edcabac-f1a8-4c4a-850c-8ba4697930a2/using-net-share-within-powershell

Пример

Source - $server = "MYSRV" ; $user = "username" ; $SrvPath = "E:\Users\$user" 
$sb = { 
param($User,$SrvPath) 
    NET SHARE $User$=$SrvPath "/GRANT:Domain Admins,FULL" "/GRANT:$User,CHANGE" /REMARK:"Home folder for $SrvPath" 
    } 

Invoke-Command -Computername "$Server" -ScriptBlock $sb -ArgumentList $user,$SrvPath 
+1

К сожалению, это не работает, потому что на удаленном сервере должно быть что-то определенное. Он должен иметь службу WS-Management, запущенную на сервере, для командлета Invoke-Command для подключения к ней. – Redcoatwright