Es gibt PowerShell Skripte, die eine temporäre Laufwerksverbindung aufbauen müssen. Das kann der Fall sein, um beispielsweise eine Datei von einem Share zu holen.
Ich benutze dafür gerne das „New-PSDrive“ Commandlet. Leider hat dieses Commandlet unter Powershell 2.0 einen Bug.
Es gibt aber alternative Lösungen.
Index
New-PSDrive in PowerShell 2.0
Warum überhaupt PowerShell 2.0 verwenden?
Die meisten Administratoren sind warscheinlich schon lange auf Powershell 3.0 oder 4.0 umgestiegen, aber es gibt leider noch Zeiten wo man gezwungen ist mit der Powershell 2.0 zu arbeiten.
Ich schreibe des Öfteren Powershell Scripts für Kunden. Die Skripte laufen später auf Anwender-PCs. Aus diesem Grund bin ich oft an die Powershell 2.0 gebunden, da diese bei Windows 7 der Standard ist.
Credential Parameter
Das „New-PSDrive“ Commandlet bietet zwar den „-Credential“ Parameter an, jedoch funktioniert dieser nicht! Dies kann durchaus zu Frustration und langem Suchen nach einer Lösung führen – Ich berichte aus Erfahrung.
Mehr Infos zum Bug bei Microsoft.
Leider gibt es keine Möglichkeit den Credential Parameter unter Powershell 2.0 zum Funktionieren zu bringen.
Alternative Lösungen
Net use
Als Alternative zu New-PSDrive bietet sich z.B. das bekannte „net use“ an.
„Net use“ kann ohne Weiteres aus einem Powershell-Script heraus gestartet werden.
Um einen Konflikt mit einem eventuell schon vorhandenen Laufwerksbuchstaben zu vermeiden, lässt sich net use auch ohne Laufwerksbuchstaben ausführen!
Beispiel:
net use \\server\share /user:<domain\username> <password> /persisten:no
Für eine genauere Erklärung zum Parameter „/persistent:no“ verweise ich auf meinen anderen Blog-Artikel zum Thema Laufwerksmapping.
Die Verbindung lässt sich dann über den UNC-Pfad („\\server\share“) ansprechen.
Beispielsweise: \\server\share\folder\file.png
ComObject
Es kann aber auch ein ComObject verwendet werden:
$networkObject = New-Object -ComObject WScript.Network
$networkObject.MapNetworkDrive(„X:“,“\\server\share“,$false, „domain\user“, „password“)
Das “$false” bewirkt dasselbe wie „/persistent:no“ bei “net use” (siehe oben)
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>