【发布时间】:2016-02-10 11:06:47
【问题描述】:
我正在尝试在运行 2008 R2 或 2012 的一堆 Windows 服务器上修改共享驱动器的共享权限。
我编写了一个脚本,您可以在这里找到:
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 cmdlet。
我正在尝试做的与这里的这篇文章非常相似: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 命令,但为了更改共享权限,它必须完全删除并重新创建共享驱动器。
【问题讨论】:
-
我记得在 Google 上搜索了很多(共享级别权限,而不是 NTFS 安全 ACL),我想我找到了你需要的东西:gallery.technet.microsoft.com/Create-a-Share-and-Set-eb177a79
标签: windows powershell permissions share