Сценарій - Як перевірити, чи є доступний мережевий шлях, а потім зіставити його


13

Я хотів би скрипт заставки / входу в систему, який перевіряє, чи доступний мережевий шлях, а потім відображає його на одиницю. Якщо його немає, він відключається / не підключається.

Мережевий шлях \ 192.168.1.1 \ drive1

Також мені потрібно використовувати ім'я користувача / пароль для підключення до цього шляху.

Відповіді:


15

За допомогою existкоманди можна перевірити, чи дійсний шлях:

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

Якщо вам потрібно надати облікові дані (тобто ваш поточний користувач Windows не має доступу до цієї спільної доступу), додайте /user:

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

Якщо є ймовірність, що поділка вже існує, і ви хочете видалити її, якщо її більше немає, додайте elseпункт:

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

І ще раз додайте, /userякщо вам це потрібно.

Ви можете зв'язати це все разом у пакетному файлі, подібному до наступного:

@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=

ОК, я просто вставляв це в блокнот і зберігав як .vbs, але коли я запускаю його завдання, він дає Visual basic error?
FernandoSBS

1
Ця команда - це пакетна команда - вона повинна працювати з будь-якого стандартного пакетного файлу.
Джефф

C: \ Windows> якщо існує \\ 192.168.1.1 \ том1 (чисте використання y: \\ 192.168.1.1 \ том1) е lse (чисте використання / видалення y:) мережеве з'єднання не вдалося знайти. Додаткову допомогу можна отримати, набравши NET HELPMSG 2250.
FernandoSBS

Додам редагування ...
Джефф

мені шкода? (5 годин)
FernandoSBS

6

Powershell зробив би це легко:

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}

ОК, я просто вставляв це в блокнот і зберігав як .vbs, але коли я запускаю його завдання, він дає Visual basic error?
FernandoSBS

1
Збережіть його як .ps1 та запустіть його з Powershell.
Остін Т Французький

я не знайомий із програмою powerhell, як я можу автоматизувати це у програмі планування завдань?
FernandoSBS

Ви дійсно повинні розділити два питання. Це QA-сайт. Крім того, google це, якщо ви ще цього не зробили: google.com/…
Austin T French

добре, зрозумів. Який бонус від використання powerhell?
FernandoSBS

0

Це просто спростити просто зіставити його за допомогою Провідника файлів Windows або за допомогою команди net use. Або працює, або не працює.


Якщо він доступний, я хочу автоматично підключатися під час входу в систему / заставки, якщо це не так, я хочу його видалити з відображених накопичувачів. Тож те, що ви запропонували, - це не варіант.
FernandoSBS

Я не розумію, це ви видаєте мережеве використання, якщо команда буде успішною, вона буде підключена. Якщо команда не працює, її видаляють із відображених накопичувачів. Мені здається просто.
mdpc

0

Це остаточний код:

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 

Я використовую, Test-Path \\192.168.1.1\volume1як пропонується, щоб перевірити, чи доступний мережевий шлях, і ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")перевірити, чи існує літера диска.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.