Skrypt - jak sprawdzić, czy ścieżka sieciowa jest dostępna, a następnie zmapować ją

13

Chcę wygaszacz ekranu / skrypt logowania, który sprawdza, czy ścieżka sieciowa jest dostępna, a następnie odwzorowuje ją na jednostkę. Jeśli nie jest dostępny, rozłącza się / nie łączy.

Ścieżka sieciowa to \ 192.168.1.1 \ dysk1

Potrzebuję też użyć nazwy użytkownika / hasła, aby połączyć się z tą ścieżką.

FernandoSBS
źródło

Odpowiedzi:

15

Możesz użyć existpolecenia, aby sprawdzić, czy ścieżka jest poprawna:

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

Jeśli musisz podać poświadczenia (tzn. Twój obecny użytkownik systemu Windows nie ma dostępu do tego udziału), dodaj /user:

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

Jeśli istnieje szansa, że ​​udział już istnieje, a chcesz go usunąć, jeśli nie jest już dostępny, dodaj elseklauzulę:

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

I jeszcze raz dodaj, /userjeśli potrzebujesz.

Możesz to wszystko powiązać w pliku wsadowym podobnym do następującego:

@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
źródło
ok. Po prostu wklejam to w notatniku i zapisuję jako .vbs, ale kiedy uruchamiam zadanie, powoduje to błąd podstawowy Visual?
FernandoSBS
1
To polecenie jest poleceniem wsadowym - powinno działać z dowolnego standardowego pliku wsadowego.
Geoff
C: \ Windows> jeśli istnieje \\ 192.168.1.1 \ volume1 (użycie netto y: \\ 192.168.1.1 \ volume1) e lse (użycie netto / usunięcie y:) Nie można znaleźć połączenia sieciowego. Więcej pomocy można uzyskać, wpisując NET HELPMSG 2250.
FernandoSBS
Dodam zmianę ...
Geoff
Przykro mi? (5 znaków)
FernandoSBS
6

Powershell ułatwiłoby to:

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 French
źródło
ok. Po prostu wklejam to w notatniku i zapisuję jako .vbs, ale kiedy uruchamiam zadanie, powoduje to błąd podstawowy Visual?
FernandoSBS
1
Zapisz go jako .ps1 i uruchom z Powershell.
Austin T French
nie jestem zaznajomiony z programem PowerShell, jak mogę go zautomatyzować w Harmonogramie zadań?
FernandoSBS
Naprawdę powinieneś podzielić 2 pytania. To jest strona kontroli jakości. Również google, jeśli jeszcze tego nie zrobiłeś: google.com/…
Austin T French
ok, rozumiem. Jaki jest bonus używania PowerShell?
FernandoSBS
0

Po prostu łatwiej jest po prostu zmapować go za pomocą Eksploratora plików Windows lub polecenia net use. Albo to działa, albo nie działa.

mdpc
źródło
Jeśli jest dostępny, chcę być automatycznie połączony podczas logowania / wygaszacza ekranu, jeśli nie, chcę go usunąć z zamapowanych dysków. To, co zasugerowałeś, nie jest opcją.
FernandoSBS
Nie rozumiem, jeśli użyjesz net use, jeśli polecenie się powiedzie, zostanie połączone. Jeśli polecenie nie powiedzie się, zostanie usunięte z zamapowanych dysków. Wydaje mi się to proste.
mdpc
0

To jest końcowy kod:

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 

Używam Test-Path \\192.168.1.1\volume1zgodnie z sugestią, aby sprawdzić, czy ścieżka sieciowa jest dostępna i ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")sprawdzić, czy litera dysku istnieje.

FernandoSBS
źródło