Question [Fonction] Création d'un share sur un poste local
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 18 ans 2 semaines #1863
par Laurent Dardenne
Tutoriels PowerShell
Cette fonction tient compte du comportement de WMI quant à la gestion des droits par défaut et de différentes cause d'erreurs.
[code:1]
#Crée un Share en local
#
#[String] $Path='C:\temp'
#[String] $Name='Share de test'
#[uint32] $Type=0
#[uint32] $MaximumAllowed=$Null
#[String] $Description='Test de définition de Share via WMI'
#[String] $Password=$null
#$Access= $Null
#
#New-Share $Path $Name $Type $MaximumAllowed $Description $Password $Access
function New-Share([String] $Path,
[String] $Name,
[uint32] $Type,
[uint32] $MaximumAllowed,
[String] $Description,
[String] $Password,
#[System.Management.ManagementClass] $Access)
$Access)
{
if ($Access -ne $NULL)
{ if ($Access.__CLASS -ne \"Win32_SecurityDescriptor\"«»)
{Throw \"Le paramètre Acces n'est pas une instance de la classe Win32_SecurityDescriptor\"}
}
if ((Get-Service|where {$_.Name -eq \"winmgmt\"}).Status -eq \"Stopped\"«»)
{Throw \"Le service d'infrastructure de gestion Windows (winmgmt) est arrêté. Impossible de continuer\"}
$Share = [WMIClass] \"Win32_Share\"
if ($Share -eq $Null)
{Throw \"Erreur lors de la création d'une instance de la classe Win32_Share\"}
$CodeRetour=($Share.Create($Path,$Name,$Type,$MaximumAllowed,$Description,$Password,$Access)).ReturnValue
Switch ($CodeRetour)
{
0 {$MsgErreur=\"Opération terminée correctement.\";Break}
2 {$MsgErreur=\"L'utilisateur n'a pas accès aux informations requises.\";Break}
8 {$MsgErreur=\"Échec inconnu.\";Break}
9 {$MsgErreur=\"Le nom du caractère ou du système de fichiers n'est pas valide.\";Break}
10 {$MsgErreur=\"La valeur spécifiée pour le paramètre de niveau est non valide.\";Break}
21 {$MsgErreur=\"Le paramètre spécifié est non valide.\";Break}
22 {$MsgErreur=\"Le nom du partage est déjà en cours d'utilisation sur ce serveur.\";Break}
23 {$MsgErreur=\"L'opération est non valide pour une ressource redirigée. Le nom de périphérique spécifié est assigné à une ressource partagée.\";Break}
24 {$MsgErreur=\"Le périphérique ou le répertoire n'existe pas.\";Break}
25 {$MsgErreur=\"Le nom de partage n'existe pas.\";Break}
Default {$MsgErreur=\"Référez-vous à la documentation concernant les codes d'erreur Win32. Code erreur : $CodeRetour\"}
}
if ($CodeRetour -ne 0) {Throw $MsgErreur}
if ($Access -eq $NULL)
{ #Comportement par défaut avec WMI si on ne renseigne aucun ACL
Write-Warning \"Le share $Name a été créé avec le droit 'Full control' pour le groupe 'Tout le monde'.\"}
}
[/code:1]
Pour la gestion des ACE c'est en cours...
[code:1]
#Crée un Share en local
#
#[String] $Path='C:\temp'
#[String] $Name='Share de test'
#[uint32] $Type=0
#[uint32] $MaximumAllowed=$Null
#[String] $Description='Test de définition de Share via WMI'
#[String] $Password=$null
#$Access= $Null
#
#New-Share $Path $Name $Type $MaximumAllowed $Description $Password $Access
function New-Share([String] $Path,
[String] $Name,
[uint32] $Type,
[uint32] $MaximumAllowed,
[String] $Description,
[String] $Password,
#[System.Management.ManagementClass] $Access)
$Access)
{
if ($Access -ne $NULL)
{ if ($Access.__CLASS -ne \"Win32_SecurityDescriptor\"«»)
{Throw \"Le paramètre Acces n'est pas une instance de la classe Win32_SecurityDescriptor\"}
}
if ((Get-Service|where {$_.Name -eq \"winmgmt\"}).Status -eq \"Stopped\"«»)
{Throw \"Le service d'infrastructure de gestion Windows (winmgmt) est arrêté. Impossible de continuer\"}
$Share = [WMIClass] \"Win32_Share\"
if ($Share -eq $Null)
{Throw \"Erreur lors de la création d'une instance de la classe Win32_Share\"}
$CodeRetour=($Share.Create($Path,$Name,$Type,$MaximumAllowed,$Description,$Password,$Access)).ReturnValue
Switch ($CodeRetour)
{
0 {$MsgErreur=\"Opération terminée correctement.\";Break}
2 {$MsgErreur=\"L'utilisateur n'a pas accès aux informations requises.\";Break}
8 {$MsgErreur=\"Échec inconnu.\";Break}
9 {$MsgErreur=\"Le nom du caractère ou du système de fichiers n'est pas valide.\";Break}
10 {$MsgErreur=\"La valeur spécifiée pour le paramètre de niveau est non valide.\";Break}
21 {$MsgErreur=\"Le paramètre spécifié est non valide.\";Break}
22 {$MsgErreur=\"Le nom du partage est déjà en cours d'utilisation sur ce serveur.\";Break}
23 {$MsgErreur=\"L'opération est non valide pour une ressource redirigée. Le nom de périphérique spécifié est assigné à une ressource partagée.\";Break}
24 {$MsgErreur=\"Le périphérique ou le répertoire n'existe pas.\";Break}
25 {$MsgErreur=\"Le nom de partage n'existe pas.\";Break}
Default {$MsgErreur=\"Référez-vous à la documentation concernant les codes d'erreur Win32. Code erreur : $CodeRetour\"}
}
if ($CodeRetour -ne 0) {Throw $MsgErreur}
if ($Access -eq $NULL)
{ #Comportement par défaut avec WMI si on ne renseigne aucun ACL
Write-Warning \"Le share $Name a été créé avec le droit 'Full control' pour le groupe 'Tout le monde'.\"}
}
[/code:1]
Pour la gestion des ACE c'est en cours...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- maycry
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 119
- Remerciements reçus 0
il y a 18 ans 2 semaines #1867
par maycry
Fresh ce script ^^^^ il y'aura probablement un script pour un share sur une machine distante de ta part je pense àaprés celui-ci ^^
genre de ton xp hop new share sur mon DFS!!!
Réponse de maycry sur le sujet Re:[Fonction] Création d'un share sur un poste loc
genre de ton xp hop new share sur mon DFS!!!
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 18 ans 1 semaine #1869
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Fonction] Création d'un share sur un poste loc
chris écrit:
Pour DFS en recherchant \"DFS share Script\" on trouve qq pistes, il y a peut être moyen d'automatiser avec WMI...
Pour une machine distant l'adaptation ne devrait pas poser de pb il me semble.
Malheureusement non. Je travaille sur la suite, la gestion des ACEs.il y'aura probablement un script pour un share sur une machine distante de ta part je pense àaprés celui-ci
Pour DFS en recherchant \"DFS share Script\" on trouve qq pistes, il y a peut être moyen d'automatiser avec WMI...
Pour une machine distant l'adaptation ne devrait pas poser de pb il me semble.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 18 ans 1 semaine #1871
par Arnaud Petitjean
Pour cela il faudrait que tu utilises la V2 de PowerShell. Car tout script PowerShell pourra s'exécuter à distance.
En attendant tu peux déjà t'exercer avec la v2 CTP.
@+
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:[Fonction] Création d'un share sur un poste loc
il y'aura probablement un script pour un share sur une machine distante de ta part je pense àaprés celui-ci
Pour cela il faudrait que tu utilises la V2 de PowerShell. Car tout script PowerShell pourra s'exécuter à distance.
En attendant tu peux déjà t'exercer avec la v2 CTP.
@+
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.056 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Fonction] Création d'un share sur un poste local