Question Export des partages dispo, import des noms de partages pour lister les droits

Plus d'informations
il y a 2 ans 2 mois - il y a 2 ans 2 mois #31696 par Alexis
Bonjour à tous et toutes,
Je cherche à exporter tous les partages dispo sur un serveur pour ensuite réimporter ces noms depuis le fichier. 
Suite à l'import, je fais un ForEach en me servant d'un variable temporaire mais systématiquement je me prends une erreur... 

Voici mon powershell:
# Je crée une variable pour stocker la date du jour avec un format sans espace
$DateDuJour = Get-Date -Format "dd.MM.yyyy"

## On se connecte à distance sur Mon_Serveur, je stock la commande de connexion en variable pour la rappeler plus tard
$san = New-PsSession -ComputerName "Mon_Serveur"

## Je liste tous les partages de mon serveur et je stocke dans un fichier CSV
Invoke-Command $san {Get-SmbShare } | Select Name | Export-csv  -Path c:\Copy_SAN\ShareName$DateDuJour.csv


## Je liste les droits des partages sur \\mon_serveur en bouclant grâce au CSV extrait précédemment

## J'importe mon csv pour le stocker en temp 
$ShareName = Import-Csv -Path "c:\Copy_SAN\ShareName$DateDuJour.csv" -Encoding "UTF8"

 ForEach ($NameShare in $ShareName)
{
    #$n_Name = $ShareName.Name
    Invoke-Command $san {Get-SmbShareAccess -Name $NameShare.Name} | Select Name, AccountName, AccessControlType, AccessRight | Export-csv  -Path "c:\Copy_SAN\ShareAccess$DateDuJour.csv"
}

############# Fin 1er bloc pour gérer plusieurs partages #############

Le contenu du fichier ShareName est bien rempli de cette façon:
"name"
"Partage_1"
"Partage_2"


L'erreur que je prend à l'exécution est la suivante:
Impossible de valider l'argument sur le paramètre « Name ». L’argument est Null. Spécifiez une valeur valide pour l’argument, puis réessayez.
    + CategoryInfo          : InvalidData : (:) [Get-SmbShareAccess], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Get-SmbShareAccess
    + PSComputerName        : Mon_Serveur


Si dans mon terminal, je tape $ShareName, j'ai bien la liste contenu dans le fichier sans les guillemets en début et fin de nom comme "Partage_1"

D'avance merci pour l'aide :) 
Dernière édition: il y a 2 ans 2 mois par Alexis.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 2 mois #31699 par Philippe
salut Alexis

tu execute un script sur un ordi distante via invoke-command
evidemment cet ordi ne peut pas avoir accés à une variable locale
tu doit utiliser par exemple
$using:nameshare.name
pour que cela fonctionne.  petite doc à lire  sur le sujet !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 2 mois #31700 par Alexis
Bonjour Philippe,

Un grand merci à toi, je ne connaissais pas cette variable $using pour sortir du scope local .

J'ai bien le résultat attendu en sortie, c'est super.
par contre, un truc me chagrine et je ne trouve pas ma réponse...

Mon premier export en Csv est complet mais le 2e n'enregistre que la dernière requête, mon CSV ne s'incrémente pas en conservant l'intégralité des résultats attendues via le ForEach.
Invoke-Command $san {Get-SmbShareAccess -Name $using:NameShare.Name} | Select Name, AccountName, AccessControlType, AccessRight | Export-csv  -Path "c:\Copy_SAN\ShareAccess$DateDuJour.csv"
Y'a t'il un moyen de forcer l'export à compléter le CVS plutôt que d'écraser le contenu par le dernier ?

Merci :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 2 mois #31701 par Philippe
oui avec append a rajouter à export-csv :
export-csv -append -path ....

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 2 mois #31704 par Alexis
Un grand merci Philippe !

Je vais tester immédiatement :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 2 mois #31706 par Alexis
Dans la même logique du coup, ça te semble cohérent ?
D'ailleurs, un truc auquel je n'avais pas pensé, c'est l'encodage en UTF8, ça aide :)
J'ai découvert en même temps que -Append -encoding UTF8 :)
########### 2e partie pour gérer plusieurs partages #############
#### NON TESTE ####

## J'importe mon avec les noms des partages et les droits  
$ShareAccess = Import-Csv -Path c:\temp\ShareAccess$DateDuJour.csv

ForEach ($NewShare in $ShareAccess)
{ 
    # $Name_NewShare = $ShareAccess.Name
   Invoke-Command $san {
          New-SmbShare -Name "$using:NewShare.Name" -Path "X:\$NewShare.Name" -FullAccess "DOM\Admins du domaine"
    }           
   Invoke-Command $san {
          Grant-SmbShareAccess -Name "$NewShare.Name" -AccountName "DOM\Utilisa. du domaine" -AccessRight Change -Force
   }
    
 }

########### Fin 2e bloc pour gérer plusieurs partages #############

Merci

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.083 secondes
Propulsé par Kunena