fin 1er jet partie powershell de gestion des partages + création script création partage

This commit is contained in:
2025-01-29 21:30:08 +01:00
parent 215454908c
commit 3e95421cf5
2 changed files with 149 additions and 197 deletions

View File

@@ -43,201 +43,59 @@ net share MonPartage=c:\share /GRANT:Ichbine,Full
---
# **Gestion des partage avec PowerShell <img src="https://upload.wikimedia.org/wikipedia/commons/a/af/PowerShell_Core_6.0_icon.png" height="50px" />**
## Mise en place du partage
### créer un partage
```powershell
New-SmbShare -Name "nom du partage" -Path "chemin vers le dossier de partage" -FullAccess "groupe d'utilisateur" -ReadAccess "groupe d'utilisateur"
```
- exemple
```powershell
New-SmbShare -Name Partage -Path "C:\Partage\" -FullAccess "Administrateurs" -ReadAccess "Utilisateurs"
```
---
### lister les partages
```powershell
Get-SmbShare
```
---
## Gérer les droits NTFS sur le partage
### ajouter des droits sur le partage
```powershell
Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force
```
> 💡 Le paramètre -Force permet de zapper la confirmation.
- exemple:
```powershell
Grant-SmbShareAccess -Name "Partage" -AccountName "Ichbine" -AccessRight Full -Force
```
---
### ajouter des droits d'accès sur le partage
```powershell
Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force
```
- exemple:
```powershell
Grant-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -AccessRight Read -Force
```
---
### supprimer des droits d'accès sur le partage
```powershell
Revoke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force
```
> 💡 Le paramètre -Force permet de zapper la confirmation.
- exemple:
```powershell
Revoke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force
```
### Refuser des droits d'accès sur le partage
```powershell
Bloke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force
```
- exemple:
```powershell
Bloke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force
```
> 💡 Le paramètre -Force permet de zapper la confirmation.
- Déclarer un partage
```powershell
New-SmbShare -Name "nom du partage" -Path "chemin vers le dossier de partage" -FullAccess "groupe d'utilisateur" -ReadAccess "groupe d'utilisateur"
#exemple
New-SmbShare -Name Partage -Path "C:\Partage\" -FullAccess "Administrateurs" -ReadAccess "Utilisateurs"
```
- consulter les droits dun partage
```powershell
Get-SmbShareAccess -Name "nom du partage"
#exemple
Get-SmbShareAccess -Name "Partage"
```
- Gérer les droits NTFS sur le partage
<aside>
💡 on peut avoir besoin dinstaller un module complémentaire
`Install-Module NTFSSecurity`
</aside>
- consulter les droits NTFS du partage
```powershell
Get-NTFSAccess -Path "chemin vers le dossier de partage"
#exemple
Get-NTFSAccess -Path "C:\Partage"
```
<aside>
💡 types de droits:
- **FullControl**
- **ReadAndExecute**
</aside>
- Ajouter des droits NTFS
```powershell
Add-NTFSAccess -Path "chemin vers le dossier de partage" -Account "compte dont on veut vérifier les droits" -AccessRights "type de droits"
#exemple
Add-NTFSAccess -Path "C:\Partage\" -Account "florian@it-connect.local" -AccessRights Modify
```
- Enlever des droits NTFS
```powershell
Remove-NTFSAccess -Path "chemin vers le dossier de partage" -Account "compte dont on veut vérifier les droits" -AccessRights "type de droits"
#exemple
Remove-NTFSAccess -Path "C:\Partage\" -Account "florian@it-connect.local" -AccessRights Modify
```
- Configurer le partage
<aside>
💡 types de droits avec le paramètre -Accessright
- **Full**
- **Read**
- **Change**
- **Custom**
</aside>
- consulter les droits de Partage
```powershell
Get-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits"
#exemple
Get-SmbShareAccess -Name "C:\Partage\" -AccountName "florian@it-connect.local"
```
- ajouter des droits sur le partage
```powershell
Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force #permet de ne pas demander de confirmation
#exemple
Grant-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -AccessRight Read -Force
```
- supprimer des droits sur le partage
```powershell
Revoke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force #permet de ne pas demander de confirmation
#exemple
Revoke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force
```
- Bloquer laccès à un partage
```powershell
Bloke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force #permet de ne pas demander de confirmation
#exemple
Bloke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force
#N.B: on peut débloquer en changeant Bloke par Unbloke
```
- Script complet
```powershell
param (
[string]$FolderPath,
[string]$FolderName,
[string]$share
)
# Importer le module Active Directory
Import-Module ActiveDirectory
#Install-Module NTFSSecurity
Import-Module NTFSSecurity
# Définir les noms des groupes
$domain = (Get-ADDomain).DNSRoot
$groupPrefix = "DL-$FolderName"
$groups = @{
"Refus" = "$groupPrefix-R"
"ControleTotal" = "$groupPrefix-CT"
"Ecriture" = "$groupPrefix-E"
"Lecture" = "$groupPrefix-L"
}
# Créer les groupes dans Active Directory
foreach ($key in $groups.Keys) {
$groupName = $groups[$key]
$PathDL = "OU=03-Ressources,OU=22-Services,OU=MT,DC=mt,DC=msprsx,DC=eni"
if (-Not (Get-ADGroup -Filter { Name -eq $groupName })) {
New-ADGroup -Name $groupName -SamAccountName $groupName -GroupScope DomainLocal -Path $PathDL
Write-Host "Created AD Group: $groupName"
} else {
Write-Host "AD Group already exists: $groupName"
}
}
# Fonction pour partager un dossier
function Share-Folder {
if (-Not (Get-SmbShare -Name $share -ErrorAction SilentlyContinue)) {
New-SmbShare -Name $share -Path $folderPath
$droits_partage = Get-SmbShareAccess -Name $share
foreach ($compte in $droits_partage){
$compte_list = $compte.AccountName
if($compte_list -notlike "Utilisateurs du domaine"){
Revoke-SmbShareAccess -AccountName $compte_list -Name $share -Force
Grant-SmbShareAccess -Name $share -AccountName "$domain\Utilisateurs du domaine" -AccessRight Full -Force
}
}
Write-Host "Created share: $share"
} else {
Write-Host "Share already exists: $share"
}
}
# Fonction gestion des droits NTFS dossier partagé
function Permission-Dossier {
# Ajout des groupes DL au permission du dossier
foreach ($key in $groups.Keys) {
$groupName = $groups[$key]
if ($groupName -like "*-CT"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights FullControl
} elseif ($groupName -like "*-E"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights ReadAndExecute
} elseif ($groupName -like "*-L"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights Read
}
}
# Obtenir la liste des comptes autorisés et leurs permissions sur le chemin spécifié
$compt_autor = Get-NTFSAccess -Path $folderPath
# Itérer à travers chaque compte autorisé
foreach ($compt in $compt_autor) {
$Account = $compt.Account
$AccessRights = $compt.AccessRights
# Afficher le nom du compte
Write-Output "Traitement du compte : $Account"
# Condition pour vérifier si le compte ne contient pas "$share"
if ($Account -notlike "*$share*") {
# Retirer les permissions pour le compte
Write-Output "Retrait des permissions pour le compte : $Account"
Remove-NTFSAccess -Path $folderPath -Account $Account -AccessRights $AccessRights
} else {
Write-Output "Le compte $Account contient 'DATA' et ne sera pas modifié."
}
}
}
Share-Folder
Permission-Dossier
Write-Host "Script execution completed."
```
> 💡 on peut débloquer en changeant Bloke par Unbloke
---

View File

@@ -0,0 +1,94 @@
```powershell
param (
[string]$FolderPath,
[string]$FolderName,
[string]$share
)
# Importer le module Active Directory
Import-Module ActiveDirectory
#Install-Module NTFSSecurity
Import-Module NTFSSecurity
# Définir les noms des groupes
$domain = (Get-ADDomain).DNSRoot
$groupPrefix = "DL-$FolderName"
$groups = @{
"Refus" = "$groupPrefix-R"
"ControleTotal" = "$groupPrefix-CT"
"Ecriture" = "$groupPrefix-E"
"Lecture" = "$groupPrefix-L"
}
# Créer les groupes dans Active Directory
foreach ($key in $groups.Keys) {
$groupName = $groups[$key]
$PathDL = "OU=03-Ressources,OU=22-Services,OU=MT,DC=mt,DC=msprsx,DC=eni"
if (-Not (Get-ADGroup -Filter { Name -eq $groupName })) {
New-ADGroup -Name $groupName -SamAccountName $groupName -GroupScope DomainLocal -Path $PathDL
Write-Host "Created AD Group: $groupName"
} else {
Write-Host "AD Group already exists: $groupName"
}
}
# Fonction pour partager un dossier
function Share-Folder {
if (-Not (Get-SmbShare -Name $share -ErrorAction SilentlyContinue)) {
New-SmbShare -Name $share -Path $folderPath
$droits_partage = Get-SmbShareAccess -Name $share
foreach ($compte in $droits_partage){
$compte_list = $compte.AccountName
if($compte_list -notlike "Utilisateurs du domaine"){
Revoke-SmbShareAccess -AccountName $compte_list -Name $share -Force
Grant-SmbShareAccess -Name $share -AccountName "$domain\Utilisateurs du domaine" -AccessRight Full -Force
}
}
Write-Host "Created share: $share"
} else {
Write-Host "Share already exists: $share"
}
}
# Fonction gestion des droits NTFS dossier partagé
function Permission-Dossier {
# Ajout des groupes DL au permission du dossier
foreach ($key in $groups.Keys) {
$groupName = $groups[$key]
if ($groupName -like "*-CT"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights FullControl
} elseif ($groupName -like "*-E"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights ReadAndExecute
} elseif ($groupName -like "*-L"){
Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights Read
}
}
# Obtenir la liste des comptes autorisés et leurs permissions sur le chemin spécifié
$compt_autor = Get-NTFSAccess -Path $folderPath
# Itérer à travers chaque compte autorisé
foreach ($compt in $compt_autor) {
$Account = $compt.Account
$AccessRights = $compt.AccessRights
# Afficher le nom du compte
Write-Output "Traitement du compte : $Account"
# Condition pour vérifier si le compte ne contient pas "$share"
if ($Account -notlike "*$share*") {
# Retirer les permissions pour le compte
Write-Output "Retrait des permissions pour le compte : $Account"
Remove-NTFSAccess -Path $folderPath -Account $Account -AccessRights $AccessRights
} else {
Write-Output "Le compte $Account contient 'DATA' et ne sera pas modifié."
}
}
}
Share-Folder
Permission-Dossier
Write-Host "Script execution completed."
```