Skript - So überprüfen Sie, ob ein Netzwerkpfad verfügbar ist, und ordnen Sie ihn dann zu

13

Ich hätte gerne ein Bildschirmschoner- / Anmeldeskript, das prüft, ob ein Netzwerkpfad verfügbar ist, und diesen dann einem Gerät zuordnet. Wenn es nicht verfügbar ist, wird die Verbindung getrennt / nicht hergestellt.

Der Netzwerkpfad lautet \ 192.168.1.1 \ drive1

Außerdem muss ich Benutzername / Passwort verwenden, um eine Verbindung zu diesem Pfad herzustellen.

FernandoSBS
quelle

Antworten:

15

Mit dem existBefehl können Sie prüfen, ob der Pfad gültig ist:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1

Wenn Sie Anmeldeinformationen angeben müssen (dh Ihr aktueller Windows-Benutzer hat keinen Zugriff auf diese Freigabe), fügen Sie Folgendes hinzu /user:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1 /user:myDomain\myUser myPassword

Wenn die Möglichkeit besteht, dass die Freigabe bereits vorhanden ist, und Sie sie löschen möchten, wenn sie nicht mehr verfügbar ist, fügen Sie eine elseKlausel hinzu:

if exist \\192.168.1.1\drive1 (net use s: \\192.168.1.1\drive1) else (net use /delete s:)

Und noch einmal, fügen Sie das hinzu, /userwenn Sie es brauchen.

Sie können dies alles in einer Batch-Datei zusammenbinden, die der folgenden ähnelt:

@echo off
if exist \\192.168.1.1\drive1 (set shareExists=1) else (set shareExists=0)
if exist y:\ (set driveExists=1) else (set driveExists=0)
if %shareExists%==1 if not %driveExists%==1 (net use y: \\192.168.1.1\drive1)
if %shareExists%==0 if %driveExists%==1 (net use /delete y:)
set driveExists=
set shareExists=
Geoff
quelle
ok, ich füge das nur in den Editor ein und speichere es als .vbs, aber wenn ich eine Aufgabe davon starte, gibt es einen Visual Basic-Fehler?
FernandoSBS
1
Dieser Befehl ist ein Stapelbefehl - er sollte von jeder Standard-Stapeldatei aus funktionieren.
Geoff
C: \ Windows> falls vorhanden \\ 192.168.1.1 \ volume1 (net use y: \\ 192.168.1.1 \ volume1) e lse (net use / delete y:) Die Netzwerkverbindung wurde nicht gefunden. Weitere Hilfe erhalten Sie, indem Sie NET HELPMSG 2250 eingeben.
FernandoSBS
Ich werde eine Änderung hinzufügen ...
Geoff
Es tut mir Leid? (5 Zeichen)
FernandoSBS
6

Powershell würde das einfach machen:

If(Test-Path \\192.168.1.1\Drive1)
  {
    net use M: \\192.168.1.1\Drive1 /user:Domain\UserName Password
  }
else {net use M: /delete > nul}
Austin T Französisch
quelle
ok, ich füge das nur in den Editor ein und speichere es als .vbs, aber wenn ich eine Aufgabe davon starte, gibt es einen Visual Basic-Fehler?
FernandoSBS
1
Speichern Sie es als .ps1 und führen Sie es in Powershell aus.
Austin T Französisch
Ich bin nicht mit Powershell vertraut. Wie kann ich es im Taskplaner automatisieren?
FernandoSBS
Sie sollten die 2 Fragen wirklich aufteilen. Dies ist eine QS-Site. Auch google es, wenn Sie nicht bereits haben: google.com/…
Austin T Französisch
OK habe es. Was ist der Bonus von Powershell?
FernandoSBS
0

Es ist einfacher, einfach zu versuchen, es mit dem Windows-Dateiexplorer oder mit dem Befehl net use zuzuordnen. Entweder funktioniert es oder nicht.

mdpc
quelle
Wenn es verfügbar ist, möchte ich automatisch verbunden werden, wenn ich mich anmelde / Bildschirmschoner, wenn es nicht ist, möchte ich, dass es von den zugeordneten Laufwerken entfernt wird. Also, was Sie vorgeschlagen haben, ist keine Option.
FernandoSBS
Ich verstehe nicht, dass Sie eine Netzverwendung ausgeben, wenn der Befehl erfolgreich ist, wird die Verbindung hergestellt. Wenn der Befehl fehlschlägt, wird er von den zugeordneten Laufwerken entfernt. Scheint mir einfach.
mdpc
0

Dies ist der endgültige Code:

function run{
net use
If(Test-Path \\192.168.1.1\volume1)
  {
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")) 
        {
            "already mounted and accessible"
        }
    else
        {
            net use Y: \\192.168.1.1\volume1
            "mounting"
        }
  }
else { 
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory"))
        {
            net use Y: /delete
            "removing"
        }
}
exit 4
}

run 

Ich benutze Test-Path \\192.168.1.1\volume1wie vorgeschlagen, um zu überprüfen, ob der Netzwerkpfad verfügbar ist und ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")ob der Laufwerksbuchstabe vorhanden ist.

FernandoSBS
quelle