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ą.

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=

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}

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.