[Powershell] Script zum mounten von Netzlaufwerken

kekz24

Cadet 3rd Year
Registriert
Dez. 2011
Beiträge
36
Hi,

ich bin gerade dabei mir ein einfaches Script zu basteln welches Netzlaufwerke von einem kleinen Home-Server mapped.
Die Shares laufen über NFS und sollen per "net use" gemapped werden. Nur funktioniert das irgendwie nicht und kein einziges Laufwerk wird gemapped.
Hier mal das Script:

Code:
$strLaufwerkPfad = @(
"W: \\srv\bla1";
"X: \\srv\bla2";
"Y: \\srv\bla3";
"U: \\srv\bla4";
"T: \\srv\bla5";
"V: \\srv\bla6";
"R: \\srv\bla7";
"S: \\srv\bla8"
)


foreach ($i in $strLaufwerkPfad){
$laufwerk = $i.Substring(0,2)
if ( !(Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID='$laufwerk'" )) {
net use + $i
}
}

Wenn ich das Script ausführe wird keine Fehlermeldung ausgegeben, ich bekomme nur die Rückmeldung "Der Befehl wurde erfolgreich ausgeführt."

Gebe ich manuell den Befehl "net use R: \\srv\bla7" ein, wird das Laufwerk korrekt gemountet. Kann es vielleicht sein,dass ich in Verbindung mit net use keine Variable benutzen kann?
 
Dank der Anführungszeichen sieht das für das Programm aus, wie ein Parameter. Es braucht aber 2.
 
Danke schonmal für den Tip. Ich hab jetzt noch den Pfad per Substring in eine eigene Variable geschrieben damit ich dem Programm 2 Parameter übergeben kann:

Code:
    $strLaufwerkPfad = @(
    "W: \\srv\bla1";
    "X: \\srv\bla2";
    "Y: \\srv\bla3";
    "U: \\srv\bla4";
    "T: \\srv\bla5";
    "V: \\srv\bla6";
    "R: \\srv\bla7";
    "S: \\srv\bla8"
    )
     
     
    foreach ($i in $strLaufwerkPfad){
    $laufwerk = $i.Substring(0,2)
    $pfad = $i.Substring(2)
    if ( !(Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID='$laufwerk'" )) {
    net use + $laufwerk + $pfad
    }
    }

Aber jetzt meldet das Programm net,dass die Syntax nicht stimmt. Eigentlich müsste doch der Aufruf jetzt z.B. mit "net use X: \\srv\bla2" ausgeführt werden?
Lasse ich mir die Variablen einzelnd anzeigen, stimmt die Zuordnung, also $laufwerk="X:",$pfad=" \\srv\bla2".
 
Wie wäre es mit der Verwendung von New-PSDrive? http://technet.microsoft.com/de-de/library/ee176915.aspx
da verwendest dann statt dem Substring dann Split mit ":" als Trennzeichen

Mit "Get-PSDrive W" kannst du außerdem testen ob schon etwas nach W gemounted wurde.

Code:
 foreach ($i in $strLaufwerkPfad) {
    $splitted = $i.Split(":")
    $mntpoint = splitted[0]
    $path = splitted[1]
    if (!(Get-PSDrive "$mntpoint")) {
      New-PSDrive -name "$mntpoint" -psprovider FileSystem -root "$path" -persistent
    }
}
 
Zurück
Oben