Netzwerkressource ohne Laufwerksbuchstabe via Batch bzw. Scrip erstellen
Hallo,
ich habe in einem größeren Netzwerk mit Windows 2008 (R2) Server das Problem dass mir bei einigen Nutzern die Laufwerksbuchstaben ausgehen da die Geschäftsleitung thematische Netzlaufwerke wünscht.
Bisher habe ich via net use die Laufwerke vergeben. Das reicht nun nicht mehr aus da ich keine Buchstaben mehr frei habe.
Es gibt ja die Möglichkeit eine Netzwerkressource als Verknüpfung einzubinden so das sie auch im Explorer und in den Programmen z.B. zum Speicher von Daten auswählbar ist. Im Explorer erledigt man das mit wenigen Klicks, unter Windows 7 z.B. mittels Rechtsklick und Netzwerkadresse hinzufügen.
Ich weiß das sowas auch automatisiert geht weil unter anderem der Server 2012 (R2) Essentials solch einen Netzwerkordner als Verknüpfung anlegt. Leider weiß ich nicht WIE man das via batch oder script erledigt. Meine längere Suche im Web half hier auch nicht.
Hat jemand sowas schon mal via batch erledigt? Welchen befehl nutzt man? Ich möchte es lieber als script und nicht via GPO, was wohl auch geht, erledigen. Auch weil es sich z.T. um einen Terminalserver handelt und ich wirklich nur userbasiert arbeiten will.
Ziel ist scriptgesteuert einen oder mehrere Netzwerkpfade im Explorer unter einem Namen ohne Verwendung eines Buchstabens zur Verfügung zu stellen und diese ggf. auch wieder zu entfernen.
Vielen Dank für eure Tips!
ich habe in einem größeren Netzwerk mit Windows 2008 (R2) Server das Problem dass mir bei einigen Nutzern die Laufwerksbuchstaben ausgehen da die Geschäftsleitung thematische Netzlaufwerke wünscht.
Bisher habe ich via net use die Laufwerke vergeben. Das reicht nun nicht mehr aus da ich keine Buchstaben mehr frei habe.
Es gibt ja die Möglichkeit eine Netzwerkressource als Verknüpfung einzubinden so das sie auch im Explorer und in den Programmen z.B. zum Speicher von Daten auswählbar ist. Im Explorer erledigt man das mit wenigen Klicks, unter Windows 7 z.B. mittels Rechtsklick und Netzwerkadresse hinzufügen.
Ich weiß das sowas auch automatisiert geht weil unter anderem der Server 2012 (R2) Essentials solch einen Netzwerkordner als Verknüpfung anlegt. Leider weiß ich nicht WIE man das via batch oder script erledigt. Meine längere Suche im Web half hier auch nicht.
Hat jemand sowas schon mal via batch erledigt? Welchen befehl nutzt man? Ich möchte es lieber als script und nicht via GPO, was wohl auch geht, erledigen. Auch weil es sich z.T. um einen Terminalserver handelt und ich wirklich nur userbasiert arbeiten will.
Ziel ist scriptgesteuert einen oder mehrere Netzwerkpfade im Explorer unter einem Namen ohne Verwendung eines Buchstabens zur Verfügung zu stellen und diese ggf. auch wieder zu entfernen.
Vielen Dank für eure Tips!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303498
Url: https://administrator.de/forum/netzwerkressource-ohne-laufwerksbuchstabe-via-batch-bzw-scrip-erstellen-303498.html
Ausgedruckt am: 22.12.2024 um 14:12 Uhr
16 Kommentare
Neuester Kommentar
Hier ist das Anlegen von Verknüpfungen via Group Policy Preferences ganz gut beschrieben:
https://www.windowspro.de/wolfgang-sommergut/desktop-symbole-anlegen-loe ...
Aber ob man jetzt viele Laufwerke im Arbeitsplatz hat oder zig Verknüpfungen auf dem Desktop, ordentlicher und intuitiver wird es dadurch nicht. Zumal es ja auch Anwendungen gibt, die intern keine UNC-Pfade unterstützen sondern nur Laufwerksbuchstaben.
https://www.windowspro.de/wolfgang-sommergut/desktop-symbole-anlegen-loe ...
Aber ob man jetzt viele Laufwerke im Arbeitsplatz hat oder zig Verknüpfungen auf dem Desktop, ordentlicher und intuitiver wird es dadurch nicht. Zumal es ja auch Anwendungen gibt, die intern keine UNC-Pfade unterstützen sondern nur Laufwerksbuchstaben.
Zitat von @der-suchende:
Danke für den Tip. probiere ich aus. Ich muß gestehen ich bin mit GPOs noch nicht so ganz Freund. Muß mich da weiter einarbeiten.
Das halte ich für richtig und gut. Mit GPOs fast Du größere Flexibilität auch hinsichtlich der Benennung der Verlinkung. Das geht mit mklink nämlich nicht.Danke für den Tip. probiere ich aus. Ich muß gestehen ich bin mit GPOs noch nicht so ganz Freund. Muß mich da weiter einarbeiten.
In einer GPO schaust Du unter:
Benutzerkonfiguration -> Einstellungen -> Windows-Einstellungen -> Laufwerkszuordnungen
Dort kannst Du Netzlaufwerke erstellen oder eben diese Ordnerverlinkungen.
Der Vorschlag von @Winary ist auch nicht schlecht, Du musst aber aufpassen, wie Du ihn umsetzt, denn sonst kann es sein, dass der DFS-Namespace nicht verfügbar ist, wenn der DC mit der PDC-Rolle down ist.
http://serverfault.com/questions/674051/dfs-namespace-inaccessible-when ...
Zielgruppenadressierung auf Elementebene
Das kann man für alles, was du in einer GPP anlegst einrichten. Wenn du eine Verknüpfung anlegst hast du das unter dem Reiter "Gemeinsame Optionen". Du kannst also die eine Verknüpfung nur auf Nutzer1/Computer1/etc. und die andere auf Nutzer2/Computer2/etc. anlegen lassen und das in einer einzigen GPO.
http://blog.pmd-media.com/2009/08/18/desktop-verknupfungen-via-gruppenr ...
Nicht das OS auswählen sondern Benutzer oder Sicherheitsgruppe.
Das kann man für alles, was du in einer GPP anlegst einrichten. Wenn du eine Verknüpfung anlegst hast du das unter dem Reiter "Gemeinsame Optionen". Du kannst also die eine Verknüpfung nur auf Nutzer1/Computer1/etc. und die andere auf Nutzer2/Computer2/etc. anlegen lassen und das in einer einzigen GPO.
http://blog.pmd-media.com/2009/08/18/desktop-verknupfungen-via-gruppenr ...
Nicht das OS auswählen sondern Benutzer oder Sicherheitsgruppe.
In den GPP hast du auch wirklich eine Verknüpfung erstellt?
Der Speicherort war auch der Desktop o.Ä. (Arbeitsplatz geht nicht!)? z.b. C:\Users\%username%\Desktop
Und dein Zielpfad war auch \\Server\Freigabe ?
Ich wüsste nicht inwieweit die von mir verlinkte Anleitung verbesserungswürdig wäre, außer das mit dem Betriebssystem.
Poste doch mal ein Bild mit der Verknüpfung aus den GPP, die du angelegt hast.
Der Speicherort war auch der Desktop o.Ä. (Arbeitsplatz geht nicht!)? z.b. C:\Users\%username%\Desktop
Und dein Zielpfad war auch \\Server\Freigabe ?
Ich wüsste nicht inwieweit die von mir verlinkte Anleitung verbesserungswürdig wäre, außer das mit dem Betriebssystem.
Poste doch mal ein Bild mit der Verknüpfung aus den GPP, die du angelegt hast.
Eine andere Möglichkeit ist Verzeichnisverknüpfungen (Symlinks) zu nutzen:
Diese Verknüpfungen kannst du in Windows selber erstellen
usw.
Ich stimme aber mit den Kollegen absolut überein, DFS mit ABE wäre absolut die einzig richtige Entscheidung bei so einem Szenario.
Diese Verknüpfungen kannst du in Windows selber erstellen
mklink /d C:\Share1 \\Server\ShareXYZ
Ich stimme aber mit den Kollegen absolut überein, DFS mit ABE wäre absolut die einzig richtige Entscheidung bei so einem Szenario.
Hallo der-suchende,
Netzwerkadressen lassen sich wie folgt scriptbasiert hinzufügen.
Du hast bereits richtig beschrieben, wie man sie über die GUI erzeugen kann. Leider gibt es keine Tools oder fertige cmdlets für die PowerShell, die das übernehmen können. Daher stellt sich zunächst die Frage, was diese Netzwerkadressen überhaupt sind. Zu finden sind sie unter "%APPDATA%\Microsoft\Windows\Network Shortcuts". Dort sehen sie wie Verknüpfungen aus, sind es aber keine! Windows beschreibt sie als "Ordnerverknüpfungen" (engl. FileFolder). Tatsächlich sind das schreibgeschützte Ordner, die man sich per cmd oder PowerShell anschauen kann. Sie enthalten immer zwei Dateien: eine desktop.ini (versteckte Systemdatei), die immer den gleichen Inhalt hat und eine target.lnk, die die eigentliche Verknüpfung darstellt.
Damit ist auch klar, wie diese "Ordnerverknüpfungen"/"FileFolder"/"Netzwerkadressen" manuell erzeugt werden können. Es muss zunächst ein Ordner erstellt werden, der so heißt, wie die Netzwerkadresse schließlich heißen soll. Der Ordner muss schreibgeschützt sein. Darin muss die Verknüpfung target.lnk erzeugt werden und die Datei desktop.ini abgelegt werden, die für alle Netzwerkadressen gleich ist.
In der PowerShell kannst du dies mit den folgenden beiden Funktionen realisieren:
Die erste Funktion ist eine Hilfsfunktion und dient zum Erstellen einer einfachen Verknüpfung. Die zweite Funktion dient zum Erstellen eines FileFolders und damit zum Beispiel zum Erstellen einer Netzwerkadresse. Wenn du die beiden Funktionen in ein Powershell Skript integrierst, kannst du nachher mit einem einzigen Aufruf eine Netzwerkadresse erstellen:
Beste Grüße,
Thomas1100101
Netzwerkadressen lassen sich wie folgt scriptbasiert hinzufügen.
Du hast bereits richtig beschrieben, wie man sie über die GUI erzeugen kann. Leider gibt es keine Tools oder fertige cmdlets für die PowerShell, die das übernehmen können. Daher stellt sich zunächst die Frage, was diese Netzwerkadressen überhaupt sind. Zu finden sind sie unter "%APPDATA%\Microsoft\Windows\Network Shortcuts". Dort sehen sie wie Verknüpfungen aus, sind es aber keine! Windows beschreibt sie als "Ordnerverknüpfungen" (engl. FileFolder). Tatsächlich sind das schreibgeschützte Ordner, die man sich per cmd oder PowerShell anschauen kann. Sie enthalten immer zwei Dateien: eine desktop.ini (versteckte Systemdatei), die immer den gleichen Inhalt hat und eine target.lnk, die die eigentliche Verknüpfung darstellt.
Damit ist auch klar, wie diese "Ordnerverknüpfungen"/"FileFolder"/"Netzwerkadressen" manuell erzeugt werden können. Es muss zunächst ein Ordner erstellt werden, der so heißt, wie die Netzwerkadresse schließlich heißen soll. Der Ordner muss schreibgeschützt sein. Darin muss die Verknüpfung target.lnk erzeugt werden und die Datei desktop.ini abgelegt werden, die für alle Netzwerkadressen gleich ist.
In der PowerShell kannst du dies mit den folgenden beiden Funktionen realisieren:
function New-Shortcut {
param (
$TargetUri,
$ShortcutFilePath
)
if (($ShortcutFilePath -inotlike "[I].lnk") -and ($ShortcutFilePath -inotlike "[/I].url")) {
Write-Error "ShortcutFilePath does not have a '.lnk' or '.url' ending!"
return
}
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFilePath)
$Shortcut.TargetPath = $TargetUri
$Shortcut.Description = $TargetUri
$Shortcut.Save()
}
function New-FileFolder {
param (
$TargetFolder,
$FileFolderPath
)
if (Test-Path -Path $FileFolderPath) {
Write-Error "$FileFolderPath does already exist and will not be modified to prevent data loss."
return
}
# Create file folder
$FileFolder = New-Item -ItemType Directory -Path $FileFolderPath
$fileFolder.Attributes = "ReadOnly"
# Create desktop.ini
$DesktopIni = New-Item -ItemType File -Path $(Join-Path -Path $FileFolderPath -ChildPath "desktop.ini")
"[.ShellClassInfo]" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
"CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
"Flags=2" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
$DesktopIni.Attributes = "Hidden, System"
# Create target.lnk
New-Shortcut -TargetUri $TargetFolder -ShortcutFilePath $(Join-Path -Path $FileFolderPath -ChildPath "target.lnk")
}
New-FileFolder -TargetFolder "\\eine\netzwerk\freigabe" -FileFolderPath "$env:APPDATA\Microsoft\Windows\Network Shortcuts\EineFreigabeImNetzwerk"
Beste Grüße,
Thomas1100101
Zitat von @Thomas1100101:
Hallo der-suchende,
Netzwerkadressen lassen sich wie folgt scriptbasiert hinzufügen.
Du hast bereits richtig beschrieben, wie man sie über die GUI erzeugen kann. Leider gibt es keine Tools oder fertige cmdlets für die PowerShell, die das übernehmen können. Daher stellt sich zunächst die Frage, was diese Netzwerkadressen überhaupt sind. Zu finden sind sie unter "%APPDATA%\Microsoft\Windows\Network Shortcuts". Dort sehen sie wie Verknüpfungen aus, sind es aber keine! Windows beschreibt sie als "Ordnerverknüpfungen" (engl. FileFolder). Tatsächlich sind das schreibgeschützte Ordner, die man sich per cmd oder PowerShell anschauen kann. Sie enthalten immer zwei Dateien: eine desktop.ini (versteckte Systemdatei), die immer den gleichen Inhalt hat und eine target.lnk, die die eigentliche Verknüpfung darstellt.
Damit ist auch klar, wie diese "Ordnerverknüpfungen"/"FileFolder"/"Netzwerkadressen" manuell erzeugt werden können. Es muss zunächst ein Ordner erstellt werden, der so heißt, wie die Netzwerkadresse schließlich heißen soll. Der Ordner muss schreibgeschützt sein. Darin muss die Verknüpfung target.lnk erzeugt werden und die Datei desktop.ini abgelegt werden, die für alle Netzwerkadressen gleich ist.
In der PowerShell kannst du dies mit den folgenden beiden Funktionen realisieren:
Die erste Funktion ist eine Hilfsfunktion und dient zum Erstellen einer einfachen Verknüpfung. Die zweite Funktion dient zum Erstellen eines FileFolders und damit zum Beispiel zum Erstellen einer Netzwerkadresse. Wenn du die beiden Funktionen in ein Powershell Skript integrierst, kannst du nachher mit einem einzigen Aufruf eine Netzwerkadresse erstellen:
Beste Grüße,
Thomas1100101
Hallo der-suchende,
Netzwerkadressen lassen sich wie folgt scriptbasiert hinzufügen.
Du hast bereits richtig beschrieben, wie man sie über die GUI erzeugen kann. Leider gibt es keine Tools oder fertige cmdlets für die PowerShell, die das übernehmen können. Daher stellt sich zunächst die Frage, was diese Netzwerkadressen überhaupt sind. Zu finden sind sie unter "%APPDATA%\Microsoft\Windows\Network Shortcuts". Dort sehen sie wie Verknüpfungen aus, sind es aber keine! Windows beschreibt sie als "Ordnerverknüpfungen" (engl. FileFolder). Tatsächlich sind das schreibgeschützte Ordner, die man sich per cmd oder PowerShell anschauen kann. Sie enthalten immer zwei Dateien: eine desktop.ini (versteckte Systemdatei), die immer den gleichen Inhalt hat und eine target.lnk, die die eigentliche Verknüpfung darstellt.
Damit ist auch klar, wie diese "Ordnerverknüpfungen"/"FileFolder"/"Netzwerkadressen" manuell erzeugt werden können. Es muss zunächst ein Ordner erstellt werden, der so heißt, wie die Netzwerkadresse schließlich heißen soll. Der Ordner muss schreibgeschützt sein. Darin muss die Verknüpfung target.lnk erzeugt werden und die Datei desktop.ini abgelegt werden, die für alle Netzwerkadressen gleich ist.
In der PowerShell kannst du dies mit den folgenden beiden Funktionen realisieren:
function New-Shortcut {
>
> param (
> $TargetUri,
> $ShortcutFilePath
> )
>
> if (($ShortcutFilePath -inotlike "[I].lnk") -and ($ShortcutFilePath -inotlike "[/I].url")) {
> Write-Error "ShortcutFilePath does not have a '.lnk' or '.url' ending!"
> return
> }
>
> $WScriptShell = New-Object -ComObject WScript.Shell
> $Shortcut = $WScriptShell.CreateShortcut($ShortcutFilePath)
> $Shortcut.TargetPath = $TargetUri
> $Shortcut.Description = $TargetUri
> $Shortcut.Save()
>
> }
>
> function New-FileFolder {
>
> param (
> $TargetFolder,
> $FileFolderPath
> )
>
> if (Test-Path -Path $FileFolderPath) {
> Write-Error "$FileFolderPath does already exist and will not be modified to prevent data loss."
> return
> }
>
> # Create file folder
> $FileFolder = New-Item -ItemType Directory -Path $FileFolderPath
> $fileFolder.Attributes = "ReadOnly"
>
> # Create desktop.ini
> $DesktopIni = New-Item -ItemType File -Path $(Join-Path -Path $FileFolderPath -ChildPath "desktop.ini")
> "[.ShellClassInfo]" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
> "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
> "Flags=2" | Out-File -FilePath $DesktopIni -Append -Encoding ascii
> $DesktopIni.Attributes = "Hidden, System"
>
> # Create target.lnk
> New-Shortcut -TargetUri $TargetFolder -ShortcutFilePath $(Join-Path -Path $FileFolderPath -ChildPath "target.lnk")
> }
New-FileFolder -TargetFolder "\\eine\netzwerk\freigabe" -FileFolderPath "$env:APPDATA\Microsoft\Windows\Network Shortcuts\EineFreigabeImNetzwerk"
Beste Grüße,
Thomas1100101
Ich möchte auch gerne Netzwerkadressen erstellen. Habe es mit deinem Script versucht. Die Verknüpfung wird auch erstellt. Aber leider ist der Ordner leer und verweist nicht auf den Ordner auf dem Server.
Muss ich im ersten Script auch etwas anpassen?
Hallo,
vermute diese Frage passt in diesen Thread nicht so gut rein?
Kurzgesagt: kann es sein, dass "Network Shortcuts" "leichter-windows-stottern-freezes-verursachen"
als "net use ip adresse" ? (bzw. eine Desktopverknüpfung zu \\win7-pc\ziel-ordner
Das Problem ist, dass ca. 10 Network Shortcuts zu Win7/XP PCs (in der Produktionsabteilung) vorhanden sind.
Das zweite Problem ist, das die zwei CAD-PCs Windows 10 haben und häufig im Windows-Datei-Explorer freezen, wenn man zwischen den "Network Shortcuts" hin+her" wechselt (weil kleinere "Produktionsauftragsdateien" hin+her" kopiert werden.
%APPDATA%\Microsoft\Windows\Network Shortcuts
vermute diese Frage passt in diesen Thread nicht so gut rein?
Kurzgesagt: kann es sein, dass "Network Shortcuts" "leichter-windows-stottern-freezes-verursachen"
als "net use ip adresse" ? (bzw. eine Desktopverknüpfung zu \\win7-pc\ziel-ordner
Das Problem ist, dass ca. 10 Network Shortcuts zu Win7/XP PCs (in der Produktionsabteilung) vorhanden sind.
Das zweite Problem ist, das die zwei CAD-PCs Windows 10 haben und häufig im Windows-Datei-Explorer freezen, wenn man zwischen den "Network Shortcuts" hin+her" wechselt (weil kleinere "Produktionsauftragsdateien" hin+her" kopiert werden.
%APPDATA%\Microsoft\Windows\Network Shortcuts