Il existe des cmdlets intégrés pour cela et des modules sur le site MS powerShelGallery.com également.
C'est une chose très courante. Bien documenté partout sur le web et dans les vidéos Youtube. Il existe de nombreux exemples de scripts et rien ne vous empêche d'utiliser DOS ' acl .exe' ou d'autres outils similaires dans un script. Il ne s'agit donc pas vraiment d'une question spécifique à PowerShell, puisque vous pourriez également le faire dans un fichier batch ou autre.
Windows batch définit les permissions des fichiers et des dossiers".
"powershell set file and folder permissions" (en anglais)
'powershell set file and folder permissions sharepoint' (en anglais)
Commencez toujours par les fichiers d'aide PowerShell et les exemples qui s'y trouvent.
# 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...
#>