Короче говоря, мне нужно сопоставить серию папок WebDav, которые по какой-либо причине в разное время требуют повторных попыток аутентификации, чтобы сделать это успешно.

Я создал следующий сценарий, чтобы упростить задачу, а именно, чтобы мне не нужно было копировать и вставлять команду net use для первого общего ресурса 15 раз, а затем надеяться, что к 15-му разу она сможет успешно подключиться.

То, что я пытаюсь сделать, это попробовать "обычную" карту в первый раз. Если это не сработает (что мы узнаем, потому что оно проверит, существует ли папка в этом месте, что должно произойти, если диск был успешно сопоставлен), тогда она снова запросит учетные данные, на всякий случай, если я неправильно наберу пароль хотя это редко). В идеале я хотел бы иметь возможность отключить пароль при его вводе, поскольку сейчас он отображается в виде обычного текста.

Затем, используя пароль, который я сохранил в переменной "pword", я получаю цикл, который пытается сопоставить местоположение снова и снова, используя пароль, хранящийся в переменной, до тех пор, пока он не сможет успешно подключиться.

Я понимаю, что мог бы просто ввести пароль в сценарий. Это общедоступное место, поэтому я даже не хотел, чтобы имя пользователя в скрипте начиналось с самого начала. Я не могу поставить пароль в сценарии. Прямо сейчас он запрашивает пароль для учетной записи, поскольку он не указан. Пароль идет после имени пользователя и перед ключом /P:no, что гарантирует, что диск не будет сохраняться после сеанса.

В настоящее время это не работает (не удивительно). Я не могу понять, почему, хотя. Мой сценарий зацикливается, но я продолжаю получать System error 1244 has occurred. The operation being requested was not performed because the user has not been authenticated. Так или иначе, пароль, который я вручную ввожу в переменную в интерактивном режиме, не передается в коммутатор net use, как это должно быть. Я получаю сообщение об ошибке 1244 независимо от того, ввожу ли я правильный пароль в командной строке или нет, поэтому он как-то не пытается соединиться с учетными данными, введенными вручную через переменную.

Как я могу это исправить, чтобы пользовательский ввод был *** (помечен звездочкой) (поскольку он запрашивает пароль, хотя cmd.exe этого не знает), и, что более важно, я могу форсировать соединение, введя свой пароль ОДИН РАЗ ( ну, дважды), а затем мой пакетный файл автоматически заменяет его паролем вместо запроса КАЖДЫЙ раз. Это раздражает, делая это 15 раз каждый раз, когда я вхожу в систему. Здесь что-то не так, или лучший способ сделать это?

net use k: "https://d.docs.live.net/###/Documents/somefolder" /USER:someuser@outlook.com /P:No
if exist "K:\x" GOTO ContinueMapping
echo Windows will try to connect using the following password:
set /p pword=WebDav password:
:BruteConnect
net use k: "https://d.docs.live.net/$$$/Documents/somefolder" /USER:signin.interlinked@outlook.com %pword% /P:No
if exist "K:\x" GOTO ContinueMapping
GOTO BruteConnect
:ContinueMapping
(More drives get mapped here, and they all map successfully once the first drive gets mapped)

1 ответ1

0

Ваш скрипт на самом деле не создает сетевое соединение.

Существует разрыв во времени, прежде чем соединение станет активным. Учетные данные хранятся в вашем диспетчере учетных данных, но соединение с этим типом местоположения становится активным, когда вы запрашиваете доступ к нему.

Ошибка «Отказано в доступе: 5» происходит из-за того, что вы не запускаете сценарий с правами администратора и необходимы для выполнения команды «Сетевое использование».

Было бы точно так же, чтобы ввести этот адрес в окне проводника, нажать клавишу ввода, подождать 10-20 секунд, прежде чем будет установлено соединение, и тогда диск K также самопроизвольно заработает.

Если бы вы запрашивали пароль, ваш скрипт все равно не работал бы, если вы не запустили его от имени администратора, но тогда первая версия вашего скрипта уже работала бы.

Обратите внимание, что когда вы используете этот метод, сценарий останавливается на 10-20 секунд, когда он пытается создать соединение до того, как оно выполнится успешно.

Таким образом, теоретически вы можете просто вызвать скрипт как обычно, подождать от 10 до 20 секунд, и он волшебным образом начнет работать.

Это известная проблема с доступом к общим ресурсам, таким как Office365/Sharepoint/etc. Microsoft заменила это на OneDrive из-за того, что у него часто бывают проблемы с подключением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .