2010-07-14 13 views
3

J'essaie d'optimiser un script de connexion pour le rendre aussi robuste et rapide à exécuter que possible.Quelle est la meilleure façon de mapper les disques dans Powershell?

Le script enregistre un certain nombre de lecteurs, et je peux voir que je peux utiliser:

(New-Object -ComObject WScript.Network).MapNetworkDrive("X:", \\myserver\myshare)) 

ou

net use x: \\myserver\myshare 

mapper les lecteurs.

Quel est le "meilleur" moyen? La méthode "traditionnelle" semble plus robuste, mais est plus lente que la méthode plus récente.

Je reçois également des bizarreries lorsque je teste pour voir si les lecteurs existent. Même si elles s'affichent dans l'Explorateur, parfois lorsque je teste avec:

if (test-path x:) { write "Drive mapped already" } 

il ne renvoie aucun résultat. Cela semble se produire seulement certains de l'époque, mais je n'ai pas élaboré le modèle.

Merci,

Ben

+2

En ce qui concerne le 'chemin de test x:' bizarrerie, pourrait-il être parce que vous tester X: au lieu de X: \ (à savoir le répertoire racine sur ce disque)? Par exemple, que se passe-t-il si le répertoire courant sur le lecteur 'X:' est celui où vous n'avez pas les droits d'accès requis, et par conséquent le test échoue même si 'X:' est mappé? – stakx

+0

Si vous pensez que je vous ai répondu, veuillez marquer comme réponse. Merci! – x0n

Répondre

4

Cartographie d'un disque avec "net use" ne fait pas automatiquement visible dans Powershell comme PSDrive. Ils ne sont pas la même chose malheureusement. Test-Path vérifie seulement un PSPath, qui est soit un chemin UNC, soit un PSDrive (ou qualifié par le fournisseur comme fileystem :: c :) pointant vers un fournisseur powershell.

Ceci est l'une des nombreuses raisons pour lesquelles powershell n'est pas le meilleur shell pour les scripts de connexion.

-Oisin