Вопрос или проблема
Мне нужно подключить сетевой диск без запроса пароля. Я пытаюсь использовать net use и вставляю пароль в команду. Получаю ошибку.
net use H: \\MYSERVER\MYFOLDERS\Backup /user:ABCCompany\JoeUser oasddkjkla
Я получаю следующую ошибку: ‘sddkj’ не распознается как внутренняя или внешняя команда. Если это не очевидно, это часть пароля, который я ввел.
Эта команда работает нормально, если я удаляю пароль и ввожу его в диалоговом окне. Я использую Windows 10. Все еще ли приемлемо передавать пароль сразу после имени пользователя?
Попробуйте использовать:
net use H: \\MYSERVER\MYFOLDERS\Backup oasddkjkla /user:ABCCompany\JoeUser
net use w: \\myserver\fileshare /user:MyID MyPassword
Если в пароле есть пробел, его нужно заключить в кавычки, например:
net use w: \\myserver\fileshare /user:"tom jone" "go to it"
Больше не безопасно использовать пароль в открытом виде. В этом случае его можно просто прочитать из сценария. Если пользователь получит доступ к вашему рабочему столу, “защищенное” хранилище учетных данных Windows можно будет похитить программами-вымогателями. Лучше использовать Powershell и сохранять пароль в зашифрованном виде. Я искал на Stack и удивился, что ничего не нашел. Ссылка здесь:
https://lifeofageekadmin.com/map-network-drive-encrypted-password-powershell/
Основы:
$credential = Get-Credential
$credential.Password | ConvertFrom-SecureString | Set-Content c:\temp\password.txt
$encrypted = Get-Content c:\temp\password.txt | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("Domain\username", $encrypted)
Подключить диск
New-PSDrive -name "Share" -PSProvider FileSystem -Root \\server\share -Persist -Credential $credential
Для проверки: Get-PSDrive
Чтобы удалить: Remove-PSDrive -name "Share" -Force
Вы можете сделать это в командной строке, просто имейте в виду, что это не сработает, если пароль для учетной записи начинается со слэша!
Эта проблема действительно очень реальна! 💯
❌ Не слушайте ненавидящих! ❌
😠 Это расстраивает, что кто-то из программистов 🤓, который в конце концов реализовал параметр командной строки @ARGV для NET.EXE, оказался полным НОВИЧКОМ 👶🏻.
Иметь такие 😠 плохие 😒 плохие 😡 плохие 👿 параметры командной строки абсолютно неприемлемо.
😢 Мне очень жаль сообщить вам: решения нет. 😭
⭐ Это не проблема командной строки. Использование PowerShell, TCC, CMD или bash под Cygwin не исправит это.
✔Да, пароль идет перед пользователем. ⁉ Да, это глупо. 🤦🏻♀️
✔Да, пароль не предшествует “/PASS:” так, как имя пользователя предшествует “/USER:”. Может, они подумали, что так будет безопаснее? 😂 Это, похоже, является источником проблемы. Слэш используется для опций в NET.EXE. Не подумали, что если они заставляют пароли не начинаться с “/PASS:”, как это должно быть, это создаст проблему с паролями, которые начинаются со слэша.
✔Да, синтаксис правильный и работает в ситуациях, когда пароль не начинается со слэша.
❌Нет, заключение его в кавычки не решает проблему.
❌Нет, проблема не в том, что люди не читали документацию📚. Если бы документация была такой очевидной, Google отправил бы их туда, а не сюда.
❌Нет, не опасно подключать диски таким образом в комфортной домашней локальной сети. Эта проблема актуальна.
❌❌❌Нет. Передача вашего пароля через пайп (передача пароля/использование перенаправления) в NET.EXE тоже не решает проблему. Некоторые посты указывают, что это работало в прошлом, но было изменено [возможно, для безопасности].
❌Нет, мы не думаем о psexec
❌Нет, мы не делаем что-то вроде неподдерживаемого поведения. Вот как автоматизировать подключение дисков.
❌Нет, добавление слэша в начале не решает это. К тому же, что если чей-то пароль начинается с 2 слэшей?
🤔⌨
В заключение, проблема очень реальна, что одна из этих команд работает, а другая – нет:
✔✔net use W: \192.168.1.47\SALLY apa$$w0rd_starts_w__no_slash /USER:sal /PERSISTENT:YES
❌net use W: \192.168.1.47\SALLY /pa$$w0rd_starts_w_yes_slash /USER:sal /PERSISTENT:YES
🤔⌨
Лучший обходной путь:
-
Создайте нового пользователя с именем ‘share’. Это может быть локальный аккаунт без привязки к аккаунту Microsoft. Я на 90% уверен, что это не обязательно должен быть аккаунт администратора, но я могу быть слишком уверенным в этом.
-
Назначьте пользователю ‘share’ пароль, который НЕ начинается со слэша.
-
С вашей исходной/администраторской учетной записью зайдите в каждый жесткий диск, который вы делитесь, и:
- 3a) зайдите в разрешения
- 3b) добавьте пользователя ‘share’ в список пользователей с разрешениями
- 3c) предоставьте пользователю ‘share’ тот доступ, который вам нужен (полный контроль для меня!)
Жалко, что все дошло до этого, но это то, что нужно сделать в этой ситуации.
Или, знаете…. Не используйте пароль, который начинается со слэша. Но есть причины, почему это не жизнеспособное решение в некоторых ситуациях, например, если человек больше не имеет доступа к изменению пароля своей учетной записи.
Ответ или решение
Чтобы передать пароль в команду net use
без запроса к пользователю, вы можете использовать следующий синтаксис:
net use H: \\MYSERVER\MYFOLDERS\Backup /user:ABCCompany\JoeUser oasddkjkla
Однако, если в вашей пароле есть пробелы или если пароль начинается с символа, который может быть интерпретирован как команда (например, /
), команда может выдавать ошибку. Чтобы избежать таких проблем, вы можете заключить пароль в кавычки, например:
net use H: \\MYSERVER\MYFOLDERS\Backup /user:ABCCompany\JoeUser "oasddkjkla"
Но следует отметить, что некоторые пользователи сообщали о проблемах, если пароль начинается с символа /
. В этом случае вы можете рассмотреть альтернативные решения, такие как использование PowerShell для безопасного хранения ваших учетных данных.
Использование PowerShell для безопасного управления паролями:
Если вы хотите избежать передачи пароля в открытом виде, вы можете сохранить его в зашифрованном виде и использовать для маппинга сетевого диска. В PowerShell это можно сделать следующим образом:
- Сначала получите учетные данные и сохраните зашифрованный пароль:
$credential = Get-Credential
$credential.Password | ConvertFrom-SecureString | Set-Content c:\temp\password.txt
- Затем загрузите зашифрованный пароль обратно:
$encrypted = Get-Content c:\temp\password.txt | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential("ABCCompany\JoeUser", $encrypted)
- Теперь вы можете смонтировать сетевой диск с использованием этих учетных данных:
New-PSDrive -Name "H" -PSProvider FileSystem -Root \\MYSERVER\MYFOLDERS\Backup -Persist -Credential $credential
Проверка и удаление подключаемого диска:
Чтобы проверить подключенные диски, используйте команду:
Get-PSDrive
Чтобы удалить подключенный диск, выполните:
Remove-PSDrive -Name "H" -Force
Заключение
Хотя передача пароля в командную строку с использованием net use
возможна, рекомендуется использовать более безопасные методы, такие как PowerShell, чтобы избежать возможных рисков безопасности. Если у вашего пароля есть какие-либо проблемы с синтаксисом, рассмотрите возможность смены пароля на более простой, чтобы избежать проблем с началом с /
.