Сценарий - Как проверить, доступен ли сетевой путь, а затем сопоставить его


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?
FernandoSBS

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

C: \ Windows> если существует \\ 192.168.1.1 \ volume1 (net use y: \\ 192.168.1.1 \ volume1) esese (net use / delete 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?
FernandoSBS

1
Сохраните его как .ps1 и запустите из Powershell.
Остин Т Френч

Я не знаком с PowerShell, как я могу автоматизировать его в планировщике заданий?
FernandoSBS

Вы должны действительно разделить 2 вопроса. Это сайт QA. Кроме того, Google, если вы еще этого не сделали: google.com/…
Остин Т Френч

хорошо понял. Какой бонус от использования powershell?
FernandoSBS

0

Проще просто попытаться сопоставить его с помощью проводника Windows или с помощью команды net use. Либо это работает, либо нет.


Если он доступен, я хочу, чтобы он автоматически подключался при входе в систему / хранителе экрана, если нет, то я хочу, чтобы он был удален с подключенных дисков. Так что то, что вы предложили, не вариант.
FernandoSBS

Я не понимаю, если вы используете net use, если команда будет выполнена успешно, она будет подключена. Если команда не выполняется, она удаляется из подключенных дисков. Кажется простым для меня
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.