fin 1er jet partie powershell de gestion des partages + création script création partage
This commit is contained in:
@@ -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 d’un 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 d’installer 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 l’accè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
|
||||
---
|
||||
@@ -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."
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user