我正在使用 Microsoft Sharepoint 迁移工具将数百个用户文件夹复制到云中。
每个用户文件夹的路径在结构上是相同的,基本上是:\\fileserver\user\<用户名的一些变体>
每个用户子文件夹的现有权限(从 \\fileserver\user 继承)包括:文件管理员完全控制;系统完全控制;经过身份验证的用户修改
完成迁移后,我想要:
- 禁用每个用户文件夹的继承(一次禁用部分文件夹,而不是同时禁用所有文件夹)
- 仅添加 2 个 ACE,即具有完全控制权限的域管理员组以及具有读取/列出/执行权限的用户文件夹所有者
- 删除所有其他具有任何权限的组和用户
使用 Powershell 是否能最好地完成此操作?我该如何编写脚本?
答案1
为此,MS powerShelGallery.com 上也有内置的 cmdlet 和模块。
这是很常见的事情。网络上和 Youtube 视频中都有很好的记录。有很多示例脚本,没有什么可以阻止你使用 DOS '访问控制列表.exe 工具或脚本中的其他类似工具。因此,这实际上不是 PowerShell 特有的问题,因为您也可以在批处理文件或类似文件中执行此操作。
'powershell 设置文件和文件夹权限 sharepoint'
始终从 PowerShell 帮助文件和其中的示例开始。
# Built-in cmdlets
Get-Command -Name '*acl*', '*ntfs*' |
Format-Table -AutoSize
# Results
<#
CommandType Name Version Source
----------- ---- ------- ------
...
Cmdlet get-Acl 3.0.0.0 Microsoft.PowerShell.Security
Cmdlet Set-Acl 3.0.0.0 Microsoft.PowerShell.Security
...
Application cacls.exe 10.0.19041.1 C:\WINDOWS\system32\cacls.exe
Application chkntfs.exe 10.0.19041.1 C:\WINDOWS\system32\chkntfs.exe
Application dsacls.exe 10.0.19041.1 C:\WINDOWS\system32\dsacls.exe
Application icacls.exe 10.0.19041.1 C:\WINDOWS\system32\icacls.exe
#>
# Get specifics for a module, cmdlet, or function
(Get-Command -Name Get-Acl).Parameters
(Get-Command -Name Get-Acl).Parameters.Keys
Get-help -Name Get-Acl -Examples
# Results
<#
Get-Acl C:\Windows
Get-Acl -Path "C:\Windows\k*.log" | Format-List -Property PSPath, Sddl
Get-Acl -Path "C:/Windows/k*.log" -Audit | ForEach-Object { $_.Audit.Count }
Get-Acl -Path "HKLM:\System\CurrentControlSet\Control" | Format-List
Get-Acl -InputObject (Get-StorageSubsystem -Name S087)
#>
Get-help -Name Get-Acl -Full
Get-help -Name Get-Acl -Online
(Get-Command -Name Set-Acl).Parameters
(Get-Command -Name Set-Acl).Parameters.Keys
Get-help -Name Set-Acl -Examples
# Results
<#
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
#>
Get-help -Name Set-Acl -Full
Get-help -Name Set-Acl -Online
Find-Module -Name '*acl*', '*ntfs*' |
Format-Table -AutoSize
# Results
<#
Version Name Repository Description
------- ---- ---------- -----------
1.0.1 ACL-Permissions PSGallery A couple of ACL utilities, for repairing corrupt permissions and applying permissions for IIS AppPool identities
1.30.1.28 ACLReportTools PSGallery Provides Cmdlets for reporting on Share ACLs.
1.7 ACLHelpers PSGallery Modules to help work with ACLs (Access Control Rights)
1.0.1.0 ACLCleanup PSGallery A set of tools to help you clean your fileshares access control lists
0.1.2 ACLTools PSGallery Module for managing NTFS Acls on files and folders
...
4.2.6 NTFSSecurity PSGallery Windows PowerShell Module for managing file and folder security on NTFS volumes
1.4.1 cNtfsAccessControl PSGallery The cNtfsAccessControl module contains DSC resources for NTFS access control management.
1.0 NTFSPermissionMigration PSGallery This module is used as a wrapper to the popular icacls utility to save permissions to a file and then restore those permissions to a mirror cop...
#>