Netzlaufwerk mit PowerShell verbinden


    Tags: , ,

    Windows-Ordner freigebenWenn man File Shares einen Lauf­werks­buchstaben via Kommando­zeile zuordnen möchte, dann kann man statt net.exe auch PowerShell verwenden. Die Cmdlets des Moduls SmbShare können frei­ge­gebene Ordner anzeigen, verbinden und wieder trennen. PowerShell unterstützt dabei auch neuere SMB-Features wie QUIC und Compression.

    Das Verbinden mit einem Netzlaufwerk umfasst in der Regel folgende Schritte:

    Shares auf einem Remote-Server auflisten

    Um zu sehen, welche Freigaben ein File-Server anbietet, ruft man das Cmdlet Get-SmbShare auf. Verwendet man es ohne Parameter, dann zeigt es nur die File Shares des lokalen Rechners.

    Möchte man die Freigaben eines Remote-Servers ausgeben, dann unterstützt es allerdings den Parameter ComputerName nicht. Man muss hier den Umweg über eine CIM-Session nehmen:

    $cim = New-CimSession -ComputerName server1 -Credential user@contoso.com

    Get-SmbShare -CimSession $cim

    Die Ausgabe enthält neben den benutzer­spezifischen Freigaben standardmäßig auch die admini­strativen Shares wie c$ oder ADMIN$. Dies kann man mit dem Parameter Special unterbinden.

    Get-SmbShare -Special $false

    Freigaben auf einem Remote-Rechner anzeigen

    Alternativ steht für diesen Zweck Get-FileShare zur Verfügung. Es kann nicht nur SMB-, sondern auch NFS-Freigaben erfassen:

    Get-FileShare -CimSession $cim -Protocol NFS

    Share-Berechtigungen abfragen

    Bevor man eine Verbindung herstellt, ist es noch interessant zu wissen, welche Berechtigungen für ein Share konfiguriert sind:

    Get-SmbShareAccess -Name PubDocs -CimSession $cim

    Dieses Beispiel fragt den Remote-Server, zu dem wir weiter oben eine CIM-Session aufgebaut haben, nach den Zugriffsrechten für eine Freigabe mit dem Namen PubDocs.

    Zugriffsrechte auf einem Remote-Share abfragen

    Aktuelle Mappings anzeigen

    Wenn man im ersten Schritt sehen möchte, welche Mappings für Netzlaufwerke bereits existieren, dann ruft man Get-SmbMapping ohne Parameter auf. Alternativ kann man einen Laufwerks­buchstaben angeben, um zu erfahren, mit welchem Share er verknüpft ist:

    Get-SmbMapping u:

    Das Ganze funktioniert auch umgekehrt, indem man mit RemotePath die Freigabe spezifiziert und so den lokalen Laufwerks­buchstaben erhält.

    Laufwerksbuchstaben zuordnen

    Das Cmdlet New-SmbMapping teilt einem Share eine Laufwerks­kennung zu. Es erwartet die Angabe des lokalen Pfads und jenen der Freigabe.

    Zusätzlich kann man dem Aufruf den Benutzernamen und das Passwort mitgeben. Dies erfolgt nicht wie sonst üblich mit einem Credentials-Objekt, sondern im Klartext:

    New-SmbMapping -LocalPath x: -RemotePath \\ds\share1 `
    -user contoso\acon -password P@ssw0rd -SaveCredentials

    Neue Laufwerkszuordnung erstellen mit New-SmbMapping

    Wenn man die Anmeldedaten bei der Herstellung eines weiteren Mappings nicht erneut eingeben möchte, dann kann man sie mit dem zusätzlichen Schalter SaveCredentials speichern.

    Der Schalter Persistent sorgt dafür, dass die Laufwerks­zuordnung über die aktuelle Sitzung hinaus erhalten bleibt.

    Mit der Unterstützung für QUIC und Komprimierung des Netzwerk-Traffics führte Microsoft zuletzt zwei interessante SMB-Features ein. Beide lassen sich mit PowerShell aktivieren:

    New-SmbMapping -LocalPath x: -RemotePath \\ds\share1 -TransportType QUIC

    New-SmbMapping -LocalPath x: -RemotePath \\ds\share1 -CompressData $true

    QUIC setzt auf dem Server die Azure Edition voraus.

    Mapping remote erstellen

    Theoretisch kann man diese Operation so auch auf einem Remote-Rechner ausführen:

    $cim = New-CimSession -ComputerName Server1 -Credential user@contoso.com

    New-SmbMapping -LocalPath u: -RemotePath \\Server2\PubDocs `
    -CimSession $cim -UserName contoso\user -Password Gehe1m

    New-SmbMapping über eine CIM-Session ausführen

    In diesem Fall richtet man auf Server1 ein Mapping für eine Freigabe ein, die auf Server2 liegt. In der Praxis zeigt Get-SmbMapping dann für diese Zuordnung wahrscheinlich den Status Unavailable. Der Grund sind mangelnde Berechtigungen wegen des Second-Hop-Problems.

    Anstatt CredSSP zu konfigurieren, kann man mit Enter-PSSession einfach eine interaktive Remote-Session zu Server1 öffnen und New-SmbMapping darin ausführen.

    Mapping löschen

    Das Trennen einer Laufwerks­zuordnung geschieht schließlich mit Hilfe von Remove-SmbMapping. Dem Cmdlet reicht die Angabe des lokalen oder des entfernten Pfades.

    Zusätzlich kann man durch Verwendung von UpdateProfile dafür sorgen, dass Windows das Laufwerk nach der nächsten Anmeldung nicht erneut zuordnet, sondern dieses permanent löscht:

    Remove-SmbMapping x: -UpdateProfile

    Zusammenfassung

    PowerShell bietet die nötigen Cmdlets, um die vorhandenen Freigaben eines Servers und deren Berechtigungen anzuzeigen. Mit New-SmbMapping ordnet man sie einem lokalen Laufwerks­buchstaben zu.

    Etwas umständlich ist die Remote-Nutzung, weil die Cmdlets den Parameter ComputerName nicht unterstützen und man daher mit CIM-Sessions hantieren muss.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links