Cmd — CMD или Powershall


Содержание

Windows PowerShell и командная строка Windows 10

Достаточно опытные пользователи Windows, конечно же помнят командную строку MS-DOS, хотя возможно эти воспоминания не так приятны. Но даже после 20 летних попыток провалить свою командную строку, Windows 10 по-прежнему вознаграждает тех, кто понимает преимущества использования командной строки для некоторых общих задач.

Как знают все системные администраторы, ввести команду быстрее, чем использовать графический интерфейс, и это ещё более справедливо для скриптов, которые могут выполнять целую последовательность команд. Windows 10 включает в себя среду командной оболочки нового поколения Windows PowerShell, которая предлагает огромные возможности тем, кто готов потратить немного времени на изучение её команд.

Удобная командная строка Windows 10

Командный процессор Windows — Cmd.exe, внешне похож на своего древнего предка, MS-DOS. На 64-битной системе Windows 10, Cmd.exe родной процесс Windows 64-бит. Самый простой способ открыть командную строку — меню «Быстрые ссылки» (кликнете правой кнопкой мыши «Пуск» или воспользуйтесь сочетанием клавиш Windows + X). Это меню имеет два параметры командной строки. Один, работает под вашей учётной записью пользователя и второй, запускается с правами администратора.

А также можно ввести в поле поиска Cmd и затем, в списке результатов, щёлкнуть «Командная строка«. Или кликнуть на элементе правой кнопкой мыши и затем, в контекстном меню, выбрать «Открыть как администратор», чтобы открыть окно командной строки с повышенными привилегиями. Видимые различия между двумя этими способами — появившийся в строке заголовка сеанса командной строки, префикс администратора. Эти изменения вы можете увидеть на рисунке ниже, где открыты настройки свойств для окна командной строки. Это можно сделать щёлкнув правой кнопкой мыши на значке в левой части строки заголовка, а затем выбрав «Свойства».

Для изменения цветовой схемы командной строки с ретро зелёно-чёрной комбинации, используйте вкладку цвета. (Посмотрите на даты файла в окне предварительного просмотра!)

Как перейти из проводника в командную строку двумя кликами

Вы находитесь в проводнике. И хотите открыть окно командной строки в текущей папке. К счастью, для этого есть ярлык. Удерживая нажатой клавишу Shift, щёлкните правой кнопкой мыши на любом свободном месте в папке (убедитесь, что не выбраны файлы), а затем в контекстном меню выберите команду «Открыть окно команд».

Если вы не знаете, что можно сделать в окне командной строки Windows 10, введите «help». Появится список из 84 команд с кратким описанием для каждой из них. Хотите узнать полный синтаксис для команды? В окне командной строки введите имя команды и за ней переключатель /?.

Командная строка полезна для некоторых задач управления файлами, а её синтаксис не сильно изменился со времён MS-DOS. Например, с помощью подстановочных знаков, использовав команду Ren * .htm * .html, вы можете изменить расширение группы файлов в папке. Эта работа почти невозможна в Проводнике.

Есть несколько команд, которые вы, вероятно, не знаете, но они могут оказаться очень полезными. Следующий список содержит несколько таких команд:

Systeminfo. Эта удобная команда выводит подробное описание текущей системы. В том числе имя хоста, версию Windows и исходную дату её установки, членство в домене или рабочей группе, детали сети и многое другое. На рисунке ниже показана небольшая часть возможного вывода этой команды. Введите команду с символом «>«, после которого следует полный путь к файлу назначения, чтобы сохранить результаты в файле, который вы можете просмотреть позже.

Вывод для команды Systeminfo содержит гораздо больше деталей, чем в представленном здесь фрагменте. Перенаправьте вывод в текстовый файл, чтобы сохранить информацию для будущего использования.

Driverquery. Если вам интересно, какие драйверы установлены в данной системе (локальной или удалённой), эта команда вам в помощь. Используйте / FO CSV чтобы указать, что вы хотите выводить данные в формате с разделителями-запятыми (CSV). Перенаправьте вывод в файл, и вы можете открыть его для более детального анализа в Excel.

Icacls. Эта странно названная команда позволяет управлять разрешениями (списки управления доступом, или ACL) для файлов и папок. Если вы не можете удалить или переименовать файл или папку из-за разрешения, эта команда вам поможет.

Shutdown. Иногда в меню «Питание» не содержатся действительно нужные параметры. Эта команда, с разными переключателями (/r для перезагрузки и /s для выключения), может охватить нужные сценарии. Используя параметр /t , можно указать время ожидания (в секундах) перед выполнением команды. (Значение по умолчанию составляет 30 секунд.) Если у вас есть несколько задач и вы хотите, чтобы ваш компьютер перезагрузился через 15 минут, используйте команду shutdown /r /t 900. Если передумаете, используйте shutdown /a для отмены запланированного выключения или перезагрузки.

Sc. Этой командой можно запросить, начать, приостановить, остановить и настроить службы с помощью диспетчера управления службами. Её синтаксис сложен, но возможности чрезвычайно мощные.

Tasklist и Taskkill. Используя эти команды можно создать список выполняемых задач и затем насильственно закончить любой процесс в этом списке. Taskkill — оружие тупое, но в нужный момент очень эффективно.

Для более быстрой навигации в окне командной строки стоит узнать, как работают клавиши со стрелками. Используйте стрелки вверх и вниз для прокрутки и повторения последней команды. Используйте кнопку со стрелкой вправо чтобы повторить предыдущую команду по одному символу за раз, что может сохранить вам время, если требуется повторить команду с другим параметром или переключателем. Наконец после повтора или ввода команды, но перед нажатием Enter, используйте стрелки влево и вправо для перемещения по команде и внесения необходимых изменений. При редактировании команды, нажмите клавишу Insert для переключения между режимом замены (в котором все, что вы вводите заменяет существующее содержимое командной строки) и режимом вставки, который добавляет то, что вы вводите не нарушая текущей команды.

Windows PowerShell

Командная строка Windows 10 может проследить свою родословную более чем в трёх десятилетиях. Намного более современная Windows PowerShell, версии 1.0, появилась всего лишь десять лет назад.

Невероятно богатая среда PowerShell построена для системных администраторов, автоматизации их задач и конфигурации системы. Вместо ограниченного числа команд, Windows PowerShell предлагает командлеты, которые работают с файловой системой, реестром, хранилищами сертификатов и почти любым компонентом Windows (настольных и серверных). Командлеты доступны в основных модулях, которые входят в каждый выпуск Windows 10. И, конечно, реальная задача для многих из них — возможность объединить командлеты в сценарии. Если вы администратор, можно использовать эти сценарии для быстрого и эффективного выполнения повторяющихся управленческих задач.

Если вы не администратор системы, Windows PowerShell может пугать. Но некоторые задачи, включая управление Microsoft Azure и Office 365, для команд Windows PowerShell подходят идеально. Давайте просто познакомимся с основами Windows PowerShell.

Windows PowerShell включает собственную среду командной строки, с отличительным синим фоном, который устанавливается отдельно от командной строки Windows 10. Как показано на рисунке ниже, одно из первых, что нужно сделать любому новичку в Windows PowerShell, это вывести командлет Get-Help, включающую ссылку на онлайн помощь и подробные инструкции для использования командлета Update-Help.

Используйте командлет Get-Help, чтобы начать работу в интерактивной среде командной строки Windows PowerShell.

Добавьте слово в конце Get-Help и вы сможете найти командлеты, которые включают в себя этот термин. Если вы знаете о существовании командлета для управления BitLocker, но точно его не помните, попробуйте Bitlocker Get-Help для отображения этого списка. Используя синтаксис Get-Help -онлайн , вы можете перейти непосредственно в онлайн справочник и получить информацию о определённом командлете.

Если вы не уверены, в точном имени командлета, можно нажать клавишу Tab и использовать IntelliSense. Например, введите get-p и нажмите клавишу Tab, чтобы увидеть первый соответствующий командлет, Get-Package. Держите клавишу Tab нажатой, и прокрутите весь цикл: Get-PackageProvider, Get-PackageSource и так далее.

Если вам нужна дополнительная помощь, подумайте об использовании интегрированных сценариев (ISE) среды Windows PowerShell, которые предлагают графический интерфейс и много подсказок при наборе командлетов. Рисунок ниже показывает Windows PowerShell ISE с открытым справа окном команд и командлетом Get-MpComputerStatus из модуля Defender. Здесь не нужно вводить командлет. Достаточно просто выбрать его из списка и нажать «Выполнить».

С помощью Windows PowerShell ISE, можно закрепить окно команд вместе с оболочкой так, чтобы было можно просмотреть командлеты в модуле и нажать кнопку «выполнить» или «вставить».

Если вы предпочитаете плавающее окно вместо состыкованной панели, на панели инструментов нажмите кнопку «Показать окно команд» (вторая справа). Как показано на рисунке, здесь вы можете увидеть полный выбор модулей.

Хотя ISE Windows PowerShell специально предназначен для создания сценариев Windows PowerShell, его надстройка Commands служит полезным учебным инструментом.

Как запускать автоматические команды в командной строке Powershell

Если вы работаете с компьютером достаточно долго, вы в конечном итоге разработаете несколько рабочих процессов. Они могут быть простыми или сложными, но, скорее всего, вы получите несколько уникальных для вас. Чем больше вы делаете со своим компьютером, тем больше вероятность, что вы в конечном итоге будете использовать командную строку или более мощный PowerShell.

Иногда вы можете столкнуться с тем, что запускаете одни и те же несколько команд каждый раз, когда запускаете PowerShell или командную строку. Вместо этого, почему бы не сэкономить некоторое время и не запускать их автоматически при запуске?

Что можно делать с автоматическими командами?

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

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

Настройка автоматических команд PowerShell

Для автоматического запуска команд в PowerShell отредактируйте свой профиль. Чтобы начать, проверьте, если у вас уже есть профиль. Откройте PowerShell и введите следующее:

Это вернет либо True, либо False. Если значение false, выполните следующую команду:

New-Item –Path $ Profile –Type File –Force

Это перезапишет любой существующий профиль. Если предыдущая команда вернула True, вы, вероятно, не хотите запускать это. Если вы хотите начать все сначала, продолжайте.

Чтобы настроить автоматические команды, отредактируйте свой профиль. Используйте текстовый редактор по вашему выбору, но Блокнот установлен по умолчанию. Отредактируйте файл в Блокноте, введя следующее:

Поместите здесь любые команды, которые вы можете запускать в PowerShell, и они будут автоматически запускаться при каждом его открытии. Если вы знакомы с Linux, это по сути то же самое, что и редактирование файла

В большинстве случаев политика выполнения PowerShells запрещает запуск этого сценария. Это поможет сохранить вашу систему в безопасности. Чтобы разрешить запуск сценария, запустите PowerShell от имени администратора и выполните следующее:

Прочтите подсказку и введите Y, чтобы установить новую политику выполнения.

Настройка автоматического Команды командной строки

По сравнению с подходом в стиле Unix, который вы используете для автоматического запуска команд в PowerShell, командная строка гораздо более похожа на Windows. Есть два разных способа сделать это, в зависимости от того, как вы предпочитаете работать.


Способ 1. Реестр Windows

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

Чтобы создать правильное значение реестра, откройте командную строку и выполните следующее:

reg add HKCUSoftwareMicrosoftCommand Processor / v AutoRun ^ / t REG_EXPAND_SZ / d% USERPROFILE% init.cmd / f

Теперь создайте файл в папке своего профиля (обычно C: UsersUSERNAME) с именем auto.cmd.

Отредактируйте этот файл с помощью команд, которые вы хотите запускать автоматически при запуске командной строки.

Если вы решите, что вам больше не нужно это запускать автоматически, удалите раздел реестра. Просто запустите следующее:

reg delete HKCUSoftwareMicrosoftCommand Processor / v AutoRun

Метод 2: используйте ярлык

Если у вас простой случай и вы не хотите использовать реестр, вы можете использовать рабочий стол ярлык. Например, в Windows 10 вы можете найти командную строку в меню «Пуск», щелкните правой кнопкой мыши и выберите «Открыть местоположение файла». Скопируйте ярлык командной строки здесь и вставьте его на рабочий стол.

Щелкните правой кнопкой мыши на только что вставленном ярлыке и выберите «Свойства». Вы увидите раздел с путем к приложениям. Он будет выглядеть следующим образом:

C: Пользователи & lt, Ваше имя пользователя & gt, Desktopcmd.exe

Просто измените это, добавив -cmd / K, а затем команду или команды по вашему выбору. Вот пример:

C: Пользователи & lt, Ваше имя пользователя & gt, Desktopcmd.exe -cmd / K cls

Это просто откроет командную строку и затем очистит экран. Вы также можете объединять команды, используя && между ними. Вот еще один пример:

C: Пользователи & lt, Ваше имя пользователя & gt, Desktopcmd.exe -cmd / K cls && dir

Это очистит экран и затем отобразит содержимое каталога.

Заключение

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

Как с помощью командной строки или PowerShell получить S > 15.07.2020 Дмитрий Демченко 2978 + Windows

При создании учётной записи пользователя, группы или присвоению имени компьютеру каждому из этих объектов Windows присваивает уникальный идентификационный идентификатор безопасности, именуемый Security Identifier или просто SID. И так как именно SID позволяет точно идентифицировать пользователя, для доступа к различным внутренним и внешним ресурсам Windows использует его.

Цукерберг рекомендует:  C# - Кодировки java в с#

Исключение составляют SIDы встроенных учётных записей, уже имеющихся в Windows — скрытого администратора и гостя. Независимо от версии системы, эти идентификаторы одинаковы во всех экземплярах Windows. Сие сделано специально, дабы администратор имел возможность централизовано управлять доступом при отсутствии доменной структуры.

При выполнении различных тонких настроек, применении твиков подобных тому действий у вас может возникнуть необходимость узнать SID пользователя по его имени. Сделать это можно разными путями, и здесь мы рассмотрим самые распространённые. Если нужно посмотреть SID текущего пользователя, самым лучшим решением будет использование консольной утилиты whoami.

Откройте командную строку и выполните в ней такую команду:

CMD или PowerShell, чтобы получить все подкаталоги

Я пытаюсь выяснить, что CMD или команду PowerShell я могу использовать, чтобы получить подкаталоги, содержащихся в каталоге. Я хочу только последний подкаталог в каждом списке, оо, например, если у меня есть что-то вроде:

и я в «МЭТЬЮ» директории, я просто хочу, чтобы вернуть список, который имеет:

Я пытаюсь использовать , dir /b /s но это дает мне что — то вроде:

Любая помощь будет принята с благодарностью.

Тем не менее трудно понять, что вы ищете.

Вы хотите получить список всех папок ниже текущей папки, которые не имеют каких-либо дочерних папок. Кроме того, вы только хотите, чтобы отобразить часть пути, который не указан в текущем пути.

Для ответа Powershell:

Обратите внимание на -Directory переключатель требует Powershell 3.0, если я правильно помню.

отредактирован , чтобы сократить время обработки

Есть две проблемы: определить, какие папки, чтобы показать и удалить префикс из вывода.

Для решения первой задачи, структура папок под текущей папкой перечислена и для каждой папки нашла это проверяется, если есть папка внутри. В нет дочерние папки, текущая папка должна быть эхом.

Для решения второй задачи, все операции выполняются под Подст привода. Текущая папка определяется как корень :: диска. Таким образом, полный путь к текущей папке удаляется из строки для вывода, заменено простым ::\ , который будет удален с правильно настроенной for /f командой , когда папка должна быть эхом.

Windows: Запуск Службы — CMD & PowerShell

Служба в Windows может быть запущена с помощью утилиты Service Manager.

Для запуска Service Manager GUI, нажмите клавишу Win для открытия меню «Пуск», наберите services , чтобы найти Service Manager и нажмите Enter .

Также служба в Windows может быть запущена из командной строки (CMD) или PowerShell.

В данной заметке я показываю, как запустить, остановить или узнать состояние службы в Windows с помощью командной строки (CMD) или PowerShell.

Дельный Совет: Вывести список служб в Windows из CMD! Читать далее →

Запуск Службы Из Командной Строки (CMD)

Во избежании ошибки «Access is denied«, запустите CMD с правами администратора: нажмите клавишу Win , чтобы открыть меню «Пуск», наберите cmd , чтобы найти командную строку и нажмите комбинацию Ctrl + Shift + Enter , чтобы запустить командную строку от имени администратора.

Используйте следующие команды, чтобы запустить, остановить или проверить статус службы в Windows из командной строки (CMD).

Узнать состояние службы:

Дельный Совет: Убить зависший процесс в Windows из CMD! Читать далее →

Запуск Службы Из PowerShell


Во избежании ошибки «Access is denied«, запустите PowerShell с правами администратора: нажмите клавишу Win , чтобы открыть меню «Пуск», наберите powershell , чтобы найти командную строку и нажмите комбинацию Ctrl + Shift + Enter , чтобы запустить PowerShell от имени администратора.

Используйте следующие команды, чтобы запустить, остановить или проверить статус службы в Windows из PowerShell.

Windows PowerShell vs Command Prompt (cmd): Which to Choose

Former Technical Marketing Specialist

Published: March 29, 2020

What is the Windows Command Prompt?

Windows Command Prompt (also known as the command line, cmd.exe or simply cmd) is a command shell based on the MS-DOS operating system from the 1980s that enables a user to interact directly with the operating system. Specifically, this venerable command shell provides an environment to run applications and various utilities; output is displayed in the same window. It is possible to use the cmd shell to create and edit scripts and save them to batch files to solve automation tasks in one-system frames; however, it was never intended for remote system administration.

What is Windows PowerShell?

Windows PowerShell is a command shell and scripting language designed for system administration tasks. It was built on top of the .NET framework, which is a platform for software programming developed by Microsoft in 2002.

PowerShell commands, or cmdlets, help you manage your Windows infrastructure. In addition, they enable a user to access the registry, the file system and Windows Management Instrumentation (WMI) space on systems remotely. Moreover, the PowerShell command shell enables you to create complex scripts with multiple conditions.

How PowerShell differs from Command Prompt

As mentioned earlier, cmd is a very old tool that was never intended for remote system administration. Extending its functionality requires additional utilities, such as Microsoft Sysinternals PsExec.

PowerShell, on the other hand, provides many cmdlets to simplify system administration tasks. It supports the automation of a wide range of tasks, such as Active Directory administration, user and permissions management, and extracting data about security configurations. Moreover, PowerShell now supports Linux.

The following table summarizes the key differences between Command Prompt and PowerShell from a programming and operations perspective:

PowerShell or cmd: Which should I choose

Clearly, there are many reasons why Windows PowerShell replaced the Command Prompt as the default in the Windows 10 operating system, and was preinstalled starting with Windows XP. But if you’re used to using cmd, you don’t need to feel any urgency in switching to PowerShell. In fact, most commands from cmd work fine in the PowerShell environment — Microsoft wanted to simplify the lives of system administrators, so it created command prompt aliases in PowerShell that enable it to interpret old DOS commands as new PowerShell commands.

To find out how old cmd commands map to the newer PowerShell cmdlets, use the Get-Alias command:

However, there is a good case to be made for making the leap to PowerShell. Everything you can do with cmd you can also do with PowerShell — and often it is more convenient, since there is a special environment to develop and test scripts. Additionally, PowerShell is a live language with a strong community ready and willing to help those new to scripting.

If you are a beginner and have questions about how to get started with Windows PowerShell, here is a PowerShell tutorial that will help you learn the basics of scripting and code creation:

PowerShell или командная строка? Что лучше?

Скорость и удобство командной строки известна многим пользователям Windows. Жаль, что далеко не все знают, как сделать ее более удобной для себя. Более того не всегда ее удобно вызывать, что делает ее использование менее комфортным. Сегодня мы рассмотрим некоторые возможности повышающие наше удобство как пользователя. Мы повысим скорость доступа к таким инструментам как PowerShell и уже упомянутая командная строка. Если вас не пугает то, что нам придётся лезть в реестр и что-то там менять, то эта статья для вас.

И так, вы наверное уже знаете, что многие задачи в Windows можно решить через командную строку или используя PowerShell. Разные пользователи предпочитают одно другому, но мы не будем делать предпочтений и настроим обе. Это гораздо эффективнее чем щёлкать мышью до бесконечности в настройках или в проводнике. Используя некоторые хитрости с реестром вы быстро и с лёгкостью решите возникшую перед вами проблему.

Если вы хотите решить задачи на своём компьютере без долгого мучения, вам стоит позаботиться о быстром доступе к командной строке или PowerShell. К счастью они оба крепятся на панель задач, разве что придётся немного попотеть, но это нам окупится. Для этого нужно выбрать в открытом окне контекстного меню пункт “Закрепить на панель задач”.

PowerShell использовать таким образом даже удобнее чем командную строку, хотя каждому своё. При клике на него правой кнопкой мыши появляется меню с дополнительными данными для запуска с правами администратора, например, таким, как PowerShell ISE (Integrated Scripting Environment). Это сопутствующий Script-Editor.

Для того чтобы запустить обе программы с полными правами нужно сделать следующие шаги. Нажать CTRL и Schift одновременно и нажать на значок панели задач. Следующим шагом будет запустить PowerShell (с правами администратора или без). Для этого нужно нажать Win+X или нажать на кнопочку пуск слева при помощи правой кнопки мыши. Тогда вылезет контекстное меню с кучей пунктов там, где обычно открывается меню от кнопки “пуск”.

В случае, если командную строку вы используете больше и чаще чем PowerShell, вы можете поменять обе записи местами. Для этого в настройках идём в панель задач и в персонализации используем переключатель, который замещает командную строку на PowerShell, хотя в некоторых версиях Windows включен по стандарту и не требует лишних телодвижений с нашей стороны что лучше для нас.

Погружаемся глубже в тему, вернее в Windows.

Помимо всего прочего PowerShell можно запускать из проводника и отправлять в конкретную папку. Для этого нужно в папке в правой части на пустой белой половине нажать правую кнопку мыши и выбрать пункт “открыть PowerShell”. Иной возможности запустить командную строку с правами администратора у нас к сожалению нет.

Команды могут оказаться для вас сложными, но далее мы покажем, как с ними взаимодействовать. Пункты контекстного меню настраиваются по следующему пути: папка – проводник – реестр – записи. Таковых и нужных нам три штуки в подразделах в HKEY_ CLASSES_ROOT\Directory\shell. Если кликнуть правой кнопкой мыши на значок папки или на часть списка, ну, или в правой части пустого поля, то произойдёт одно и то же, так что не принципиально что вы выберите и сделаете главное, что вот результат этих действий нам и нужен. Контекстное меню в папке в свободной области управляется подразделом HKEY_CLASSES_ROOT\Directory\Background\Shell. Лезем глубже. В записях под HKEY_CLASSES_ROOT\Drive\shell есть команды контекстного меню дисков.

Итак, рассмотрим описание записей в HKEY_CLASSES_ROOT\Directory\shell поближе. В ранних версиях Windows можно было с помощью правой кнопки мыши + Shift открыть контекстное меню папки и выбрать пункт открыть “командную строку”. Эта функция была в Windows 10 1703 уже убрана, а жаль.

Посмотрите на ключ в Windows 10 с помощью редактора реестра где есть подраздел cmd с записями для командной строки. Интересно то что, Microsoft добавила сюда запись HideBasedOnVelocityId, точное значение которой нигде публично не задокументировано и не описано, но, позволяет проводнику подавить команду. Если просто попробовать удалить это значение или назначить ему значение 0, то без прав редактирования ничего не выйдет. Изменения в ней ни к чему не приводят.

По непонятным причинам Microsoft настроила ключ cmd (а также соседний ключ Powershell) так, чтобы их содержимое не могло быть изменено даже администраторами или системной учетной записью, но есть лазейка. Это может сделать только учетная запись “TrustedInstaller”. Нам нужно ее как-то получить, но вот не задача. Нет ни одного способа получить эту учетную запись с помощью “выполнить как” или аналогичных механизмов в использовании. Можно конечно изменить права ключа таким образом, чтобы администраторы могли что-то редактировать, но лучше этого не делать. Потому что это может вызвать проблемы при следующем обновлении Windows, хотя если вы заблокировали обновления, то можете попробовать, мы же рассмотрим иной вариант.

Вот и тот самый вариант, который мы рассмотрим подробнее. Для этого вам нужно знать, что на самом деле нет ключа у реестра HKEY_CLASSES_ROOT. Он просто ярлык для HKEY_LOCAL_MACHINE \ Software\Classes и HKEY_CURRENT_USER \ Software\Classes. При противоречивых записях в обоих путях приоритет получает последний.

Ключ HKEY_CURRENT_USER и все его подразделы принадлежат не только логически, но и юридически зарегистрированной учетной записи пользователя и вы можете внести изменения в ней, как вам нужно для ваших целей. Таким образом, чтобы восстановить команду командной строки, отключенную Microsoft, вы можете создать в реестре путь к ключу HKEY_CURRENT_USER\Software\ Classes\Directory\shell\cmd, если он еще не существует, и там есть запись DWORD с именем HideBasedOn, она то нам и нужна. Создадим VelocityId со значением 0. То же самое относится и к вышеупомянутым вариантам. Под ct.de/yvma можно найти .reg – файл для загрузки, который вы можете дважды щелкнуть в вашем реестре и сделать записи. Кроме того, он содержит копии соответствующих записей из HKEY_LOCAL_MACHINE\Software\ Classes и помещает их в HKEY_CURRENT_USER\ Software \ Classes, чтобы защитить их от любых изменений, которые Microsoft может по своей прихоти внести в более поздних версиях Windows. Кроме того, файл по-прежнему пропускает команды контекстного меню, описанные здесь. Если после обновления Windows возникнут непредвиденные проблемы с контекстным меню или вообще с чем нибудь ещё, вы можете импортировать reg – файл и возможно, экспортировать ключ HKEY_CURRENT_USER\Software\ Classes\Directory из своего реестра и удалить его, чтобы восстановить исходное состояние.

Полные права, которые нам так нужны.

Делаем следующее. Пункт меню для открытия командной строки с правами администратора в определенной папке можно создать используя содержимое ключа …\shell\cmd и соседний ключ …\shell\RunAs копируется. Просто измените значение ключа (по умолчанию), например на „открыть командную строку здесь (администратор) “– это имя команды, которое отображается в контекстном меню. При этом не нужно изменять команду для выполнения.

Вызов выполняется с полными правами админа с именем ключа RunAs. Если вы предпочитаете PowerShell то, вместо этого вы можете скопировать содержимое из …\shell\Powershell после …\shell\RunAs и настроить как описано выше. Но нереально получить сразу и для командной строки и PowerShell права администратора как бы мы не пытались.

Таким образом, ключ RunAs может быть только один раз нами использованным. Наш .reg-файл уже использован, следовательно, для PowerShell нужно идти иным путём: генерим новый ключ …\shell\Hella Power admin. В качестве выполняемой команды он вводит вызов PowerShell и в опции командной строки-command дает ему команду, которая запускает еще один PowerShell с помощью команд Start – Process. Этот вызов использует опцию-Verb RunAs, которая гарантирует, что PowerShell будет открыт с правами администратора.

Кроме того, через ArgumentList вызов Start-Process получает инструкцию для переключения в выбранную папку через Set – ocation. Имя папки может содержать пробелы и, следовательно, должно быть заключено в кавычки. Тем не менее, цена импорта.reg-файла – это каждый новый запуск PowerShell, а также вызов процесса запуска с несколькими кавычками.

Каждая из этих операций уничтожает другие N-направляющие символы, которые не маскируются с Escape-символом в соответствии с используемой схемой. В результате, в качестве параметра для папки для управления в .reg-файл вставляем этот “винегрет” из символов \\\””\\\”%V`\\\”‘\\\”, хотя делать это, не самая лучшая затея. Все изменения будут внесены в ключ HKEY_CURRENT_ USER и, таким образом, должны быть защищены от возможных будущих творческих и прочих изменений Microsoft в правах пользователя реестра, это нам поможет не потерять свои труды. Даже если Microsoft когда-нибудь сможет полностью стереть записи в командной строке, то файл восстановит их, потому что он содержит все необходимое, то есть копию текущих записей из HKEY_LOCAL_MACHINE\Software\Classes, которые по сути и защищают наши интересы от Microsoft в реестре. Это текстовый файл, который вы сможете по необходимости легко настроить перед импортом.

Цукерберг рекомендует:  Javascript - Синтаксис Math.random в JavaScript

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

Windows PowerShell 2 вместо BAT | CMD | WSH

Администратор создание ленивое и по этому они (администраторы) неустанно ищут супер утилиту которая вместо них самих выполняла бы всю их работу ну или основную часть. Наиболее распространенным методом «избавления от головной боли и экономии времени» стала запись и последовательное пакетное исполнение необходимых операций — исполнение скриптов или сценариев в интерпретаторе команд операционной системы, так и был создан Windows PowerShell.

В составе MS-DOS и Windows 9x таким интерпретатором, позволяющим выполнять обработку пакетных файлов (bat-файлов), являлся command.com, впоследствии (начиная с выхода Windows NT) замененный cmd.exe. Позднее появился Windows Script Host. Windows Script Host (WSH; первоначально назывался Windows Scripting Host) – один из элементов Microsoft Windows, как часть операционной системы он начал поставляться, начиная с Windows 98. Позволяет запускать сценарии, написанные с помощью скриптовых языков VBScript/JScript и, как дополнение, некоторых других. Сценарии, исполняемые в WSH, предоставляют гораздо больше возможностей, чем использование командных (bat- и cmd-) файлов. Исполнение возможно в графической среде (wscript.exe) или в консоли (cscript.exe).

Тем не менее, процесс написания и выполнения сценариев в ОС Windows не развит так хорошо, как, например, в UNIX-системах. Одна из причин этого – сам графический интерфейс ОС Windows, видимо и сделавший ее столь популярной среди обычных, не корпоративных пользователей. Возможность управления некоторыми элементами среды Windows с помощью графического интерфейса не всегда можно реализовать с помощью системных утилит, выполняемых в командной строке. С другой стороны, возможности каких-то системных программ, поставляемых в составе Windows, не всегда представлены в GUI. К тому же интерпретаторы в Windows имеют довольно ограниченный набор команд, «зашитых» в саму оболочку. Windows Script Host не интегрирован с командной строкой и сам по себе представляет потенциальную опасность – его использует большое количество вредоносных программ.

Вредоносным ПО используется не только Windows Script Host (WSH), а и старые добрые пакетные файлы .bat | .cmd, по этому для дополнительной безопасности (её много не бывает ;) лучше отключить обработку и Windows Script Host (WSH) и пакетных файлов .bat | .cmd

Отключение Windows Script Host

Для отключения Windows Script Host (XP|2000) создайте в одной из указанных ниже веток реестра параметр (REG_DWORD) с именем «Enabled» и присвойте ему значение или 1 для включения.

Отключение Windows Script Host для текущего пользователя:


Отключение Windows Script Host для всех пользователей:

Параметр (REG_DWORD) с именем «Enabled» по умолчанию отсутствует! Для проверки работоспособности Windows Script Host создайте файл test.vbs и запустите его, если отключен, то вы получите примерно такое сообщение:

Windows Script Host access is disabled on this machine. Contact your administrator for details.

Запрет на обработку пакетных .bat|.cmd файлов

Метод 1 : — С помощью консольной утилиты REG. Нажмите кнопку Пуск, Выполнить и введите следующую команду в точности так, как указано ниже:

Метод 2 : Прямое редактирование реестра. Откройте редактор реестра и найдите ветку (возможно нужно будет создать), создайте параметр DisableCMD со значением по умолчанию ««:

Метод 3 : Использование редактора групповой политики в Windows XP Professional.

  1. Click Start, Run, type gpedit.msc and click OK.
  2. Navigate to User Configuration \ Administrative Templates \ System
  3. Double-click the Prevent access to the command prompt
    • Допустимые значения параметра «DisableCMD» :
      • «» (или отсутствие записи в реестре) — система может использовать режим командной строки и обрабатывать bat-файлы;
      • «1» — система не может использовать режим командной строки, но может обрабатывать bat-файлы;
      • «2» — система не может использовать режим командной строки и обрабатывать bat-файлы.

Указанные значения проверяются при запуске новой консоли, поэтому перезагружаться не требуется.

* ПРИМЕЧАНИЕ :
После отключения обработки .bat|.cmd файлов могут перестать функционировать должным образом некоторые программы использующие в своей работе .bat|.cmd файлы, а так же нельзя будет применить некоторые системные патчи! Не стоит отключать обработку .bat|.cmd файлов если на ПК используются .bat|.cmd файлы автоматического входа в систему и пр..

Знакомство c Windows PowerShell

Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.

Запустив PowerShell, вы не обнаружите поначалу никаких различий между ним и cmd.exe (разве что цвет фона окна у PowerShell по умолчанию — синий). Более того, вскоре вы обнаружите, что операции копирования/вставки в PowerShell реализованы также безобразно, как и в cmd.exe. Но первое впечатление о схожести этих оболочек, скажем так, не совсем соответствует действительности.

То обстоятельство, что работа оболочки PowerShell основана на .NET Framework, является главным ее отличием от предыдущих командных оболочек Windows. PowerShell полностью объектно-ориентирована. Результатом выполнения команды в PowerShell является не некий «текст сам по себе», а объект платформы .NET. Этот объект представляет собой собственно данные и имеет набор присущих ему свойств и методов.

Внутренние команды (точнее, командные структуры) для работы с объектами в PowerShell называются командлетами . Для них придумано специальное единообразное именование в виде комбинации действие-цель. Например, для определения данных используется действие “set”, для получения – “get”, для вывода — “out” и т. д. Цель – это тип объекта, к которому будет применено действие. Командлеты можно рассматривать как мини-программы, исполняемые в среде PowerShell. Для повышения функциональности можно создавать собственные командлеты или устанавливать командлеты сторонних разработчиков. Кроме командлетов, PowerShell позволяет выполнять функции, внешние сценарии (хранятся в файлах с расширением ps1) и внешние исполняемые файлы.

В состав PowerShell включена довольно обширная справочная система. Для начала работы с ней можно выполнить команду Get-Help.

Типы команд PowerShell

В стандартной оболочке cmd.exe было только два типа команд, внутренние и внешние. Внутренние команды распознавались и выполнялись непосредственно самим интерпретатором cmd.exe (dir, copy), внешние представляли собой отдельные исполняемые модули (xcopy, more). PowerShell поддерживает четыре типа команд: функции, командлеты, сценарии, внешние исполняемые файлы .

Командлеты PowerShell

Командлет представляет собой класс .NET, порождённый от базового класса Cmdlet. Единый базовый класс Cmdlet гарантирует совместимый синтаксис всех командлетов, а также автоматизирует анализ параметров командной строки и описание синтаксиса командлетов, выдаваемое встроенной справкой.

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

Командлеты разрабатываются с помощью пакета Windows PowerShell 2.0 Software Development Kit (SDK). Командлеты могут быть по-настоящему эффективными при использовании их композиции, когда объекты передаются по конвейеру от одного командлета к другому.

Более подробную информацию о создании своих собственных командлетов можно найти по этой ссылке >>>

Функции PowerShell

PowerShell дает возможность определять пользовательские функции как в командной строке так и в файлах сценариях. Анализ синтаксиса функций производится только один раз при её объявлении, при повторном запуске функции подобный анализ не проводится.

Создать свою функцию можно следующим образом:

Эта простейшая функция при её вызове выводит на экран строку «Helo world!». Функции поддерживают работу с параметрами (аргументами), например:

Более подробно о функциях можно узнать из справки:

Сценарии PowerShell

Сценарий PowerShell представляет собой блок кода на языке PowerShell, который хранится во внешнем файле с расширением .ps1. Анализ синтаксиса сценария производится при каждом его запуске.

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

Внешние исполняемые файлы в PowerShell

Последний тип команд, запускаемых в PowerShell, внешние исполняемые файлы, которые выполняются не оболочкой, а выполняются операционной системой обычным образом. Из оболочки PowerShell можно запускать любые внешние команды интерпретатора .cmd (xcopy, more etc), просто указывая их имена.

Псевдонимы командлетов PowerShell

Командлеты PowerShell соответствуют шаблону «глагол-существительное» и часто бывают слишком длинными для их запоминания и дальнейшего использования. Псевдонимы командлетов PowerShell дают возможность пользователям выполнять командлеты по их альтернативным именам. Предварительно в PowerShell определено

Просмотреть список текущих псевдонимов для командлетов можно с помощью команды:

Псевдонимы командлетов PowerShell делятся на два типа. Первый тип предназначен для совместимости имен с разными интерфейсами других оболочек — другими словами это псевдонимы команд других оболочек (в т.ч. UNIX) таких как например ls, cat и пр..

Псевдонимы второго типа (стандартные псевдонимы) в PowerShell образуются из имен командлетов, которым они соответствуют. Например глагол Get сокращается до g, глагол Set сокращается до s, существительное Location сокращается до l и т.д.. Таким образом, командлету Set-Location соответствует псевдоним sl, а командлету Get-Location псевдоним gl

Установить свой псевдоним для командлета можно командой:

Более подробную справку о псевдонимах командлетов PowerShell можно получить выполнив команду:

Диски PowerShell

Кроме обычных локальных или сетевых дисков (C:, D: и пр.) оболочка PowerShell поддерживает специальные (виртуальные) диски PowerShell, связанные с хранилищами данных разных типов.

Например по умолчанию в PowerShell разделу реестра HKEY_LOCAL_MACHINE сопоставлен виртуальный диск HKLM:, псевдонимам сопоставлен диск Alias:, а хранилищу сертификатов цифровых подписей — диск cert:. Для получения списка дисков PowerShell используйте команду:

С помощью командлета New-PSDrive можно создавать собственные пользовательские диски, например:

Провайдеры PowerShell

Провайдеры в PowerShell — это .NET-приложение, предоставляющее пользователям PowerShell доступ к данным из определённого специализированного хранилища в согласованном формате, напоминающих структуру обычных дисков файловой системы.

В оболочку PowerShell по умолчанию включено несколько встроенных провайдеров, которые можно использовать для доступа к различным хранилищам данных.

Дополнительно к встроенным провайдерам PowerShell, можно создавать свои собственные и устанавливать провайдеры, созданные другими разработчиками (например для доступа к Active Directory или почте Microsoft Exchange).


Новые провайдеры добавляются в оболочку PowerShell путем установки специальных оснасток PowerShell, в которых также могут находится дополнительные командлеты. Дополнительную информацию можно получить командой:

Ключевые особенности Windows PowerShell 2

Remoting

Windows PowerShell 2.0 может запускать команду на одном или более удаленных компьютеров с одного рабочего места, на котором запущен Windows PowerShell. PowerShell remoting предоставляет несколько вариантов соединения: интерактивный (1:1), fan-out (1: многие) и fan-in (многие:1 с использованием модели хостинга IIS).

Integrated scripting Environment

PowerShell Integrated scripting Environment (ISE) предоставляет возможность запускать команды, редактировать и отлаживать скрипты в GUI. Основные функции ISE включают в себя: подсветку синтаксиса, выборочное исполнение, графическое представление отладки, поддержку Unicode и контекстную помощь.

Модули

Модули позволяют разработчикам скриптов и администраторам разделять и организовывать их код Windows PowerShell в собственные повторно используемые элементы. Код из модулей исполняется в собственном контексте и не влияет ни на что вне модуля.

Продвинутые функции

Продвинутые функции — это функции с теми же возможностями и поведением, что и командлеты (cmdlets). Отличие в том, что они написаны полностью на языке Windows PowerShell, а не скомпилированы на C#.

Фоновые задачи

Windows PowerShell 2.0 позволяет запускать команды и выражения асинхронно и «в фоне» без взаимодействия с консолью.

События

Эта функция добавляет в движок инфраструктуры Windows PowerShell поддержку прослушивания, перенаправления и управления системными событиями.

Глобализация скриптов

Эта новая функция позволяет скриптам на Windows PowerShell отображать сообщения на том языке, на котором говорит пользователь и который установлен в системе.

Отладка скриптов

Были добавлены новые функции отладки в Windows PowerShell, которые позволят вам устанавливать точки остановки на линиях, колонках, переменных и командах и позволяет указать действие которое требуется выполнить, когда достигнута точка остановки.

Новые командлеты

Windows PowerShell 2.0 содержит более 100 встроенных командлетов. Эти командлеты, кроме всего прочего, позволяют вам выполнять компьютерозависимые задачи, задачи по обработке логов событий и управлению счетчиками производительности.

WinRM 2.0

WinRM — это реализация Microsoft протокола WS-Management Protocol — стандарта SOAP, дружелюбного к брэндмауерам, который позволяет общаться аппаратному обеспечению и операционным системам различных типов. Спецификация WS-Management Protocol определяет общий путь для системы для доступа и обмена управляющей информацией между IT-инфраструктурой.

WinRM 2.0 содержит следующие новые функции:

  • WinRM Client Shell API предоставляет функционал для создания и управления оснастками (shells) и опрерациями оснасток, командами и потоками данных на удаленных компьютерах;
  • WinRM Plug-in API предоставляет функционал который позволяет пользователю писать плагины реализующие какой-либо API для поддержки ресурсов или операций;
  • WinRM 2.0 содержит фреймворк узла (hosting framework). Поддерживаются две модели хостинга. Первая основана на IIS-сервере, вторая основан на сервисе WinRM;
  • Обход ассоциаций позволяет пользователю получать экземпляры классов Ассоциаций с использованием стандартного механизма фильтрации;
  • WinRM 2.0 поддерживает делегирование полномочий пользователя сразу нескольким удаленным компьютерам;
  • Пользователи WinRM 2.0 могут использовать командлеты Windows PowerShell для управления системой;
  • В WinRM был добавлен специальный набор квот, который предлагает лучшее QoS и распределение ресурсов сервера для одновременно работающих пользователей. Набор квот WinRM основан на инфраструктуре квот реализованной в сервисе IIS.

Системные требования

WinRM 2.0 и PowerShell 2.0 может быть установлен на следующие операционные системы:

  • Windows Server 2008 with Service Pack 2
  • Windows Server 2003 with Service Pack 2
  • Widows Vista with Service Pack 2
  • Windows Vista with Service Pack 1
  • Windows XP with Service Pack 3

Windows PowerShell 2.0 требует установленный Microsoft .NET Framework 2.0 SP1

Выполнение сценариев Windows PowerShell

Как правило в большинстве случаев любой командный интерпретатор используется для обработки предварительно написанных сценариев. Windows PowerShell обрабатывает файлы сценариев с расширением .ps1 но, по умолчанию политика Windows PowerShell запрещает обрабатывать любые файлы сценариев.

Для разрешения обработки файлов сценариев Windows PowerShell следует выбрать политику их выполнения. Типы политик:

  1. Restricted — Допускает отдельные команды, но скрипты выполнять нельзя. Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).
  2. AllSigned — Выполнение скриптов разрешено. Требует, чтобы все скрипты и файлы конфигурации были подписаны надежным издателем, в том числе скрипты, подготовленные на локальном компьютере. – Перед выполнением скриптов издателей, для которых еще не определено, являются ли они надежными, выводятся предупреждения. Имеется риск выполнения неподписанных скриптов из источников, отличных от Интернета, а также подписанных, но вредоносных скриптов.
  3. RemoteSigned — Выполнение скриптов разрешено. Требует наличия цифровой подписи надежного издателя у скриптов и файлов конфигурации, загружаемых из Интернета (включая электронную почту и программы мгновенного обмена сообщениями). Не требует наличия цифровых подписей у скриптов, выполняемых и написанных на локальном компьютере (не загруженных из Интернета). Имеется риск выполнения подписанных, но вредоносных скриптов.
  4. Unrestricted — Могут выполняться неподписанные скрипты. (Имеется риск выполнения вредоносных скриптов.) Предупреждает пользователя перед выполнением скриптов и файлов конфигурации, загруженных из Интернета.
  5. Bypass — Ничего не блокируется, и никакие предупреждения и запросы не появляются. Эта политика выполнения предназначена для конфигураций, в которых скрипт Windows PowerShell встроен в более крупное приложение, или для конфигураций, в которых Windows PowerShell является платформой для программы, у которой имеется собственная модель обеспечения безопасности.
  6. Undefined — В текущей области не задана политика выполнения. Если политика выполнения во всех областях имеет значение Undefined, действует политика выполнения Restricted, которая является политикой выполнения по умолчанию.
Цукерберг рекомендует:  Вакансии Вебдом

Области политик Windows PowerShell

Process — Действие политики выполнения распространяется только на текущий сеанс (текущий процесс Windows PowerShell). Политика выполнения хранится в переменной среды $PSExecutionPolicyPreference. Это значение удаляется, когда сеанс, в котором задана политика, закрывается.

CurrentUser — Действие политики выполнения распространяется только на текущего пользователя. Она хранится в разделе реестра HKEY_CURRENT_USER.

LocalMachine — Действие политики выполнения распространяется на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE.

Узнать какая политика применяется в данный момент можно с помощью команды (по умолчанию Restricted):

Мы установим политику «RemoteSigned«:

Создание Сертификата и подпись скрипта Windows PowerShell

Для создания собственного сертификата подписи нужно использовать инструмент для создания сертификатов (MakeCert.exe). Этот инструмент входит в состав комплектов Microsoft .NET Framework SDK версии 1.1 и Microsoft Windows SDK.

Дополнительные сведения о синтаксисе и описание параметров инструмента MakeCert.exe см. в документе «Инструмент для создания сертификатов (MakeCert.exe)» (Certificate Creation Tool (MakeCert.exe)) в библиотеке MSDN по адресу http://go.microsoft.com/fwlink/?Link >

Чтобы использовать инструмент MakeCert.exe для создания сертификата, нужно выполнить следующие команды в окне командной строки «Microsoft SDK CMD Shell«

Средство MakeCert.exe предложит ввести пароль для закрытого ключа. Использование пароля обеспечит невозможность использования сертификата без ведома владельца. Необходимо выбрать пароль, который можно запомнить. Этот пароль потребуется позднее для получения сертификата.

Чтобы убедиться в правильности создания скрипта, нужно использовать следующую команду для получения сертификата в хранилище сертификатов на компьютере. (Файл сертификата нельзя найти в каталоге файловой системы).

В командной строке Windows PowerShell введите:

Эта команда использует поставщик сертификатов Windows PowerShell для просмотра информации о сертификате.


Подробнее о подписании скриптов Windows PowerShell можно узнать из справки выполнив команду:

Использование Windows PowerShell в тестовом режиме

В рунете о том как запускать Windows PowerShell в тестовом режиме инфы практически ноль, только одни рекомендации о тестировании скриптов в тестовом режиме и вовсе ничего о способах активации этого самого тестового режима.

Даже в буржуйнете на тему тестового режима довольно скудно представлена информация о использовании тестового режима.

Чтобы помочь определить, почему сценарий не удается, вы можете использовать режим тестирования. Тестовый режим позволяет проверить каждый сценарий в отдельности. Чтобы включить тестовый режим нужно выполнить такие действия:

Профили пользователей Windows PowerShell

Создав профиль Windows PowerShell, вы получаете возможность настраивать окружение и добавлять специфичные для сеанса элементы в каждый создаваемый сеанс.

Профиль Windows PowerShell — скрипт, который выполняется в момент запуска Windows PowerShell. Можно использовать профиль в качестве скрипта, выполняемого при входе в систему, для настройки окружения. Можно добавлять команды, псевдонимы, функции, значения, оснастки, модули и диски Windows PowerShell. Также можно добавлять в профиль другие специфичные для сеанса элементы, тогда они будут доступны в каждом сеансе и не будет необходимости их импортировать или создавать заново.

Windows PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако PowerShell не создает профили. В этом разделе описаны профили; также рассказано, как создавать и обслуживать профили на компьютере.

Файлы профилей Windows PowerShell

Windows PowerShell поддерживает несколько файлов профилей. Кроме того, ведущие приложения Windows PowerShell могут поддерживать собственные профили, специфичные для приложения.

Например, консоль Windows PowerShell поддерживает следующие файлы основного профиля. Ниже они указаны в порядке приоритета. Первый профиль имеет наивысший приоритет.

Более подробную информацию о профилях даст команда:

Полезные программы для работы с Windows PowerShell

PowerShell Scriptomatic — программа для написания скриптов Windows PowerShell с использованием WMI классов. Скачать >>>

PowerGUI — PowerGUI абсолютно бесплатен, равно как и библиотеки PowerGUI и форумы.

PowerGUI может помочь вам следующим образом:

  1. Позволяет вам выполнять сценарии PowerShell, не имея знаний в области языка сценариев
  2. Позволяет видеть сценарии, который PowerGUI создает, чтобы вы могли понять PowerShell, а также позволяет вам экспортировать эти сценарии (которые вы можете изменять и создавать из них собственные)
  3. Дает возможность добавлять библиотеки «PowerPack Libraries», чтобы можно было расширять функциональность до сотен других приложений и/или функций Windows
  4. Предлагает удобный редактор сценариев PowerShell, упрощающий работу со сценариями

Заключение

В заключении хочется отметить, что название PowerShell в полной мере отображает функционал программы. Немного длинноватые имена командлетов но, этот недостаток можно заменить псевдонимами. Также PowerShell содержит в себе хорошо организованную и локализированную справку, в которой иногда встречаются ошибки в синтаксисе приведённых примеров, как например отсутствие кавычки или открывающей/закрывающей скобки но, потому как этот инструмент направлен на как минимум опытных пользователей, то эти ошибки в примерах будут без труда замечены и исправлены пользователем.

PowerShell является поразительным, мощным и бесплатным инструментом. Он позволяет администраторам и аудиторам собирать информацию о своей Active Directory без особых усилий. Можно получать информацию об учетных записях пользователей, групп, домена и т.п. PowerShell была создана для обновления, анализа и изменения компьютеров Windows, поэтому она отлично подходит для данной работы.

Cmd — CMD или Powershall

Добрый день! Уважаемые читатели и подписчики IT блога Pyatilistnik.org. В прошлой статье мы разобрали методы перезагрузки Windows из PowerShell. Сегодня я хочу логически закончить эту статью и показать вам методы, позволяющие вам выключить компьютер без мышки используя оболочку PowerShell и старую, добрую командную строку. Я вам покажу, как вы можете создать себе ярлык или exe файл, выполняющий данную задачу.

Зачем использовать CMD и PowerShell для выключения компьютера

Логично, что большинство людей всегда для завершения работы за компьютером будут использовать графические окна и мышку, это правильно, так как это проще и быстрее, но бывает ряд случаев, что вы как продвинутый пользователь или тем более системный администратор, просто обязаны уметь выполнять все задачи без GUI интерфейса. Вот вам примерный список ситуаций:

  • Вам как системному администратору может выпасть честь работать с Windows Server Core, которая не имеет графического интерфейса и если вам вдруг нужно завершить работу такого сервера или виртуальной машины для обслуживания, вы обязаны это уметь.
  • Вторая ситуация может возникнуть, на компьютерах, где политиками или иными методами была выключена возможность завершать работу компьютера. Вот вам пример, что есть только пункт «Выход«.
  • Третья ситуация, это различные сценарии, подразумевающие использование скриптом, например массово выключить компьютеры по списку, полет фантазии тут огромный.
  • Так же не нужно забывать про удаленное выключение систем, PowerShell, как и был призван одним из основных инструментов по удаленному управлению Windows, но командная строка так же позволяет это выполнить.

Как выключить компьютер через командную строку

Для начала давайте я вам напомню, как производилось выключение компьютера из командной строки, если вы постоянный читатель моего блога, то помните, что мы уже создавали задание по выключению систему по таймеру, там мы так же использовали cmd. Что мы делаем, открываем окно командной строки, желательно в режиме администратора, чтобы все команды у вас точно отработали.

Есть такая замечательная команда Shutdown, она имеет два режима работы, первый это консольный, а второй графический, да не удивляйтесь. Давайте для начала посмотрим справку по данной утилите, для этого выполните команду:

Утилита имеет большое количество ключей для различных сценариев.

Самый простой сценарий, нужно завершить работы локального компьютера и для того, чтобы выключить компьютер через командную строку вы вводите:

У вас появится всплывающее окно, где будет указано, что ваш сеанс будет завешен. Для завершения работы Windows осталось менее 1 минуты. Тут вам дают возможность успеть сохранить важные данные в программах и документах.

Теперь давайте поиграемся с таймером, у вас может быть желание немедленного завершения работы или наоборот вы хотите задать время превышающее стандартную минуту, тут нам поможет ключ /t, в там случае команда будет выглядеть так:

При t = 0 у меня будет произведено моментальное выключение компьютера, если же я например задам 180, что равносильно трем минутам, то вы увидите вот такое окно:

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

Или вы вообще можете захотеть, выключить компьютер через 2 часа. это в секундах 7200. Так же есть отдельный ключ, который сразу завершает работу вашей системы, без ввода времени, этот ключ /p. В итоге можно выключить компьютер командой

Если вы хотите задать комментарий при выключении компьютера из командной строки и задать причину, то есть ключи /c и /d. Ключ /c задает комментарий, который не может быть длиннее, чем 512 символов. Ключ /d указывает причину, тут может быть совместный ключ «p«, означающий запланированное завершение или же ключ «u«, означающий что причину указывает пользователь.

В логах Windows вы можете обнаружить событие 1074 с нашим комментарием. Согласитесь, что это отличный инструмент выключить компьютер без помощи мышки.

Удаленное выключение компьютера из командной строки

CMD может легко взаимодействовать и с удаленными системами, давайте я покажу, как вы можете завершить работу Windows у двух удаленных компьютеров, у меня это будет система с Windows 10 под именем W10-cl02. Для этого мы используем ключ «m«.

Тут я принудительно завершаю работу удаленного компьютера W10-cl02. Так же вы можете произвести удаленное выключение компьютера и из графического интерфейса, для этого есть ключ -i. Вводим команду:

В результате у вас откроется форма «Диалог удаленного завершения работы», я его уже вам показывал при массовом выключении компьютеров.

Нажимаем кнопку «Добавить» и вводим нужные вам сервера и рабочие станции которые вы планируете выключить.

В выборе действий, указываем «Завершение работы», ставим галку «Предупредить пользователей об этом действии» если нужно сделать отложенное выключение, можете хоть выставить 2 часа. Указываете причину и комментарий при необходимости.

Выскочит предупредительное окно, произойдет выключение компьютера через определенное время, заданное вами ранее.


Как видите утилита командной строки shutdown.exe даже в нынешнее время Windows 10, является отличным инструментом, умеющим выключать компьютер с Windows по нужному сценарию. дополнительную информацию про утилиту shutdown вы можете посмотреть по ссылке:

Как как выключить компьютер через PowerShell

Теперь давайте обратимся к более современному инструменту, а именно к оболочке PowerShell. Открываем ее в режиме администратора, нас будет интересовать командлет Stop-Computer. Если вы его просто введете в оболочке на локальном компьютере, то у вас начнется завершение работы.

Теперь давайте посмотрим справку по данному командлету, для этого введите

Как видим командлет имеет много дополнительных ключей.

Удаленное выключение компьютера из PowerShell

Командлет Stop-Computer имеет ключ -ComputerName через который можно указать список систем, требующих завершения работы. У меня есть два удаленных компьютера с Windows 10, w10-cl02 и w10-cl03. Давайте их выключим, вводим команду:

Если на текущий момент на удаленных компьютерах. кто-то работает, то вы получите ошибку:

+ CategoryInfo : InvalidOperation: (w10-cl02:String) [Stop-Computer], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StopComputerCommand

Stop-Computer : Не удается выполнить команду на конечном компьютере («w10-cl03») из-за следующей ошибки: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Stop-Computer -ComputerName w10-cl02, w10-cl03
+

+ CategoryInfo : InvalidOperation: (w10-cl03:String) [Stop-Computer], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StopComputerCommand

Чтобы это обойти вы можете добавить ключик -Force, который сделает принудительное выключение

Если вам необходимо выполнить выключение от имени определенной учетной записи, то вы можете воспользоваться ключом -Credential:

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

Также командлет Stop-Computer имеет ключ -WsmanAuthentication, который позволяет производить подключения по разным протоколам аутентификации. Возможные варианты:

Напоминаю, что по умолчанию используется CredSSP .но я в моем примере буду использовать Kerberos, так как привык работать со службой удаленного управления Windows (WinRM).

[info]Stop-Computer -ComputerName w10-cl02, w10-cl03 -Force -WsmanAuthentication Kerberos[/info]

Как выключить компьютер со списком компьютеров в текстовом файле

Может возникнуть ситуация, что вы или ваши коллеги могут подготовить тестовый файл со списком компьютеров, которые потребуется выключить. Stop-Computer легко справится с этой задачей. Кладу на диск C:\ файл computers.txt, после чего выполняю команды.

Выключение компьютера с задержкой по времени через PowerShell

И так, как выключить компьютер через определенное время, так как у вас легко может возникнуть такой сценарий. Для решения вопроса со временем есть командлет Start-Sleep.

В результате выполнения команды, у меня завершится работа на двух удаленных компьютерах. Или можно вот так со списком компьютеров в текстовом файле.

Дополнительную информацию, по командлету Stop-Computer я вам советую поискать на сайте Microsoft

Как выключить компьютер через WMI запрос

Так же используя командную строку или оболочку PowerShell вы можете выполнить команду с использованием WMI, чтобы завершить работу компьютера. Для этого введите команду:

[info](Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(1)[/info]

В результате у вас будет произведено корректное завершение работы в вашей системе Windows, так же можно сделать форсированное выключение, для этого выполните:

Создание ярлыка выключения компьютера

Если вы хотите вынести себе функцию выключения вашего компьютера в виде отдельного файла-ярлыка, вы можете это легко реализовать. Щелкаете правой кнопкой мыши по рабочему столу и выбираем пункт «Создать — Ярлык»

Задаем параметры для нашего ярлыка, тут вы вводите нужную вам команду, в моем случае, это команда, которая немедленно выключает компьютер.

Указываем нужное вам название ярлыка.

Вот такой у меня получился ярлык для завершения системы Windows.

В чем разница между CMD и PowerShell при удалении файла в Windows?

Когда я запускаю программу командной строки (которая внутренне удаляет файл журнала) из командной строки CMD, она работает как положено.

Но та же команда при запуске в приглашении PowerShell не удаляет файл журнала. Команда выполнена успешно, за исключением удаления файла журнала. В командной строке PowerShell не возникает ошибка или исключение.

Чем PowerShell отличается от приглашения CMD в среде Windows в отношении обработки файлов, в этом случае это удаление файла?

Примечание. Как приглашение CMD, так и PowerShell запускаются от имени администратора.

Исходный код программы выглядит так:

remove() это функция, которая удаляет файл

Обновить: Я пытался изменить remove() в DeleteFile() Поведение остается прежним.

Обновление 2: Я нашел основную причину. PowerShell возвращает абсолютный путь, тогда как приглашение CMD возвращает относительный путь. Это не часть приведенного выше фрагмента кода.

Теперь мне нужно найти относительный путь или нет. Существует функция Windows, PathIsRelative (), но она принимает LPCWSTR в качестве входных данных и снова требуется некоторое преобразование.

Решение

Мои психические способности говорят мне, что имя файла содержит символы, не входящие в ASCII, и ошибка в случае сбоя — «файл не найден».

В коде вы копируете широкие символы в обычный char s. Для чего-либо за пределами ASCII, это не будет делать то, что вы хотите.

В вашем примере кода не показано, как вы получаете исходную строку или strPath.

Возможно, что когда вы вводите строку поиска в случае CMD, у нее есть не-ASCII-символы, которые представляются в текущей кодовой странице, и эти значения копируются в широкие символы, а затем обратно без вреда, и удаление работает.

Когда вы вводите его в PowerShell, вы, вероятно, получаете текст в кодировке UTF-16. Когда вы копируете эти значения обратно в обычный char s, вы не получаете ту же строку, поэтому удаление, вероятно, завершается ошибкой с «файл не найден».

Работайте с широкими строками последовательно, без каких-либо преобразований. Если вам нужно конвертировать между широкими и узкими строками, вы должны знать кодировку и фактически перекодировать данные, а не просто скопировать их.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих