Accéder au lecteur réseau déjà mappé dans PowerShell

8

J'exécute une installation de Windows Server 2012 dans VMWare Workstation. J'ai activé les dossiers partagés, donc le lecteur Z:est mappé \\vmware-host. Je peux accéder correctement à ce lecteur dans l'Explorateur (je peux accéder Z:à l'intérieur du cmd «normal») et je peux ouvrir correctement les fichiers.

J'ai ouvert PowerShell et j'ai essayé de le faire cd Z:et j'ai eu l'erreur suivante:

cd: Impossible de trouver le chemin 'Z: \' car il n'existe pas.

Pourquoi PowerShell ne peut-il pas trouver le lecteur réseau déjà mappé?

J'ai googlé un peu et trouvé la New-PSDrivecommande. J'ai couru ce qui suit:

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'

mais j'obtiens toujours la même erreur que ci-dessus. Que dois-je faire pour accéder aux dossiers partagés VMWare dans PowerShell.

Rocket Hazmat
la source
Que signale le Get-PSDrive -PSProvider FileSystemrapport lorsque vous ouvrez une nouvelle console Powershell?
jscott
@jscott: Je vois dans une nouvelle console, A, Cet D. Dans la console que j'ai déjà ouverte, je vois aussi Z. Pourquoi la nouvelle console ne s'affiche- Zt-elle pas ?
Rocket Hazmat
3
Utilisez-vous Powershell élevé? Si c'est le cas, essayez de l'exécuter sans "Exécuter en tant qu'administrateur". Vous auriez besoin de re-mapper le lecteur s'il fonctionne en hauteur. stackoverflow.com/questions/4742992/…
jscott
@jscott: Il fonctionne en tant qu'administrateur. J'ai aussi couru Set-ExecutionPolicy -ExecutionPolicy Unrestricted. J'utilise PowerShell pour essayer d'exécuter un script à appeler New-ADUser.
Rocket Hazmat
@jscott: Je viens d'exécuter PowerShell en tant qu'utilisateur (pas administrateur), et il a pu y accéder Z:sans aucun problème.
Rocket Hazmat

Réponses:

8

Vous devez mettre le mappage de lecteur à la disposition de l'utilisateur que vous utilisez Powershell. Vous pouvez effectuer les opérations suivantes pour donner à cet utilisateur le même mappage de lecteur:

net use Z: "\\vmware-host\Shared Folders"

Consultez la question SO suivante: Impossible d'accéder au lecteur réseau dans PowerShell en tant qu'administrateur

jscott
la source
Puis-je également mentionner que Powershell prend en charge l'utilisation de PUSHD et POPD (ou plus formellement: push-location et pop-location) qui peuvent être plus adaptés pour mapper temporairement un lecteur pour une opération spécifique.
Get-HomeByFiveOClock
5

Démarrez-vous cette console PowerShell en tant qu'administrateur ou en tant qu'utilisateur actuel?

Si vous l'exécutez à partir d'une invite de commande non élevée, il devrait voir tous vos lecteurs réseau mappés localement. Je suis dans la même situation que vous en ce moment et x:mappé à \\vmware-host\[folder], et un Get-PSDrive -PSProvider FileSystemme montre tous mes lecteurs localement mappés.

Cependant , si je démarre cette console en tant qu'administrateur, elle ne voit aucun de mes lecteurs mappés locaux, car pour une invite de commande élevée, un contexte de sécurité différent (deuxième) est utilisé pour charger l'application, qui ne partage pas les connexions réseau.

La bonne nouvelle est qu'il vous suffit de mapper le lecteur dans la console d'administration une seule fois et il restera dans ce contexte de sécurité (jusqu'à un redémarrage, je pense).

Si vous souhaitez automatiser cela, vous devez lire les scripts de chargement automatique lorsque vous démarrez une session PowerShell. Fondamentalement, si vous créez un dossier dans votre My Documentsappelé WindowsPowerShellet à l'intérieur qui crée un Microsoft.PowerShell_profile.ps1fichier, il se déclenchera chaque fois que vous démarrez une nouvelle console PowerShell. Vous pouvez y ajouter une net usecommande ou ajouter des fonctions personnalisées que vous avez écrites et que vous souhaitez utiliser.

Par exemple, j'en ai un qui transforme mon curseur en rouge pour les consoles d'administration et possède une fonction que je peux facilement appeler pour signer mes scripts PS1.

Mark Henderson
la source
Oui, c'est ce qui se passait ici. Le lecteur a été mappé en tant qu'utilisateur et PowerShell s'exécutait en tant qu'administrateur. Je suis habitué aux shells Linux, pas à PowerShell.
Rocket Hazmat
C'est un très bon conseil sur l'invite de la console d'administration. Qu'utilisez-vous dans votre profile.ps1 pour détecter si la session est élevée ou non?
stib