66 votes

Connexion à un dossier réseau avec nom d'utilisateur/mot de passe dans Powershell

J'accède souvent à des dossiers réseau partagés dans Powershell pour récupérer des fichiers, etc. Mais si le partage nécessite un nom d'utilisateur/mot de passe, Powershell ne me le demande pas, contrairement à l'Explorateur Windows. Si je me connecte d'abord au dossier dans l'Explorateur Windows, Powershell me permettra ensuite de me connecter.

Comment puis-je m'authentifier dans Powershell ?

73voto

Scott Saad Points 8894

Au premier abord, on a vraiment envie d'utiliser New-PSDrive en lui fournissant des informations d'identification.

> New-PSDrive -Name P -PSProvider FileSystem -Root \\server\share -Credential domain\user

Échecs !

New-PSDrive : Cannot retrieve the dynamic parameters for the cmdlet. Dynamic parameters for NewDrive cannot be retrieved for the 'FileSystem' provider. The provider does not support the use of credentials. Please perform the operation again without specifying credentials.

La documentation indique que vous pouvez fournir un PSCredential mais si vous regardez de plus près, le cmdlet ne prend pas encore en charge cette fonction. Peut-être dans la prochaine version, je suppose.

Par conséquent, vous pouvez soit utiliser net use ou le WScript.Network en appelant l'objet MapNetworkDrive fonction :

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")

Editer pour New-PSDrive dans PowerShell 3.0

Apparemment, avec les nouvelles versions de PowerShell, l'option New-PSDrive La cmdlet fonctionne pour mapper des partages réseau avec des informations d'identification !

New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Public -Credential user\domain -Persist

2 votes

Il y a un bug ouvert pour cela : connect.microsoft.com/feedback/

1 votes

En fait, je pense que le cmdlet le supporte très bien - c'est le fournisseur PSDrive sous-jacent qui ne fait rien avec lui. Toutes les cmdlets *-Item ont un ensemble générique de comportements ; ils les transmettent simplement au fournisseur PSDrive, cependant. Le filtre *-Item est un autre exemple.

3 votes

Notez que à partir de Powershell 3.0 vous pouvez transmettre des informations d'identification lors de la connexion d'un lecteur à des chemins UNC, et si vous utilisez l'attribut -Persist le lecteur sera créé comme un lecteur mappé normal de Windows.

53voto

Ce n'est pas une réponse spécifique à PowerShell, mais vous pourriez vous authentifier sur le partage en utilisant d'abord "NET USE" :

net use \\server\share /user:<domain\username> <password>

Et puis faites ce que vous devez faire dans PowerShell...

2 votes

C'est l'un de ces cas où je suis d'accord avec Anon : "utilisez ce qui fonctionne". En temps normal, j'aurais fait l'effort de fournir une réponse PowerShell, mais pas cette fois-ci :)

0 votes

C'est un bon moyen d'accéder au partage Windows à partir d'autres langues.

0 votes

Je n'ai toujours pas trouvé d'autre moyen de le faire dans powershell : net use \\server\ipc $ /utilisateur:<domaine \username > mot de passe -> cd \\server\share

8voto

Jaykul Points 6484

PowerShell 3 prend en charge cette fonction dès le départ. maintenant.

Si vous êtes bloqué sur PowerShell 2, vous devez essentiellement utiliser l'ancien système net use (comme suggéré précédemment).

1 votes

Lien mort ! 1 2 3

2voto

Don L Points 11

Sur la même machine, j'essaie le même NET USE à partir d'une invite de commande ordinaire et d'une invite de commande PowerShell v2 :

NET USE Link : SharePoint

In CMD cela fonctionne très bien.

In PS il dit qu'il fonctionne bien, et le lecteur est mappé. Cependant, la plupart du temps, l'état du lecteur tel qu'il est listé lorsque vous tapez juste NET USE est vide, et le mappage du lecteur ne fonctionne pas (c'est-à-dire que vous ne pouvez pas obtenir de données à partir du lecteur mappé).

Il s'agit peut-être d'un problème lié à SharePoint, car le NET USE à partir de powershell fonctionne parfois, parfois non, mais il semble tout de même qu'il y ait une différence entre CMD et PS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X