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

Mode arborescent

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  

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