Jump to content
Stibo

Powershell und Netzlaufwerke - trennen klappt nicht

Empfohlene Beiträge

Hallo zusammen,

 

ich schreibe gerade ein kleines Skript, mit dem sich Nutzer ein bestimmtes Netzlaufwerk (nach Aufnahme des Servers in die Domain, momentan steht er noch Standalone und die Mappings geschehen mit lokalen Benutzern) neu mappen sollen. Aufgebaut ist es folgendermaßen

 

1. Der User wird gefragt, unter welchem aktuellen Buchstaben sein Laufwerk verbunden ist

2. Das Mapping wird gelöscht

3. Der User wird nach seinen alternativen Credentials abgefragt

4. Das Mapping wird neu aufgebaut

 

So sieht der Code bislang aus:

 

# Skript zum Wiederverbinden der Freigaben des Ablageservers

# Abfragen des Laufwerkbuchstabens

Write-Host "Unter welchem Laufwerksbuchstaben ist Ihre Freigabe derzeit verbunden?"
Write-Host "Bitte den Buchstaben ohne Doppelpunkt eingeben und Enter-Taste drücken:"
$LWB = Read-Host

# Bereits verbundenes Laufwerk löschen
Remove-PSDrive -Name $LWB -PSProvider FileSystem -Scope Global

$Benutzer = Get-Credential -UserName "domain\$env:UserName" -Message "Bitte das tägliche Windowspasswort eingeben"
New-PSDrive –Name "$LWB" –PSProvider FileSystem -Root "\\servername.localdomain\Share" -Credential $Benutzer -Persist

 

Das spuckt die Console aus:

 

PS C:\Windows\System32\WindowsPowerShell\v1.0> P:\PowerShell\Ablageserver.ps1
Unter welchem Laufwerksbuchstaben ist Ihre Freigabe derzeit verbunden?
Bitte den Buchstaben ohne Doppelpunkt eingeben und Enter-Taste drücken:
Q
New-PSDrive : Der lokale Gerätename wird bereits verwendet
At P:\PowerShell\Ablageserver.ps1:13 char:1
+ New-PSDrive –Name "$LWB" –PSProvider FileSystem -Root "\\Servername.localdomain ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Q:PSDriveInfo) [New-PSDrive], Win32Exception
    + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
 

PS C:\Windows\System32\WindowsPowerShell\v1.0> 

 

Allem Anschein nach wird das Laufwerk überhaupt nicht getrennt. Wenn ich mit net use überprüfe, welche LWs noch gemappt sind, taucht es (Q) auch weiterhin auf.

Was mache ich falsch? :confused: Bin für jede Hilfe dankbar! :) Und: Gruppenrichtlinien können wir in diesem Fall leider nicht benutzen, weil die User alle in derselben OU sind, aber verschiedene Freigaben nutzen.

 

[Edit]

 

Ich habe vermutlich die Antwort gefunden: Laufwerkmappings, die mit "net use" verbunden wurden, werden allem Anschein nach durch Remove-PSDrive nicht entfernt. Stellt sich mir die Frage, ob man irgendwie rausfinden kann, wie das Laufwerk gemappt wurde und per Schalter in dem Skript abfragt, welche Methode genutzt wurde...?

bearbeitet von Stibo

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Im Zweifel ist "net use" hier wohl sowieso die robustere Wahl. Ich würd einfach bei Laufwerksmappings immer "net use" benutzen (wenn GPOs keine Wahl sind - wäre vielleicht ne prima Gelegenheit, mal aufzuräumen und doch GPOs einzusetzen ;-) )

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 17 Stunden schrieb BOfH_666:

Im Zweifel ist "net use" hier wohl sowieso die robustere Wahl. Ich würd einfach bei Laufwerksmappings immer "net use" benutzen (wenn GPOs keine Wahl sind - wäre vielleicht ne prima Gelegenheit, mal aufzuräumen und doch GPOs einzusetzen ;-) )

 

Das Problem hierbei ist, dass ich/wir nicht die Hoheit über die Clients habe(n). Und bis wir hier die GPOs durchgesetzt haben ist 2019 wahrsch. auch wieder vorbei... ;)

 

vor 17 Stunden schrieb Sunny61:

Vorher mit einer Batch alle verbundenen Laufwerke trennen:

 

 


net use * /delete /yes

 

 

 

Auf die Idee kam ich auch schon (aber dediziert auf das entsprechende Laufwerk, also das, was der User eingibt), aber hat nicht funktioniert.

 

vor 16 Stunden schrieb tesso:

Probier es mal mit Remove-SmbMapping

 

Werde ich gleich testen, danke!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 56 Minuten schrieb Stibo:
vor 18 Stunden schrieb Sunny61:

Vorher mit einer Batch alle verbundenen Laufwerke trennen:

 

 



net use * /delete /yes

 

 

 

Auf die Idee kam ich auch schon (aber dediziert auf das entsprechende Laufwerk, also das, was der User eingibt), aber hat nicht funktioniert.

Nicht funktioniert hilft an der Stelle ungemein. Genauer geht es nicht? Fehlermeldungen gab es keine?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor einer Stunde schrieb Sunny61:

Nicht funktioniert hilft an der Stelle ungemein. Genauer geht es nicht? Fehlermeldungen gab es keine?

 

Ah, ich hab' die Fehlermeldung vergessen mit reinzukopieren, scusa me:

 

Unter welchem Laufwerksbuchstaben ist Ihre Freigabe derzeit verbunden?
Bitte den Buchstaben ohne Doppelpunkt eingeben und Enter-Taste drücken:
Q
net : Die Netzwerkverbindung konnte nicht gefunden werden.
At P:\PowerShell\Ablageserver.ps1:10 char:1
+ net use $LWB /d
+ ~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Die Netzwerkver...efunden werden.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

 

Es wird einfach kein gemapptes Laufwerk gefunden.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielleicht kannst Du ja diesen Teil des Scriptes sowieso etwas "tweaken"/"pimpen". ;-) Ich bin immer skeptisch, wenn Anwender eine Wahl treffen sollen und dabei quasi völlig freie Hand haben. Ich fände es deutlich weniger fehlerträchtig, wenn sie in solch einem Fall nur die Wahl hätten, aus einer Liste von Möglichkeiten, die eine Richtige auszuwählen. Also wenn 4 oder 5 Netzlaufwerke existieren, diese als Auswahlliste anbieten und keine anderen Eingaben zulassen.

Vielleicht sogar noch besser - der Pfad zur Freigabe sollte doch eigentlich bekannt sein - dann könntest Du danach suchen und das Laufwerk trennen ohne den AW behelligen zu müssen. Für das Neuverbinden der neuen Freigabe würde wieder das eben gesagte gelten - nur die sinnvollen Optionen zur Auswahl anbieten.

bearbeitet von BOfH_666

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 1.2.2019 um 14:27 schrieb BOfH_666:

Vielleicht kannst Du ja diesen Teil des Scriptes sowieso etwas "tweaken"/"pimpen". ;-) Ich bin immer skeptisch, wenn Anwender eine Wahl treffen sollen und dabei quasi völlig freie Hand haben. Ich fände es deutlich weniger fehlerträchtig, wenn sie in solch einem Fall nur die Wahl hätten, aus einer Liste von Möglichkeiten, die eine Richtige auszuwählen. Also wenn 4 oder 5 Netzlaufwerke existieren, diese als Auswahlliste anbieten und keine anderen Eingaben zulassen.

Vielleicht sogar noch besser - der Pfad zur Freigabe sollte doch eigentlich bekannt sein - dann könntest Du danach suchen und das Laufwerk trennen ohne den AW behelligen zu müssen. Für das Neuverbinden der neuen Freigabe würde wieder das eben gesagte gelten - nur die sinnvollen Optionen zur Auswahl anbieten.

 

Nun ist es so, dass sich meine Scriptfähigkeiten in Grenzen halten. ;) Die Idee hatte ich auch, aber die Umsetzung traue ich mir nicht zu. Daher habe ich zu dem gegriffen, von dem ich dachte, dass das klappen könnte.

 

Am 1.2.2019 um 18:26 schrieb Sunny61:

Da fällt mir nur noch die UAC ein. Kann es sein, dass die User lokale Adminrechte haben?

 

Das muss ich erst verifizieren, ich glaube nicht, aber sicher bin ich mir nicht.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 9 Stunden schrieb Stibo:

Nun ist es so, dass sich meine Scriptfähigkeiten in Grenzen halten. ;)

Na wenn das nicht die perfekte Gelegenheit ist, sich endlich tiefer in Powershell einzuarbeiten!?!?  ;-):D 

 

Speziell bei Powershell finde ich die Eintstieghürde extrem niedrig. So lange es noch verfügbar ist, könntest Du Dich z.B. in der Microsoft Virtual Academy ein bissl "berieseln" lassen. Der Einstiegskurs Getting Started with Powershell ist immernoch sehr empfehlenswert - auch wenn er nicht mehr taufrisch ist. Das kostet Dich nur ein wenig Deiner Zeit, bringt Dich aber enorm vorwärts. Besonders, wenn Du vorhast, Dich noch eine Weile in Windows-basierten System-Umgebungen zu bewegen.

 

Und wenn Du irgendwo stecken bleibst, kannst Du ja immernoch hier fragen, oder hier oder hier oder hier oder hier:D 

bearbeitet von BOfH_666

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jaaa ... da geht er natürlich erst hin, wenn er ein bissl Erfahrung gesammelt hat und sich die Anfänger-Hilfe durchgelesen hat und sich auch dran hält ... dann klappt das schon.  ;-):D

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@tesso: Remove-SMBShare kann ich leider nicht nutzen, weil alle Clients noch Windows 7 sind.

 

vor 14 Stunden schrieb BOfH_666:

Na wenn das nicht die perfekte Gelegenheit ist, sich endlich tiefer in Powershell einzuarbeiten!?!?  ;-):D 

 

Speziell bei Powershell finde ich die Eintstieghürde extrem niedrig. So lange es noch verfügbar ist, könntest Du Dich z.B. in der Microsoft Virtual Academy ein bissl "berieseln" lassen. Der Einstiegskurs Getting Started with Powershell ist immernoch sehr empfehlenswert - auch wenn er nicht mehr taufrisch ist. Das kostet Dich nur ein wenig Deiner Zeit, bringt Dich aber enorm vorwärts. Besonders, wenn Du vorhast, Dich noch eine Weile in Windows-basierten System-Umgebungen zu bewegen.

 

Und wenn Du irgendwo stecken bleibst, kannst Du ja immernoch hier fragen, oder hier oder hier oder hier oder hier:D 

 

Ich versuche schon sehr lange, mich tiefer in Powershell einzuarbeiten, aber so richtig gelingen will mir das nicht; ich bin mir ziemlich sicher ich weiß auch weshalb, nur kriege ich das Problem auf kurz- bis mittelfristige Sicht wahrscheinlich nicht gelöst. Den MVA-Kurs habe ich sogar schon durchgesehen / -gearbeitet, der ist tatsächlich sehr hilfreich. Ich bin Dir / Euch wirklich dankbar für die Hilfe bisher, aber ich habe an dieses Thema für mich einen Haken gemacht und verwende eine ganz simple Batchdatei. Die mag eventuell nicht die schönste Option sein, aber in einem Test hat sie super funktioniert und liefert das, was ich brauche.

 

vor 9 Stunden schrieb daabm:

Olaf, zu Stackoverflow solltest ihn nicht schicken - da gibts nur gleich Mecker wegen "zu unspezifisch" und blah... :-)

 

Das ist mir schon passiert,. :D ich weiß, was Du meinst.

 

 

 

Das Thema hat sich dann erledigt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Werbepartner:



×