IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Problème de montage de lecteurs réseau


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1
    Par défaut Problème de montage de lecteurs réseau
    Bonjour,

    Voilà, je suis face à un problème qui vient de me faire perdre tout mes cheveux

    Je vous présente d'abord les grandes lignes du script afin de planter le décor.

    On parse un fichier CSV afin de récupérer une liste de dossier.
    Ensuite, pour chacun de ces dossiers, nous allons :
    • Déterminer une lettre de lecteur disponible (généralement Z: )

    • Monter le dossier en cours sur la 1ère lettre disponible

    • Effectuer des opérations de suppression

    • Démonter le lecteur réseau



    Bon, pour le 1er dossier, ça fonctionne parfaitement (lettre de lecteur obtenue : Z)
    Par contre, à partir du deuxième tour.... On obtient bien la lettre Z: pour le lecteur réseau (étant donné que le lecteur a bien été démonté), et lors de l'accès à la ressource par le script... Ça bloque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Get-ChildItem : Lecteur introuvable. Il n'existe aucun lecteur nommé «*Z*».
    Au niveau de C:\TEMP\purgetemp.ps1*: 61 Caractère*: 28
    +     $tListeRep = Get-ChildItem <<<<  $sNomRepSup -force| Where {$_.psiscontai
    ner}
        + CategoryInfo          : ObjectNotFound: (Z:String) [Get-ChildItem], Driv
       eNotFoundException
        + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetC
       hildItemCommand
    J'ai mis une petite pause avant le démontage du lecteur, et chose étonnante : je peux y accéder via l'explorateur, mais le script, lui, non !

    Voici le script ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Write-Host "Ouverture fichier de parametrage: " $sFiccsv -Foregroundcolor "Gray"
    $fficcsv = import-csv -Path $sFiccsv -Header "Repertoire","Jouraconserver","Typepurge"
    
    # si on a au moins une valeur, on parcourt le fichier
    If ($fficcsv -ne $null)
    {
    	# Debut Boucle de lecture du fichier
    	ForEach ($sLigne In $fficcsv)
    	{
    		# Test si la ligne n'est pas vide ou ne correspond pas à l'entête			
    		If ( ($sLigne) -and ($sLigne.Repertoire -ne "Repertoire") )
    		{
    			# Repertoire a purger
    			$sRepPurge = $sLigne.Repertoire
    			If ($sRepPurge)
    			{
    				Write-Host "Ligne en lecture : $sLigne"
    				$stypepurge = $sLigne.Typepurge
    				# Si on a qu'un seul caractère -> Type numérique
    				If ($size -gt 1 )
    				{
    					#Le type de purge est une chaine de caractère
    					$bPurge = $false
    				}
    				else 
    				{
    					#Le type de purge est numérique 1, 2 ou 3
    					$bPurge = $True
    				}
    				# Verifie si le repertoire existe
    				If (Test-Path $sRepPurge)
    				{
    						
    					# Détermine une lettre de lecteur réseau disponible
    
    					$drives = 90..65 -as [char[]]
    					foreach ($drive in $drives) 
    					{
    						$list = Get-PSDrive | ?{$_.Root -eq $drive + ":\"}
    						If($list.Root -ne $drive + ":\") {	
    							break
    						}
    					}
    
    					$driveUsed = $drive + ":"
    					Write-Host "Lecteur défini sur " $driveUsed -ForegroundColor Yellow
    
    					# Montage du dossier en tant que lecteur réseau
    					$WSHNetwork = New-Object -Com WScript.Network
    
    					try{
    #						$WSHNetwork.MapNetworkDrive($driveUsed, $sRepPurge)
    						$cmd = "net use $driveUsed $sRepPurge"
    						Invoke-Expression $cmd
    					}
    					catch{
    						Write-Error "Une erreur s’est produite lors du montage de la ressource : $($_.Exception.MEssage)"
    					}
    					
    					# Parcours le repertoire de façon recursif avec le filtre de date pour obtenir les fichiers a supprimer
    					$tListeFic = Get-Childitem ($driveUsed + "\") -include $sfiltre -recurse -force |Where {$_.LastWriteTime -le "$ddernierjour" -and $_.PSisContainer -eq $false}
    					
    					If ($tListeFic) # Si la liste n'est pas vide
    					{
    						ForEach ($FicASup in $tListeFic)
    						{
    							### Opération de traitement des fichiers ###
    						}
    					} else {
    						Write-Host "Aucun fichier à supprimer ne correspond aux critères"
    					}
    					
    					Write-Host "Démontage de " ($driveUsed.Trim()) -ForegroundColor Yellow
    #					$WSHNetwork.RemoveNetworkDrive($driveUsed, $true, $false)
    					$cmd = "net use $driveUsed /delete /Y"
    					Start-Sleep -Seconds 10
    					Invoke-Expression $cmd
    					Start-Sleep -Seconds 3
    				}
    				Else
    				{
    					Write-Host "Le Repertoire $sRepPurge n'existe pas"
    				}
    			} 
    		}
    	} # Fin Boucle de lecture du fichier
    }
    Else
    {
    	Write-Host "Pas de valeur dans le fichier de parametre "  $sFicLog
    }
     
    Write-Host "Fin Script"
     
    # On ferme le fichier de log
    Stop-Transcript
    J'ai essayé avec MapNetworkDrive et un "net use", mais le résultat est le même (j'ai laissé en commentaire les deux méthodes).

    J'ai joint une capture de ce qui est affiché à la console.
    Par contre, si je relance le script dans l'invite PS, aucun des montages ne réussissent !
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de suchiwa
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2010
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2010
    Messages : 435
    Par défaut
    Bonjour doc78,

    J'ai vécu un peu la même situation.

    Dans mon script j'utilisais un "F: | " à la place d'un "F:\ |"

    Dans ton script, tu affectes bien ligne 39 le ":\" mais ligne 45 non (tu le concatènes plus loin ligne 61).

    Je pense qu'il serait préférable de l'intégrer dans ta variable $driveused
    $driveUsed = ($drive + ":\")

    De plus dans ton exception, il nous retourne la ligne 61...
    "Il n'existe aucun lecteur nommé «*Z*»."
    Effectivement, si *Z* est retourné, il y a un problème dans la construction de ton string. *Z:* ou *Z:\* serait plus probable.

    Cordialement,
    Vincent

Discussions similaires

  1. Problème pour créer un lecteur réseau permanent
    Par jerome2710 dans le forum Réseau
    Réponses: 1
    Dernier message: 31/01/2015, 11h41
  2. Réponses: 1
    Dernier message: 25/08/2009, 08h53
  3. [VB.NET] montage d'un lecteur réseau pour windows
    Par xufux dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2008, 22h13
  4. Montage Lecteur Réseau Python Ldap
    Par fredouzzz dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 24/02/2008, 02h36
  5. Problème lecteur réseau et ouverture de session
    Par kgb1917 dans le forum Administration
    Réponses: 5
    Dernier message: 15/02/2008, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo