Flash info

"Si vous vivez chaque jour comme si c'était le dernier, un jour vous aurez probablement raison."

Steve Jobs (1955-2011)

 
Partager un répertoire
Écrit par Robin Lemesle   
20-10-2008

Voici une fonction postée il y a quelques temps dans le forum par Laurent Dardenne. Cette fonction permet de créer un partage windows en ligne de commande :

Le script :

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'."
}
}

   

Exemple d'utilisation :


$Path='C:\temp'
$Name='Share de test'
$Type=0
$MaximumAllowed=$Null
$Description='Test de définition de Share via WMI'
$Password=$null
$Access= $Null

New-Share $Path $Name $Type $MaximumAllowed $Description $Password $Access

 

 

 

Dernière mise à jour : ( 20-10-2008 )
 
© 2018 PowerShell-Scripting.com