- Command-Line Reference
- Prerequisites
- Feature description
- New and deprecated functionality
- Command shell overview
- Customize the Command Prompt window
- To configure the Command Prompt window
- Command-line reference A-Z
- Windows commands
- Prerequisites
- Command shell overview
- Command-line reference A-Z
- Управляем сервером Windows из командной строки
- Содержание статьи
- Базовые операции
- Хакер #181. Вся власть роботам!
- Sconfig.cmd
- Управление BYOD при помощи PowerShell
- Настройки сети
- Переменная patch
- Управление WFAS
- Заключение
Command-Line Reference
Applies To: Windows Server 2003, Windows Vista, Windows XP, Windows Server 2008, Windows 7, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2000, Windows Server 2012, Windows 8
Use this topic to find the documentation resources and other technical information that you need to learn about the command shell, and to automate command-line tasks by using scripts or scripting tools.
To read introductory information about the command shell and command-line tools, see Feature description. To see a listing of new and deprecated command-line tools see New and deprecated functionality.
To find information about a specific command, in the following A-Z menu, click the letter that the command starts with, and then click the command name.
Prerequisites
The information that is contained in this overview applies to:
Windows Server 2012
WindowsВ ServerВ 2008В R2
WindowsВ ServerВ 2008
WindowsВ ServerВ 2003В R2
WindowsВ ServerВ 2003
Feature description
New and deprecated functionality
New or Deprecated?
Create a new cluster or configure an existing cluster.
Configure DFS folders and folder targets in a DFS namespace.
Creates and manages File Server Resource Manager quotas.
Create and manage file groups, file screens, file screen exceptions, and file screen templates that are used to configure general administrative options for screening files.
Enable optional features in Windows by downloading required files from WindowsВ Update or a source that Group Policy specifies.
Read, write, run, debug, and test Windows PowerShell scripts and modules in a friendly, graphic-assisted environment.
Install or remove roles, role services, and features.
Monitor an RD Session Host session.
Create and manage storage reports and storage report tasks, and configure general administrative options for File Server Resource Manager.
Command shell overview
The command shell is a software program that provides direct communication between the user and the operating system. The non-graphical, command shell user interface provides the environment in which you run character-based applications and utilities. The command shell executes programs and displays their output on the screen by using individual characters similar to the MS-DOS command interpreter, Command.com. The command shell in the Windows Server operating system uses the command interpreter, Cmd.exe. Cmd.exe loads applications, directs the flow of information between applications, and translates user input into a form that the operating system understands.
You can use the command shell to create and edit scripts to automate routine tasks. For example, you can create simple scripts in batch (.bat) files to automate the management of user accounts or nightly backups. You can also use the command-line version of Windows Script Host to run more sophisticated scripts in the command shell. For more information, see Cscript or Wscript. You can perform operations more efficiently by using scripts than you can by using the user interface. Scripts accept all commands that are available at the command line.
Customize the Command Prompt window
You can change the properties for the Command Prompt window.
To configure the Command Prompt window
Open a Command Prompt window, click the upper-left corner of the Command Prompt window, and then click Properties. (Or to open Command Prompt Properties from the keyboard, press ALT+SPACEBAR+P.)
Click the Options tab.
In Command History, type or select 999 in Buffer Size, and then type or select 5 in Number of Buffers. By increasing the screen buffer size to 999, you enable scrolling through the Command Prompt window. By increasing the number of buffers to five, you increase the number of lines in the Command Prompt window to 5000.
In Edit Options, select the Quick Edit Mode and Insert Mode check boxes.
Click the Layout tab.
In Screen Buffer Size, type or select 2500 in Height.
To further customize your Command Prompt window settings, perform any of the following optional tasks:
In Screen Buffer Size, increase Width.
In Window Size, increase Height.
In Window Size, increase Width.
Clear the Let system position window check box, and then, in Window Position, change the values in Left and Top.
In the Apply Properties dialog box, click Save properties for future windows with same title.
To enable or disable file and directory name completion on a computer or user logon session, run Regedit.exe and set the following REG_DWORD value : HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD To set the REG_DWORD value, use the hexadecimal value of a control character for a particular function (for example, 0Г—9 is Tab and 0Г—08 is Backspace). User-specified settings take precedence over computer settings, and command-line options take precedence over registry settings.
Incorrectly editing the registry may severely damage your system. Before making changes to the registry, you should back up any valued data on the computer.
Command-line reference A-Z
To find information about a specific command, in the following A-Z menu, click the letter that the command starts with, and then click the command name.
Each command-line tool topic displays the version of Windows that is supported by the command-line tool.
Windows commands
All supported versions of Windows (server and client) have a set of Win32 console commands built in.
This set of documentation describes the Windows Commands you can use to automate tasks by using scripts or scripting tools.
Prerequisites
The information that is contained in this topic applies to:
- Windows Server 2019
- Windows Server (Semi-Annual Channel)
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2
- Windows Server 2008
- Windows 10
- Windows 8.1
Command shell overview
The Command shell was the first shell built into Windows to automate routine tasks, like user account management or nightly backups, with batch (.bat) files. With Windows Script Host you could run more sophisticated scripts in the Command shell. For more information, see cscript or wscript. You can perform operations more efficiently by using scripts than you can by using the user interface. Scripts accept all Commands that are available at the command line.
Windows has two command shells: The Command shell and PowerShell. Each shell is a software program that provides direct communication between you and the operating system or application, providing an environment to automate IT operations.
PowerShell was designed to extend the capabilities of the Command shell to run PowerShell commands called cmdlets. Cmdlets are similar to Windows Commands but provide a more extensible scripting language. You can run Windows Commands and PowerShell cmdlets in Powershell, but the Command shell can only run Windows Commands and not PowerShell cmdlets.
For the most robust, up-to-date Windows automation, we recommend using PowerShell instead of Windows Commands or Windows Script Host for Windows automation.
You can also download and install PowerShell Core, the open source version of PowerShell.
Incorrectly editing the registry may severely damage your system. Before making the following changes to the registry, you should back up any valued data on the computer.
To enable or disable file and directory name completion in the Command shell on a computer or user logon session, run regedit.exe and set the following reg_DWOrd value:
To set the reg_DWOrd value, use the hexadecimal value of a control character for a particular function (for example, 0 9 is Tab and 0 08 is Backspace). User-specified settings take precedence over computer settings, and command-line options take precedence over registry settings.
Command-line reference A-Z
To find information about a specific command, in the following A-Z menu, click the letter that the command starts with, and then click the command name.
Управляем сервером Windows из командной строки
Содержание статьи
Windows всегда ассоциировалась с графическим интерфейсом, и долгое время win-админы считали благом отсутствие необходимости запоминать консольные команды. Но с увеличением возможностей использование GUI уже не казалось таким простым. Настройки приходится искать среди многочисленных вложенных диалоговых окон. Попытки все оптимизировать, менять местами и добавлять новые визарды только усиливали путаницу. Появился Server Core, вместо одного сервера приходится управлять уже десятками, нередко выполняя однотипные операции. В итоге админы вернулись к консоли.
Базовые операции
На самом деле развитие консольных утилит все это время тоже не стояло на месте. Список команд не сильно изменился: net, netdom, whoami, скрипт активации slmgr.vbs, программа управления службами sc, сетевые утилиты для настройки и диагностики ipconfig, netsh, netstat/nbtstat, arp/getmac, ping, tracert, nslookup и многие другие. После анонса PowerShell появилась официальная информация, что привычные утилиты развиваться больше не будут, на смену им придут командлеты.
Такая судьба постигла консольный вариант диспетчера сервера ServerManagerCmd.exe и утилиту установки компонентов OCSetup.exe, которые, появившись в Win2008, пропали уже в Win2012. Теперь для установки компонентов из консоли используются командлеты Install-WindowsFeature и Add-WindowsFeature. Консольные утилиты по-прежнему привычнее, чем командлеты, но результат, полученный при помощи PowerShell, позволяет выбирать больше параметров, фильтровать их, обрабатывать в скриптах. А главное — теперь нужные данные можно получить не только с локальной, но и с удаленной системы, и в удобном виде. Все это говорит о том, что нужно уже быть готовым к переменам.
В последних редакциях ОС ярлык для запуска cmd.exe спрятали подальше в меню. Правда, и особой необходимости в его использовании нет, так как все традиционные консольные команды можно вводить непосредственно в консоли PowerShell (хотя есть и нюансы), обладающей несомненным преимуществом — автодополнением (по Tab). Постепенно на замену старым добрым утилитам появляются соответствующие командлеты, которые выдают аналогичный результат. Попробуем разобраться со всеми операциями по порядку, рассмотрим типичные задачи с использованием консольных команд и PowerShell.
Проверяем состояние сетевых интерфейсов при помощи PowerShell
Хакер #181. Вся власть роботам!
Сразу после установки операционная система получает имя, сгенерированное случайным образом. Чтобы переименовать систему и подключить ее к домену, используется утилита netdom:
Те же операции при помощи PowerShell выглядят даже понятней.
После установки системы или компонента, возможно, потребуется настройка режима запуска сервиса. В консоли для этого есть две команды:
А вот командлетов для управления запуском сервисов несколько: Get-Service, Start-Service, Set-Service, Stop-Service, Resume-Service. Их назначение говорит само за себя.
Sconfig.cmd
Запоминать команды админы Win не очень любят, в системе можно найти удобную оболочку для большинства консольных команд Sconfig.cmd. Изначально она разрабатывалась для Server Core, но в Win2012R2 доступна и в режиме полной установки сервера. Sconfig не требует знания всех ключей и позволяет, перемещаясь по 15 пунктам, быстро произвести основные установки или выполнить некоторые команды: добавить сервер в домен или рабочую группу, сменить имя компьютера, добавить локального администратора, настроить удаленное управление через WinRM и удаленный рабочий стол, настроить сеть, Windows Update, время и дату, перезагрузить и выключить компьютер. Нужно помнить, что скрипт использует стандартные консольные утилиты и если они пропадут в следующем релизе, то, скорее всего, не будет и Sconfig.
Sconfig.cmd упрощает работу ленивым админам
А вот с монтированием сетевых дисков не все так просто. Традиционно эта операция выполняется при помощи net use:
Его аналогом считается командлет New-PSDrive (от PowerShell Drive), но здесь есть проблема, которая многим неочевидна и порождает кучу вопросов.
При помощи New-PSDrive создается так называемый диск PowerShell, который доступен только в текущем сеансе консоли и только в PowerShell. То есть при помощи проводника, WMI, средствами .NET Framework, net use подключиться к такому диску нельзя. Это неочевидно, но в документации это явно прописано. Просто ее мало кто читает.
Чтобы постоянно использовать диск, необходимо экспортировать сеанс, в котором добавлен диск, или сохранить команду New-PSDrive в профиле PowerShell, или изначально использовать командлет New-Object:
И только в PowerShell 4.0 появился параметр –Persist, позволяющий монтировать PS-диски постоянно.
Для работы с дисками и разделами консоль Windows предлагает две утилиты: diskpart и fsutil. Они не очень удобны и информативны, а поэтому малопопулярны и их часто заменяют альтернативными разработками. Получим статистику по разделу.
Команда «Get-Command disk» выдаст несколько командлетов, но в нашем примере они не очень помогают, и, чтобы получить информацию о свободном месте, по-прежнему приходится обращаться к WMI:
Доступ к файлам в Win традиционно регулируется двумя утилитами — takeown и icacls (есть еще и cacls, но она признана устаревшей), вполне справляющимися со своими обязанностями. Например, чтобы сделать текущую учетную запись (должна входить в группу админов) владельцем каталога, достаточно ввести:
Утилита icacls позволяет управлять списками контроля доступа. Для примера, сохраним ACL в файл и восстановим его:
Та же операция при помощи PowerShell выглядит проще:
Управление BYOD при помощи PowerShell
Одна из самых больших проблем, с которыми сталкиваешься при работе с моделью BYOD, — отсутствие управления устройствами пользователей. В Win2012R2 этим заправляет Device Registration Service (DRS), при регистрации на устройство устанавливается сертификат, а в AD создается новый объект устройства.
Этот объект устанавливает связь между пользователем и устройством, создавая нечто вроде двухфакторной аутентификации. Пользователи получают доступ к корпоративным ресурсам, которые были недоступны, когда они работали за пределами доменной сети. Для работы потребуется роль Active Directory Federation Services (AD FS) и собственно служба DRS (устанавливается при помощи командлета Install-AdfsFarm). Теперь инициализируем службу и приступаем к регистрации устройств пользователей.
В консоли AD FS Management переходим к Authentication Policies, выбираем Edit Global Primary Authentication и активируем Enable Device Authentication. Теперь, используя командлет Get-AdfsDeviceRegistration, можем просматривать и подтверждать устройства (подробнее).
Настройки сети
Комплект консольных сетевых утилит достаточно хорошо известен администраторам, ведь их приходится использовать довольно часто, как при установке, так и для диагностики. Настраивают сетевой интерфейс при помощи netsh interface. Для примера просмотрим список и для одного из доступных установим IP и DNS-сервер:
Смотрим сетевые настройки
Для установки и изменения параметров сетевого интерфейса при помощи PowerShell 3.0 и выше используются командлеты New-NetIPAddress и Set-NetIPAddress.
Причем New-NetIPAddress позволяет задавать несколько IP для одного интерфейса. Вместо InterfaceAlias можно использовать индекс InterfaceIndex, который легко узнать в выводе Get-NetIPInterface.
На смену команде route пришел набор командлетов, очень простых и понятных в использовании.
Таблица маршрутизации, полученная при помощи route и Get-NetRoute
Аналогом ping служат два командлета Test-Connection и Test-NetConnection (сокращенно tnc). Первый очень простой и напоминает обычный ping, второй позволяет проверить доступность определенного порта или системы с разных ПК. Например, посмотрим, на каких ПК в группе включен RDP, и проверим подключение к example.org с двух систем:
Но иногда вместо одной команды придется запомнить несколько командлетов. Так, состояние сетевых интерфейсов традиционно можно узнать при помощи ipconfig. До Win2012/8, чтобы сделать то же самое при помощи PowerShell, приходилось обращаться непосредственно к WMI. Например, нам нужны МАС- и IP-адреса:
Переменная patch
В качестве команд Win может принимать любой файл с расширением exe, bat, cmd, com, js, msc и vbs, который расположен в текущем каталоге или прописан в переменной PATH. Просмотреть значение PATH очень просто. Для этого вводим «echo %PATH%» или используем команду set (set > filename.txt). В консоли PowerShell — «echo $Env:PATH» или «Get-ChildItem Env:». Чтобы изменить, просто дописываем нужный каталог:
или используем GUI (My Computer -> Свойства системы -> Дополнительно -> Переменные среды -> Path). Средствами PowerShell изменить значение можно, установив SetEnvironmentVariable:
И только в PowerShell 3.0 появился простой аналог ipconfig, точнее, несколько. Например, командлет Get-NetIPAddress выдает подробную информацию об интерфейсах, а Get-NetIPConfiguration (алиас gip) позволяет получить информацию о сетевых настройках: IP интерфейса, шлюза и DNS. Добавив дополнительные параметры, например –Detailed, получим больше данных.
Профильтровав их вывод, мы можем заменить «ARP –a» выводящую таблицу МАС-адресов и GETMAC — отображающую MAC-адреса сетевых адаптеров локального или удаленного компьютера. Есть уже и готовые скрипты. Например, PingMultipleServerWithTraceroute.ps1 (goo.gl/0iLeyg) позволяет проверить подключение к нескольким серверам и запустить аналог tracert к неответившим системам.
Управление WFAS
Настройка брандмауэра Windows в режиме повышенной безопасности WFAS (Windows Firewall with Advanced Security) традиционно производится при помощи netsh advfirewall, появившейся в ОС начиная с Win2k8/Vista и практически не изменившейся с тех пор. Контекст advfirewall позволяет использовать семь команд (export, import, dump, reset, set, show и help) и четыре субконтекста (consec, firewall, mainmode и monitor). Просмотреть подробности можно, использовав ключ help или ‘/?’, да и в Сети доступно достаточное количество примеров. Например, команда set позволяет сконфигурировать профили, show — просмотреть состояние. Смотрим настройки по умолчанию, активируем профили и для Domain действием по умолчанию установим блокировку.
Официальная информация гласит, что в следующих релизах netsh может пропасть, а использовать следует командлеты PowerShell, позволяющие к тому же контролировать еще больше функций. Командлеты NetSecurity доступны только в PS 3.0, для их использования в Win2012/8 их необходимо импортировать Import-Module NetSecurity. При помощи Get-Command firewall получим список из 27 командлетов (полный список командлетов модуля — goo.gl/Aj9Mg4). Ситуацию упрощает то, что названия командлетов пересекаются с командами netsh.
Настройкой Windows Firewall можно управлять при помощи почти 30 командлетов
Теперь тот же пример, но средствами PS:
Как видим, командлеты выглядят даже проще. Вместо параметра All можно указать на конкретный профиль: –Profile Domain,Public,Private.
Смотрим профили Windows Firewall
Доступны и прочие функции. Например, можем исключить Ethernet-интерфейс из профиля Public.
Чтобы вернуть настройки в исходное состояние, достаточно вместо Ethernet установить NotConfigured. Дополнительные параметры командлета Set-NetFirewallProfile позволяют настроить журналирование, добавить IP, порт, протокол и многое другое. Все манипуляции с правилами производятся при помощи семи командлетов: New|Set|Copy|Enable|Disable|Remove|Rename-NetFirewallRule. Чтобы просмотреть установленные правила, используем командлет Get-NetFirewallRule, при помощи фильтров мы можем легко отобрать нужные. Например, блокирующие и все, что касается IE:
Создадим правило, блокирующее исходящие соединения для IE в двух профилях.
Теперь к правилу можем добавить протокол, порт и IP удаленной и локальной системы.
При создании или изменении мы можем группировать правила, используя параметр –Group, и впоследствии управлять не одним правилом, а всеми входящими в группу, при помощи -DisplayGroup. Чтобы отключить правило, воспользуемся
Заключение
Вполне очевидно, что в будущем админу все больше и больше придется выполнять настройки не при помощи GUI, а используя средства командной строки. Это быстрее, позволяет автоматизировать практически все задачи и легко управляться с большим количеством серверов.
Список параметров командлета можно узнать при помощи Show-Command, например Show-Command Get-NetFirewallRule.