Команда CMDKEY управляет хранилищем учётных данных Windows (Credential Manager) из командной строки. С её помощью можно сохранить логин и пароль для удалённого сервера, сетевого диска или RDP-сессии — и больше не вводить их вручную при каждом подключении.
- Синтаксис команды CMDKEY
- Ключи и параметры
- Примеры использования
- Сохранить учётные данные для сетевого диска
- Сохранить данные для RDP без указания пароля в открытом виде
- Просмотреть все сохранённые учётные записи
- Удалить устаревшую запись
- Использование в скрипте развёртывания
- Массовое удаление RAS/VPN записей
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Можно ли просмотреть сохранённый пароль через CMDKEY?
- CMDKEY хранит пароли безопасно?
- Работает ли CMDKEY в скриптах, запущенных через Task Scheduler?
- Как сохранить пароль для подключения к принтеру по сети?
- Можно ли использовать CMDKEY для OAuth или токенов?
Синтаксис команды CMDKEY
CMDKEY [{/add | /generic}:целевой_ресурс [/user:имя_пользователя] [/pass[:пароль]] [/smartcard]]
[/delete[:целевой_ресурс] | /delete /ras]
[/list[:целевой_ресурс]] Плейсхолдеры:
целевой_ресурс— имя сервера, IP-адрес или произвольная метка (напримерserver01,192.168.1.10,MicrosoftOffice).имя_пользователя— UPN (user@domain.com), NetBIOS (DOMAIN\user) или локальное имя.пароль— если параметр/passуказан без значения, система запросит пароль интерактивно (безопаснее, чем передавать в открытом виде).
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
/add:ресурс | Добавляет запись для Windows-аутентификации (NTLM/Kerberos) | CMDKEY /add:srv01 /user:admin /pass:P@ssw0rd |
/generic:ресурс | Добавляет универсальную запись (для RDP, Basic-auth, произвольных приложений) | CMDKEY /generic:TERMSRV/192.168.1.5 /user:user /pass |
/user:имя | Имя пользователя для новой записи | /user:DOMAIN\operator |
/pass[:пароль] | Пароль; без значения — интерактивный ввод (скрытый) | /pass:Secret1 или просто /pass |
/smartcard | Использовать смарт-карту вместо пароля | CMDKEY /add:srv02 /user:user /smartcard |
/list | Показать все сохранённые записи или конкретную по имени ресурса | CMDKEY /list / CMDKEY /list:srv01 |
/delete:ресурс | Удалить запись для указанного ресурса | CMDKEY /delete:srv01 |
/delete /ras | Удалить все записи RAS/VPN-подключений | CMDKEY /delete /ras |
Примеры использования
Сохранить учётные данные для сетевого диска
Нужно подключить \\fileserver\share без запроса пароля каждый раз при входе в систему.
CMDKEY /add:fileserver /user:DOMAIN\svc_backup /pass:BackupPass1
После этого команда net use Z: \\fileserver\share подключится без диалога аутентификации.
Сохранить данные для RDP без указания пароля в открытом виде
Для удалённого рабочего стола нужен тип /generic с префиксом TERMSRV/. Чтобы не светить пароль в истории команд, используйте /pass без значения.
CMDKEY /generic:TERMSRV/192.168.10.5 /user:admin /pass
Система запросит пароль в защищённом диалоге. После этого mstsc /v:192.168.10.5 откроется без запроса учётных данных.
Просмотреть все сохранённые учётные записи
Полезно перед деплоем скрипта убедиться, что нужные записи уже есть в хранилище.
CMDKEY /list
Команда выведет список: тип записи (Generic/Windows), целевой ресурс и имя пользователя. Пароли не отображаются.
Удалить устаревшую запись
Сервер переименован или пароль изменился — старую запись нужно удалить перед добавлением новой.
CMDKEY /delete:fileserver
Запись исчезнет из Credential Manager; следующее обращение к ресурсу снова потребует аутентификации.
Использование в скрипте развёртывания
При автоматической настройке рабочих станций можно заранее прописать учётные данные, чтобы последующие шаги скрипта работали без интерактивного ввода.
@echo off CMDKEY /add:deploysrv /user:deploy_svc /pass:%DEPLOY_PASS% net use S: \\deploysrv\scripts /persistent:no call S:\setup.cmd CMDKEY /delete:deploysrv
Пароль передаётся через переменную окружения DEPLOY_PASS, а после завершения развёртывания запись удаляется — хорошая практика безопасности.
Массовое удаление RAS/VPN записей
На компьютере накопилось множество устаревших VPN-профилей — одной командой удалить все.
CMDKEY /delete /ras
Все записи типа RAS удаляются из хранилища немедленно.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
RDP всё равно запрашивает пароль несмотря на /add | Для RDP нужен тип /generic с префиксом TERMSRV/, а не /add | CMDKEY /generic:TERMSRV/имя_сервера /user:... /pass:... |
«Целевой объект не найден» при /delete | Имя ресурса указано не точно так, как оно сохранено | Сначала CMDKEY /list — скопировать точное имя из вывода, затем удалять |
| Пароль с пробелами или спецсимволами не сохраняется | CMD разбивает строку по пробелам | Заключить значение пароля в кавычки: /pass:"Мой Пароль#1" |
| Запись создаётся, но net use продолжает запрашивать пароль | Имя сервера в CMDKEY не совпадает с тем, что использует net use (FQDN vs NetBIOS) | Добавить запись под обоими именами: CMDKEY /add:srv01 и CMDKEY /add:srv01.domain.local |
| CMDKEY выдаёт ошибку «Отказано в доступе» | При добавлении корпоративных учётных данных требуется профиль с правами записи в хранилище | Запустить CMD от имени пользователя (не SYSTEM), под чьим профилем нужно хранить запись |
Когда применять, а когда нет
CMDKEY незаменима в скриптах автоматизации, где требуется подключение к сетевым ресурсам без GUI: развёртывание ПО, резервное копирование, плановые задачи в Task Scheduler. Команда работает в Windows 7 и новее, права администратора не нужны — каждый пользователь управляет своим хранилищем.
Не используйте CMDKEY для хранения паролей привилегированных учётных записей на серверах общего пользования: записи в Credential Manager привязаны к профилю, но любой, кто имеет физический или RDP-доступ к сессии, может их использовать. Для машин с общим доступом рассмотрите Windows Credential Guard или хранилище секретов вроде HashiCorp Vault.
Аналог в PowerShell: Get-StoredCredential / New-StoredCredential из модуля CredentialManager (устанавливается через Install-Module CredentialManager), либо нативный [System.Net.NetworkCredential] для передачи учётных данных в скрипте.
FAQ
Можно ли просмотреть сохранённый пароль через CMDKEY?
Нет. Команда CMDKEY /list показывает только тип записи, имя ресурса и пользователя. Пароль из хранилища можно извлечь только программно через Windows Data Protection API (DPAPI), и только под тем же пользователем, который его сохранил.
CMDKEY хранит пароли безопасно?
Пароли шифруются через DPAPI с ключом, привязанным к учётной записи Windows. Это достаточный уровень защиты для рабочих станций. На скомпрометированной машине под правами того же пользователя данные могут быть извлечены инструментами вроде Mimikatz.
Работает ли CMDKEY в скриптах, запущенных через Task Scheduler?
Да, если задача запускается от имени пользователя, а не учётной записи SYSTEM или службы. Записи в Credential Manager привязаны к конкретному профилю Windows.
Как сохранить пароль для подключения к принтеру по сети?
Используйте CMDKEY /add:имя_принтера_или_IP /user:DOMAIN\user /pass:пароль, затем net use \\printserver или установите принтер через rundll32 printui.dll,PrintUIEntry.
Можно ли использовать CMDKEY для OAuth или токенов?
Нет. CMDKEY работает только с парами логин/пароль и смарт-картами. Для токенов и OAuth используйте специализированные менеджеры учётных данных или хранилища секретов.


