2017-09-04 5 views
1

J'ai un problème avec l'obtention d'un driveletter d'un ISO monté sur un réseau. J'ai utilisé Mount-DiskImage -ImagePath $ISOPATH pour le montage. Lorsque j'ai monté le fichier ISO, qui était stocké localement sur le disque D: \, je n'ai eu aucun problème avec l'obtention des informations de volume via powershell: Get-DiskImage -ImagePath $ISOPATH | Get-Volume. Voici comment le script ressemble:Obtenir le driveletter de l'iso monté sur le réseau

Mount-DiskImage –ImagePath $ISOPATH 

$driveletter = (Get-DiskImage -ImagePath $ISOPATH | get-volume).driveletter + ":" 
cd $driveletter\Nanoserver 

Le code ci-dessus fonctionne correctement avec le fichier ISO local. Toutefois, lorsque le fichier ISO a été monté à partir d'un partage réseau, la commande Get-Volume ne fonctionne plus. Il ne voit pas le lecteur nouvellement monté, malgré le fait qu'il est visible et accessible via Windows Explorer. La commande Get-DiskImage -ImagePath $ISOPATH | Get-Volume ne montre plus aucune information, au lieu de ne rien afficher, résultat vide. La seule façon que je vois ce disque via powershell est en utilisant Get-PSdrive commande, cependant, il est difficile pour moi d'obtenir la lettre de manière automatisée avec cette commande. Est-ce que quelqu'un a trouvé une solution à ce problème?

Je fournirais volontiers d'autres informations si nécessaire. Merci

+0

Get-PSDrive | où {$ _. DisplayRoot -eq $ ISOPATH} devrait vous donner la lettre de lecteur. –

+0

Merci David pour la réponse. Malheureusement, cela ne marche pas non plus (le résultat est vide :( – konpro11

Répondre

0

Workaround (non testé) dans la production basée sur la comparaison avant ($vl1) et après ($vl2):

$vl1 = @(Get-Volume); 
$disk = Mount-DiskImage -ImagePath "\\172.19.21.47\www\debian-8.8.0-amd64-netinst.iso" -PassThru ; 
$vl2 = @(Get-Volume); 
$dl = @($vl2 | ? {$vl1 -notcontains $_})[0].DriveLetter 
  • Si vous garantissez que aucun montage de disque simultanés se produisent dans votre système.
  • Peut-être besoin Mise en sommeil après le montage pour vous assurer que la lettre de lecteur attribuée
+0

FIlimonic, merci pour votre réponse.) Le problème est, après avoir monté l'image disque sur le réseau, la commande Get-Volume ne voit pas ce disque, donc il ne sera pas – konpro11

+0

Je l'ai testé sur mon pc W10 Il faut probablement attendre que le disque monte et ajouter une boucle do {try {$ dl = ...} catch {}} while ($ dl -eq $ null) – filimonic