wolfi3300
Goto Top

Neuer Dateiserver, wie automatisiert Laufwerksverknüpfungen anpassen?

Liebes Forum,

unser alter 2003er File-Server soll durch einen neuen 2008er R2 Server ersetzt werden. Ich möchte das so sanft wie möglich machen und zuerst mal die ganzen Home und Abteilungsverzeichnisse auf den neuen Server migrieren.

Die User haben zur Zeit ein bis mehrere Laufwerke zum alten Fileserver verknüpft. Dies ist meist das Laufwerk H: für das Homeverzeichnis \\server1\Username und das Laufwerk I: mit dem Abteilungsverzeichnis \\server1\Abteilung.

Gibt es schon irgendwelche fertigen Scripts mit denen ich dann am User-PC hergehen kann und zum Beispiel alle Verknüpfungen wo \\server1 vorkommt automatisiert auf \\server2 umstellen? Mit VB-Script sollte sowas eigentlich möglich sein, allerdings habe ich damit wenig Erfahrung.

Danke für nen Tipp!
Wolfi3300

Content-ID: 231816

Url: https://administrator.de/contentid/231816

Ausgedruckt am: 18.11.2024 um 07:11 Uhr

Ausserwoeger
Ausserwoeger 06.03.2014 um 11:01:02 Uhr
Goto Top
Hi

Also ich arbeite hier immer mit den Windows internen GPOs. Hier hast du die Laufwerke verschieben bzw. den Pfad anpassen. Oder Netzlaufwerke per GPO mappen.

Beim Basislaufwerk der benutzer kannst du im AD den Pfad umdrehen indem du einfach als Pfad \\Server2\%username% einträgst bei allen Usern.

LG Andy
wolfi3300
wolfi3300 06.03.2014 um 11:31:35 Uhr
Goto Top
Hallo Andy,

danke für dein Feedback. Allerdings bringt mir das nichts. Es gibt User, welche auf dem Server 3 oder mehr Verzeichnisse verknüpft haben. Es sollten alle Einträge die auf \\Server1\ zeigen auf \\Server2\ gemappt werden.

LG Wolfi
Ausserwoeger
Ausserwoeger 06.03.2014 um 11:37:19 Uhr
Goto Top
Hi

Wie werden die Laufwerke den jetzt verbunden ? Per skript oder per GPO ?

Wenn du per Skript die Laufwerke gemappt hast kannst du diese einfach in der Skriptdatei anpassen.

Wenn du sie Per GPO gamappt hast kannst du die Laufwerke auch einfach in der GPO richtigstellen und aktualisieren lassen

LG
Matze208
Matze208 06.03.2014 um 11:54:06 Uhr
Goto Top
Hallo,

wenn du z.B. über das Login-Script die Laufwerke mappst, kannst du das ganze über Gruppen machen. z.B. wenn in Gruppe home_alt, dann werden die Verzeichnisse auf \\server1\username$\ gemappt oder wenn in Gruppe home_neu dann auf dem neuen srv. So bleibt dann im Windows-Explorer der Laufwerksbuchstabe gleich. Die Abteilungslaufwerke, sollten i.d.R. auch über AD-Gruppen eingebunden worden sein, so kannst du das ebenfalls wieder über das Script oder GPO lösen. Oder wurden die Shares manuell per Hand eingebunden ?

Gruß Matze
wolfi3300
wolfi3300 06.03.2014 um 11:58:55 Uhr
Goto Top
Hallo!

Die Shares wurden je nach Bedarf händisch verknüpft. Wer einen bestimmten Share benötigt, hat den irgendwann mal verknüpft und sein Rechner hat sich das gemerkt. Das ganze hat also kein System dahinter, welches man über ein Script/GPO steuern könnte.

Ich bräuchte quasi ein Script, welches hergeht und alle mappings durchgeht und überall wo \\server1\ steht, dies auf \\server2\ abändert.

LG Wolfi
Ausserwoeger
Ausserwoeger 06.03.2014 um 12:06:05 Uhr
Goto Top
Zitat von @wolfi3300:

Hallo!

Die Shares wurden je nach Bedarf händisch verknüpft. Wer einen bestimmten Share benötigt, hat den irgendwann mal
verknüpft und sein Rechner hat sich das gemerkt. Das ganze hat also kein System dahinter, welches man über ein
Script/GPO steuern könnte.

Ich bräuchte quasi ein Script, welches hergeht und alle mappings durchgeht und überall wo \\server1\ steht, dies auf
\\server2\ abändert.

LG Wolfi

Hi

Dann würde ich eine GPO erstellen und alle Laufwerke die gemappt sind entfernen lassen und die Richtigen Laufwerke den benutzern zur verfügung stellen. Ob diese händich gemappt wurden oder nicht ist egal.

Wenn du angibst das alle netzlaufwerke von Laufwerksbuchstabe D bis Z entfernt werden sollen sind alle weg und du kannst diese in der selben GPO dann richtig zuweisen lassen.

LG
Matze208
Matze208 06.03.2014 um 12:58:51 Uhr
Goto Top
Hallo,

das wäre jetzt der ideale Zeitpunkt zum neustrukturieren deiner bisherigen Umgebung. Wenn sowiso die Netzlaufwerke neu eingebunden werden müssen, dann kannst du dir ausgeben lassen, welche user auf welche Netzlaufwerke zugreifen, dem entsprechend mit AD-Gruppen zusammenfassen und dementsprechend dann die Laufwerke per GPO oder Script automatisch mappen lassen. So ersparst du dir in Zukunft ähnliche Angelegenheiten. Wie sieht es mit der Rechtevergabe auf den Netzlaufwerken aus? Werden diese über AD-Gruppen geregelt?

Bzgl. deiner Frage, mit net use kannst du dir die entsprechenden gemappten Netzlaufwerke anzeigen lassen, und dementsprechen dann neu einbinden. Aber wie schon Ausserwoeger geschrieben hat, sinnvoller ist es alle zentral entfernen zu lassen und dann neu und strukturiert zu mappen.

Gruß Matze
wolfi3300
wolfi3300 06.03.2014 um 13:06:34 Uhr
Goto Top
In unserem Netzwerk (~130 User) ist kaum ein User wie der andere. Ich müsste vermutlich für die 130 User an die 70 Gruppen einrichten um das so abbilden zu können. Das ist quasi nicht wirklich durchführbar. Zuerst erheben, welche User sich wohin verbinden und dann die Gruppen anlegen und dann via GPO verknüpfen lassen klingt für mich nach riesem Aufwand. Ich möchte nicht zu jedem Rechner gehen und mir die Verknüpfungen ansehen.

Ein fertiges Tool welches den Servernamen ändert scheint es wohl nicht zu geben? Bin schon am überlegen ob ich mir nicht in C# was bastle, was die Mappings ausliest, löscht und mit neuem Server neu setzt. Denke das wird die allerschnellste Lösung sein?

LG
Ausserwoeger
Ausserwoeger 06.03.2014 um 13:10:29 Uhr
Goto Top
Hi

Da kann sein wenn du ein über Batchfile arbeitest musst du auch wissen was der User braucht und kannst auch nur die alten Laufwerke entfernen und neue Mappen.

Wenn du dir so ein Tool machst wäre es nett den Code hier zu posten.

LG
wolfi3300
wolfi3300 06.03.2014 aktualisiert um 13:16:08 Uhr
Goto Top
Zitat von @Ausserwoeger:

Hi

Da kann sein wenn du ein über Batchfile arbeitest musst du auch wissen was der User braucht und kannst auch nur die alten
Laufwerke entfernen und neue Mappen.

Wenn du dir so ein Tool machst wäre es nett den Code hier zu posten.

LG

Naja, theoretisch könnte es so klappen.

1./ ein "net use" abschicken und das ergebnis in ein textfile ausgeben.
2./ das Textfile parsen und alle Mappings wo \\server1\xyz[n] vorkommt löschen
3./ alle Mappings mit \\server2\xyz[n] neu setzen

Wenn das noch wer anderer brauchen kann, dann kann ich's natürlich für einen Download zur Verfügung stellen (vorausgesetzt ich bekomme die Software gebacken) face-smile

LG
Ausserwoeger
Ausserwoeger 06.03.2014 um 13:17:36 Uhr
Goto Top
Zitat von @wolfi3300:

Naja, theoretisch könnte es so klappen.

1./ ein "net use" abschicken und das ergebnis in ein textfile ausgeben.
2./ das Textfile parsen und alle Mappings wo \\server1\xyz[n] vorkommt löschen
3./ alle Mappings mit \\server2\xyz[n] neu setzen

Wenn das noch wer anderer brauchen kann, dann kann ich's natürlich für einen Download zur Verfügung stellen
(vorausgesetzt ich bekomme die Software gebacken) face-smile

LG

Hi

Jo hier gibts auch welche die das Problem mit der Powershell lösen oder lösen möchten.

Powershell Netzlaufwerke trennen

LG Andy
wolfi3300
wolfi3300 06.03.2014 aktualisiert um 15:27:30 Uhr
Goto Top
Hallo,

War nun über C# gar nicht so schlimm, selbst für mich als Gelegenheitsprogrammierer. Das Programm tut schon was es soll. Das Hauptproblem war Anfangs, dass ich zwischen den net use-Commandos scheinbar eine gewisse Zeit vergehen lassen muss, da das BS offensichtlich die Shares nicht so schnell verlinkt und dann so mancher fehlte. Jetzt wird nach jedem net-use command 1.5 Sekunden gewartet und so klappts jetzt recht gut

ServerChanger hab ich das Teil getauft. Wird so aufgerufen: ServerChanger.exe Server1 Server2
wobei Server1 der aktuell gemappte Server ist
Server2 ist der Server auf den der Share geändert werden soll.

Es werden nur aktive Links geändert, also die mit Status "OK".

Hab's zum Download zur Verfügung gestellt, sollte es mal wer brauchen: http://ruthner.at/Software/ServerChangerV01.zip

LG
Wolfgang
wolfi3300
wolfi3300 06.03.2014 um 15:20:42 Uhr
Goto Top
Hier noch der Quellcode in C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace ServerChanger
{
    class Program
    {
        static int Main(string args)
        {
            Console.WriteLine("ServerChanger V0.1 by Wolfgang Ruthner 2014 (http://www.ruthner.at)");  

            if (args.Length != 2)
            {
                Console.WriteLine("Please enter Server1 and Server2 as argument.");  
                return 1;
            }

            string server1 = args;
            string server2 = args[1];

            Process P = new Process();
            P.StartInfo.FileName = "net";  
            P.StartInfo.Arguments = "use";  
            P.StartInfo.RedirectStandardOutput = true;
            P.StartInfo.RedirectStandardError = true;
            P.StartInfo.UseShellExecute = false;
            P.Start();
            string result = P.StandardOutput.ReadToEnd();

            string lines = Regex.Split(result, "\r\n");  

            int counter = 0;
            foreach (string line in lines)
            {
                if (line.IndexOf("OK", 0) == 0)  
                {
                    // Wert 11 = Laufwerksbuchstabe, zbsp H:
                    // Wert 19 ist verknüpfte Freigabe zbsp \\\\idefix\\wolfgang
                    string werte = Regex.Split(line, " ");  

                    if (werte[19].IndexOf(server1, 0) > 0)   // Server1-String (args) wurde gefunden?
                    {
                        // Mapping löschen
                        P.StartInfo.Arguments = string.Format("use {0} /DELETE /Y", werte[11]);  
                        P.Start();
                        Thread.Sleep(1500);
                        
                        // Serverstring ändern
                        string neuerLink = werte[19].Replace(server1, server2);
                        // neuen Serverstring setzen
                        P.StartInfo.Arguments = string.Format("use {0} {1} /persistent:yes", werte[11], neuerLink);  
                        P.Start();
                        Thread.Sleep(1500);
                        //result = P.StandardOutput.ReadToEnd();
                        //Console.WriteLine(result);

                        counter++;
                        Console.Write(counter);
                        Console.WriteLine("./ " + werte[11] + " -> " + neuerLink);  
                    }
                }
            }
            if (counter == 0) Console.WriteLine("Nothing changed...");  
            return 0;

        }
    }
}
clSchak
clSchak 07.03.2014 um 21:35:59 Uhr
Goto Top
Hi

(auch wenn der Thread schon gelöst ist)

Wenn du eine MS Domäne >=2008 hast - warum machst dann nicht alles via DFS? Damit sparst du dir die "harten" links auf die Server und kannst die Storage Server einfach wechseln ohne das der Benutzer überhaupt etwas machen muss.

Wir haben das vor 2 Jahre umgestellt und wir mussten bisher 3 mal die Fileserver tauschen weil die Kapazitäten nicht mehr ausreichten, zum Übergang einfach den neuen Fileserver als zusätzlicher Storagepool eingebunden, Replikation an und an einem WE dann den alten Server aus dem Pool entfernt - Daten inkl. Berechtigungen sind sauber repliziert und der Benutzer muss rein gar nichts machen face-wink

Weiterer Vorteil: du kannst einzelne Unterpfade auf verschiedene Server verteilen ohne das der Anwender das mitbekommt.

Das einbinden der DFS Pfade einfach via GPO, dann kannst das auch Benutzergruppen gesteuert durchführen und jedem MA entsprechend seiner Gruppenzugehörigkeit auch Abteilungslaufwerke zuweisen.

Anbei der Link von MS zum einrichten
http://technet.microsoft.com/de-de/library/cc732863(v=ws.10).aspx
Matze208
Matze208 28.03.2014 um 18:15:35 Uhr
Goto Top
Hallo,

eine weitere Möglichkeit wäre über DNS-Aliase. So kann dann auch der Fileserver umgezogen werden und die Nutzer können sich wieder mit ihren bisherigen Shares verbinden. Also z.B. für Server01 einen Alias wie \\share01\ einrichten. Sollten einmal Shares umgezogen werden müssen, so kann man dann die Verzeichnisse auf den neuen Server kopieren und dann für den neuen Server entsprechend den Alias auf \\share01\ setzen. So muss bei den Nutzern keine konfiguration mehr vorgenommen werden.

Gruß Matze