Mudar as permissões da partilha com o Powershell

estou a tentar modificar as permissões de partilhas de unidades de partilhas num conjunto de servidores do windows que estão a correr em 2008 R2 ou 2012.

Fiz um guião que podes encontrar aqui.
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" 
Mas não funciona em servidores de 2008, presumivelmente porque não podem executar o cmdlet Get-SmbShareAccess.

O que estou a tentar fazer é muito semelhante a este post aqui: Como definir as permissões de partilha numa partilha remota com o Powershell? mas especificamente nas janelas servidor.

também encontrei este código num sítio web ( 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
Mas isto só define a segurança da partilha em vez das permissões da partilha.

também investiguei a utilização do comando net Share, mas para alterar as permissões de partilha com isso, tem de apagar e recriar completamente a unidade de partilha.

Author: Community, 2015-11-09

1 answers

Podes usar "acção líquida". Use o comando de Invocação para executá-lo em cada servidor remoto.

Fonte - https://social.technet.microsoft.com/Forums/windowsserver/en-US/3edcabac-f1a8-4c4a-850c-8ba4697930a2/using-net-share-within-powershell

Exemplo

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
 0
Author: kekimian, 2015-11-09 18:26:23