Powershell 命令/脚本修改特定路径名的 NTFS 权限

Powershell 命令/脚本修改特定路径名的 NTFS 权限

我正在使用 Microsoft Sharepoint 迁移工具将数百个用户文件夹复制到云中。

每个用户文件夹的路径在结构上是相同的,基本上是:\\fileserver\user\<用户名的一些变体>

每个用户子文件夹的现有权限(从 \\fileserver\user 继承)包括:文件管理员完全控制;系统完全控制;经过身份验证的用户修改

完成迁移后,我想要:

  1. 禁用每个用户文件夹的继承(一次禁用部分文件夹,而不是同时禁用所有文件夹)
  2. 仅添加 2 个 ACE,即具有完全控制权限的域管理员组以及具有读取/列出/执行权限的用户文件夹所有者
  3. 删除所有其他具有任何权限的组和用户

使用 Powershell 是否能最好地完成此操作?我该如何编写脚本?

答案1

为此,MS powerShelGallery.com 上也有内置的 cmdlet 和模块。

这是很常见的事情。网络上和 Youtube 视频中都有很好的记录。有很多示例脚本,没有什么可以阻止你使用 DOS '访问控制列表.exe 工具或脚本中的其他类似工具。因此,这实际上不是 PowerShell 特有的问题,因为您也可以在批处理文件或类似文件中执行此操作。

'windows批量设置文件和文件夹权限'

‘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...
#>

相关内容