Netzwerkadressen per Batch hinzufügen

Gerber_

Lieutenant
Registriert
Juli 2012
Beiträge
543
Hallo zusammen,

ich bräuchte eure Hilfe, bezüglich dem zuweisen von Netzwerkadressen über eine Batch-Datei.

Ich hab verschiedenste Scripte mit dem Befehl "Net Use" im Einsatz. Bei diesen Scripts werden auch teilweise die Gruppen oder der Benutzer abgefragt und die Netzlaufwerke dazu verbunden.

Momentan werden diese Netzlaufwerke aber mit einem Buchstaben verbunden.

Ich möchte gerne, dass in Zukunft die Laufwerke auch per Script verbunden werden, aber nicht an einen Laufwerksbuchstaben gebunden sind.

Wenn man per Rechtsklick -> Netzwerkadresse hinzufügen eine Verknüpfung anlegt wird diese im Explorer angezeigt.
Wenn ich aber z.B. mit "net use \\Server\Freigabe" eine Verbindung herstelle, wird diese zwar aufgebaut, ist aber nirgends zu sehen.

Ist es möglich, solch eine Netzwerkadresse (oder mehrere) über ein Script zu verteilen, damit diese im Explorere angezeigt werden?

Ich weiß, per GPO könnten man es einfach werwirklichen, würde aber gerne wissen, ob es auch mit einem Script möglich wäre?

Danke im Voraus.

Grüße
Philipp
 
net use <Laufwerksbuchstabe> ...


zb
net use z: \\myserver\myshare


zum entfernen dann
net use z: /delete
 
Hi .mojo,

danke für deine Antwort. Leider bringt diese mich nicht weiter, da du das Laufwerk an einen Buchstaben bindest.

Siehe oben in meinem Text.

Ich möchte gerne, dass in Zukunft die Laufwerke auch per Script verbunden werden, aber nicht an einen Laufwerksbuchstaben gebunden sind.

Gruß Philipp
 
Mit
explorer \\Server\Freigabe
rufst du den Explorer auf und die Freigabe ist auch unter Netzwerk sichtbar.
Nach dem Schließen des Explorers ist allerdings die Freigabe (der Eintrag) weg.
 
Hi,

danke für eure Antworten.

@ schumischumi:

danke hierfür.

ch weiß, per GPO könnten man es einfach werwirklichen, würde aber gerne wissen, ob es auch mit einem Script möglich wäre?

@engine:

Danke. Hilft mir aber leider auch nicht weiter.

Grüße
 
Sry habs heute mit dem lesen anscheinend nicht so.

Damit ich die frage richtig verstehe, du willst
- ein share verbinden
- das im explorer angezeigt werden soll
- aber ohne Laufwerksbuchstabe, sondern mit UNC Pfad oder einem definiertem Namen
- und das ganze per Skript (batch, powershell ...)

Wenn dem so ist, glaube ich funktioniert dies nicht. Wenn dann nur über Workarounds wie ne Verknüpfung irgendwo hinlegen z.B. Favoriten.
Selbst mit GPOs weiss ich nciht wie das gehen sollte.

UPDATE: evtl könnte es noch über die registry funktionieren link. wobei hier trotzdem ein Laufwerksbuchstabe vergeben, aber dann wieder versteckt wird.
kA ob das in deinem Szenario Sinn macht. Was ist den eigentlich der Zweck dahinter?

Hiermit kann man alle ausblenden link
 
Zuletzt bearbeitet:
Gerber_ schrieb:
Ist es möglich, solch eine Netzwerkadresse (oder mehrere) über ein Script zu verteilen, damit diese im Explorere angezeigt werden?
Nein

Gerber_ schrieb:
Ich weiß, per GPO könnten man es einfach werwirklichen, würde aber gerne wissen, ob es auch mit einem Script möglich wäre?
Zeig mal bitte wie das geht.
 
Wichtigste Frage: Was ist das exakte Ziel dahinter? Was möchtest du damit bezwecken?

Wenn es darum geht dass irgendeine Anwendung die Freigabe im Benutzerprofil gemappt haben muss damit sie funktioniert (aber die Freigabe vom Benutzer ansonsten nicht angefasst wird) --> das ist über die von dir angesprochene Verknüpfung im Explorer nicht nötig, da die Verknüpfung wirklich nur eine Verknüpfung auf das Share im UNC/FQDN darstellt. Und das interessiert die Anwendung nicht, wenn die im Hintergrund mit UNC/FQDN arbeitet.

Wenn es darum geht dass die Verknüpfungen "hübscher" aussehen als klassische Netzlaufwerke mit Buchstabe --> lass es sein. Das ist ein border case, den ich in Unternehmensnetzen noch nie gesehen habe. Hier sind Netzlaufwerke weiterhin das non-plus-ultra, und können seit über 10 Jahren im Übrigen auch per GPO verteilt werden, inklusive Zielgruppenadressierung auf Elementebene (nicht zu verwechseln mit GPO-Sicherheitsfilterung). NET USE Batches/Skripts sind tot.

Wenn es darum geht dass dir die Laufwerksbuchstaben für Netzlaufwerke ausgehen da zu viele potentielle Freigaben im Unternehmen vorhanden sind: Hier muss einfach mal eine Share-Matrix ausgearbeitet werden um festzustellen, wer wirklich was braucht.

Also, was ist hier der business case?
 
Hooi,

@schumischumi:

kein Thema xD. Danke dir.

@ crashbandicot:

Somit weiß ich Bescheid, danke.

Zeig mal bitte wie das geht.
Sry, war ein Fehler von mir. War auf die allgemeine verteilung von Netzlaufwerken bezogen.

@ t-6:

Wenn es darum geht dass die Verknüpfungen "hübscher" aussehen als klassische Netzlaufwerke mit Buchstabe --> lass es sein.

War tatsächlich eine Anforderung. Ich persönlich bevorzuge auch die Netzlaufwerke, zwecks der Anforderung wollte ich es aber Interessehalber wissen.

Danke euch für die Hilfe.

Eine schöne Restwoche

Gruß Philipp
 
Als Tipp noch:
Falls es sich nicht wegdiskutieren lässt, einfach das Angebot in den Raum stellen, das als MS Ticket einzustellen.
Das kann man mit nem Preis belegen (abschreckend) und dann haste die Aussage vom Hersteller (geht/geht nicht).
 
Wenn es dir nichts ausmacht, dass die Laufwerksbuchstaben beginnend bei Z: (abwärts) vergeben werden, dann kann man das einfach per * realisieren:


Code:
net use * \\Server\Freigabe
 
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:
PowerShell:
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")
}

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:
PowerShell:
New-FileFolder -TargetFolder "\\eine\netzwerk\freigabe" -FileFolderPath "$env:APPDATA\Microsoft\Windows\Network Shortcuts\EineFreigabeImNetzwerk"

Falls du darauf angewiesen bist, es als batch Skript zu implementieren, muss obiger Code natürlich noch migriert werden. Er läuft aber bereits in alten PowerShell Versionen wie 2.0, was bereits seit Windows 7 vorhanden ist. Notfalls kannst du auch die PowerShell im batch Skript aufrufen und damit den PowerShell Code in einem batch Skript ausführen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Gerber_
Zurück
Oben