Powershell создать приглашение соответствующее командной строке windows cmd exe

Работа по теме: Глава1_PowerShell. Глава: 1.4.3 Работа с конфигурацией оболочки. ВУЗ: РЭУ.

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

Проще всего эти установки выполняются
с помощью диалогового окна оболочки.
Для его вызова нужно установить курсор
мыши на заголовке окна, кликнуть правой
кнопкой и выбрать пункт Свойства в
появившемся контекстном меню. Должно
появиться диалоговое окно (рис.
4)

О
кно
имеет несколько вкладок (Общие, Шрифт,
Расположение, Цвета), каждая из которых
позволяет настраивать определенную
группу параметров. Здесь можно
буферирование и запоминание интерактивно
выполняемых команд с целью их последующего
использования отдельным блоком в
сценарии.

После выбора и установки всех нужных
параметров следует нажать кнопку ОК.
Система тут же требует указаний, к какому
объекту применить эти изменения (рис.
5). Если изменения свойств должны
действовать постоянно, то следует
выбрать переключатель Сохранить
свойства для других окон

Рис. 4 Диалоговое окно для установки
параметров оболочки.

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

Рис. 5 Выбор объекта установки параметров
оболочки.

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

По умолчанию командлет Get-Host
без параметров отображает информацию
о самой оболочке (региональные настройки,
версия и т.п.):

Рис. 6 Обобщенные данные оболочки
PowerShell и место размещения
ее параметров

В команде (Get-Host).UI
имя командлета взято в круглые скобки.
Это обозначает, что требуется выполнить
данный командлет и сформировать выходной
объект. Только после этого извлекается
свойство объекта UI. Пройдя
эту цепочку, получаем доступ к параметрам
командного окна:

Рис. 7 Параметры командного окна оболочки
PowerShell

Значение каждого из перечисленных
параметров можно изменить, настраивая
внешний вид окна по желанию. При изменениях
параметров целесообразно объект RawUI
сохранить в качестве значения отдельной
переменной [1]. Покажем, например, как
изменить цвет фона и текста. Свойство
BackgroundColor отвечает за цвет
фона, а ForegroundColor – за цвет
текста. В качестве цветов можно
использовать следующие 16: Black,
Gray, Red,
Magenta, Yellow,
Blue, Green,
Cyan, White,
DarkGreen, DarkCyan,
DarkRed, DarkMagenta,
DarkYellow, DarkGray,
DarkBlue. Установим желтый
цвет текста на темно-синем фоне. Такое
сочетание цветов часто используется в
различных системах программирования.
Желаемый эффект обеспечивается
выполнением следующих трех команд.

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

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

$b=$a.WindowSize.
Переопределим значения ширины и высоты
командами $b.Width=80
и $b.Height=25,
а затем изменим содержимое объекта
WindowSize переменной $a,
то есть выполним команду $a.WindowSize=$b.

Последняя строка рис. 7 отражает заголовок
командного окна PowerShell.
Оно достаточно длинное и непривлекательное.
Выполнив команду $a.WindowTitle=”
Мое командное окно”, получаем более
приемлемое название.

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

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

В данной команде используется конструкция
“$(Get-Location)…,
называемая подвыражением (subexpression).
Подвыражение – это блок кода на языке
PowerShell, который в строке
заменяется значением, полученным в
результате выполнения этого кода.

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

Для сохранения настроек с целью их
регулярного, а может быть и повседневного,
использования необходимо создать файл
с соответствующим набором команд-настроек.
Этот файл текстового типа получил
название профиль. Профиль – это
сценарий, который будет загружаться и
активизировать необходимые настройки
при каждом запуске оболочки PowerShell.
Значение профиля очень близко значениям
файлов autoexec.bat
для ранних и autoexec.nt
для современных версий ОС Windows.
Все они предназначаются для автоматического
выполнения требуемых подготовительных
работ. Корректно составленный профиль
призван обеспечить не только комфортные
условия работы пользователя, но и создать
удобства для администрирования.
Разработка и распространение профилей
позволяет использовать единые условия
работы пользователей на группе компьютеров
в распределенной среде, например, в
локальных компьютерных сетях.

В зависимости от уровня выполняемых
настроек и значимости администрируемых
ресурсов можно формировать профили
четырех видов:

— профили, действующие на всех пользователей
сети и на все их оболочки PowerShell
(хосты);

— профили, действующие на всех пользователей
сети с использованием единой оболочки
PowerShell;

— профили, действующие только на текущего
пользователя и на все оболочки;

— профили, действие которых распространяется
только на текущего пользователя и только
на хост powershell.exe.

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

Каждый тип профиля имеет свое место
хранения в особой зоне ОС Windows.
При работе с оболочкой на автономном
компьютере используется только
пользовательский профиль, относящийся
к последнему типу. Место его расположения
и имя файла можно определить по значению
специальной переменной $profile:

С помощью командлета Test-Path
можно установить факт наличия созданного
профиля:

Если профиль создан, то реакция будет
True, в противном случае –
False.

По умолчанию, даже если профиль создан,
выполнение блока его команд запрещено.
Параметр политики выполнения
устанавливается Restricted.
Это сделано для обеспечения безопасности
системы.

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

Переустановка значения параметра
обеспечивается командлетом
Set-ExecutionPolicy
и далее через пробел пишется название
политики выполнения, например,
RemoteSigned. Запоминать имена
возможных политик нет необходимости.
Установив курсор после имени командлета,
и нажимая клавишу Tab, можно
перебрать все варианты политик выполнения,
оставив необходимую.

Задание 4.

  1. Вызвать диалоговое окно оболочки для
    проверки и установки параметров
    командного окна. Внимательно изучить
    рубрики вкладок Общие, Шрифт, Расположение,
    Цвета. Просмотреть, как изменение
    различных параметров отражается на
    внешнем виде командного окна.

  2. Изучить последовательность команд для
    программного изменения свойств консоли.
    По образцу и подобию установить новые
    размеры командного окна, применить
    другие сочетания цветов.

  3. Изменить название командного окна.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  1. Using the PowerShell Invocation Operator &
  2. Running CMD Commands Using cmd.exe
  3. Piping to CMD Using PowerShell

Run CMD Commands in PowerShell

Many legacy Command Prompt (CMD) commands work in the Windows PowerShell scripting environment. The PowerShell environment carries these commands forward from the most used commands like ping to the most informational commands like tracert from the legacy environment using aliases.

However, some running commands in the Command Prompt terminal will not work in Windows PowerShell’s scripting environment. This article will discuss how we can transcribe them correctly to Windows PowerShell.

Using the PowerShell Invocation Operator &

The legacy CMD will successfully work when we run command-line programs with an executable file format (.exe) located on a specific path, followed by the actual command.

If we take the example syntax below, we can perform a quick scan using the Avast Command-Line scanner if we run the script inside CMD, and it will successfully work.

Example Code:

"C:Program FilesAVAST SoftwareAvastashCmd.exe" /Quick

However, if we take the same syntax and run it in Windows PowerShell, we will get an Exception error. The reason behind the error is that Windows PowerShell sees the double quotation marks "" as a literal string value, and the /Quick parameter accompanied in the syntax is not available in any of the native libraries.

In addition, running only the quoted path in Windows PowerShell will only output the string value rather than running the executable file itself.

Example Code:

"C:Program FilesAVAST SoftwareAvastashCmd.exe"

Output:

C:Program FilesAVAST SoftwareAvastashCmd.exe

To remedy this problem, we can call the Invocation operator or the ampersand sign & at the start of the command line to run the executable path in Windows PowerShell properly.

& "C:Program FilesAVAST SoftwareAvastashCmd.exe" /Quick

Using the invocation operator in the PowerShell environment will treat the string path as an actual path to the executable file. Therefore, it will run the script directly with the accompanying command parameter.

Running CMD Commands Using cmd.exe

Another example of running CMD commands is by using the cmd.exe. We can add cmd.exe inside Windows PowerShell like our previous method.

Once added and executed, it will call the command line interface inside the Windows PowerShell command prompt.

The parameter /c will carry out whichever command was entered and terminate the cmd.exe command-line interpreter.

You may run the syntax below to bring up the cmd.exe command’s help documentation for more information on other parameters. In addition, you may run the command below on both PowerShell and CMD command-line interfaces.

Piping to CMD Using PowerShell

In Windows PowerShell, we can also send over commands to the command prompt terminal by piping in the cmd cmdlet to the command you wanted to send over.

In the example syntax below, the request to query the IP configurations of your local computer is sent to the CMD command-line interface. After running the code, the CMD terminal is terminated, and the user is brought back to the PowerShell terminal denoted by PS at the start of the line.

Example Code:

I am having a bunch of issues with getting a PowerShell command to run. All it is doing is running a command that would be run in a CMD prompt window.

Here is the command:

"C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe" PCNAME

I have tried the following with no success (I have tried many iterations of this to try and get one that works. Syntax is probably all screwed up):

$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe"' $TEXT)

The command will just open SCCM remote connection window to the computer the user specifies in the text box.

Peter Mortensen's user avatar

asked Jul 24, 2014 at 17:29

user3585839's user avatar

1

Try this:

& "C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe" PCNAME

To PowerShell a string «…» is just a string and PowerShell evaluates it by echoing it to the screen. To get PowerShell to execute the command whose name is in a string, you use the call operator &.

answered Jul 24, 2014 at 18:19

Keith Hill's user avatar

Keith HillKeith Hill

190k40 gold badges344 silver badges365 bronze badges

6

To run or convert batch files externally from PowerShell (particularly if you wish to sign all your scheduled task scripts with a certificate) I simply create a PowerShell script, e.g. deletefolders.ps1.

Input the following into the script:

cmd.exe /c "rd /s /q C:#TEMPtest1"

cmd.exe /c "rd /s /q C:#TEMPtest2"

cmd.exe /c "rd /s /q C:#TEMPtest3"

*Each command needs to be put on a new line calling cmd.exe again.

This script can now be signed and run from PowerShell outputting the commands to command prompt / cmd directly.

It is a much safer way than running batch files!

Peter Mortensen's user avatar

answered May 19, 2015 at 10:01

Armand G.'s user avatar

Armand G.Armand G.

1,73714 silver badges8 bronze badges

3

One solution would be to pipe your command from PowerShell to CMD. Running the following command will pipe the notepad.exe command over to CMD, which will then open the Notepad application.

PS C:> "notepad.exe" | cmd

Once the command has run in CMD, you will be returned to a PowerShell prompt, and can continue running your PowerShell script.


Edits

CMD’s Startup Message is Shown

As mklement0 points out, this method shows CMD’s startup message. If you were to copy the output using the method above into another terminal, the startup message will be copied along with it.

InteXX's user avatar

InteXX

5,8956 gold badges40 silver badges73 bronze badges

answered Aug 9, 2018 at 9:42

reelyard's user avatar

reelyardreelyard

9211 gold badge8 silver badges28 bronze badges

1

For those who may need this info:

I figured out that you can pretty much run a command that’s in your PATH from a PS script, and it should work.

Sometimes you may have to pre-launch this command with cmd.exe /c

Examples

Calling git from a PS script

I had to repackage a git client wrapped in Chocolatey (for those who may not know, it’s a package manager for Windows) which massively uses PS scripts.

I found out that, once git is in the PATH, commands like

$ca_bundle = git config --get http.sslCAInfo

will store the location of git crt file in $ca_bundle variable.

Looking for an App

Another example that is a combination of the present SO post and this SO post is the use of where command

$java_exe = cmd.exe /c where java

will store the location of java.exe file in $java_exe variable.

Wessel van Lit's user avatar

answered Jul 6, 2018 at 12:12

avi.elkharrat's user avatar

avi.elkharratavi.elkharrat

5,5126 gold badges41 silver badges45 bronze badges

2

You must use the Invoke-Command cmdlet to launch this external program. Normally it works without an effort.

If you need more than one command you should use the Invoke-Expression cmdlet with the -scriptblock option.

Peter Mortensen's user avatar

answered Jul 24, 2014 at 18:22

Tim Christin's user avatar

5

PowerShell позволяет выполнять команды DOS, знакомые вам по командной строке “cmd.exe“. Это реализовано с помощью псевдонимов (alias).

С помощью команды cd можете перейти в другую директорию, а с помощью dir посмотреть содержимое этой директории:

PS C:WindowsSystem32> cd C:Windows
PS C:Windows> dir

    Каталог: C:Windows

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        13.10.2020     11:21                addins
d-----        14.10.2020      8:01                appcompat
d-----        11.06.2021     17:52                apppatch
d-----        01.07.2021      9:26                AppReadiness
d-r---        15.04.2021     21:05                assembly
d-----        11.06.2021     17:52                bcastdvr
d-----        13.10.2020     11:16                Boot
***сократил вывод***

Чтобы вывести что-нибудь в терминал используем echo:

PS C:Windows> echo test
test

Для того чтобы создать новый каталог существует команда md:

PS C:> md test

    Каталог: C:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        01.07.2021     16:12                test

А создать файл можно с помощью echo добавив перенаправление вывода в файл:

PS C:> echo 12345 > .testtest.txt

Перенести файл в другой каталог можно с помощью команды move, а скопировать с помощью команды copy:

PS C:> md test2

    Каталог: C:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        01.07.2021     16:16                test2

PS C:> move .testtest.txt .test2
PS C:> dir test2

    Каталог: C:test2


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        01.07.2021     16:15             16 test.txt

PS C:> copy .test2test.txt .test

Все эти команды вам могут быть знакомы по командной строке “cmd.exe“. Но в PowerShell на самом деле вы выполняете псевдонимы команд, которые выполняют те же действия что и команды DOS. Посмотреть на список этих псевдонимов можно командой Get-Alias:

PS C:Windows> Get-Alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           CFS -> ConvertFrom-String                          3.1.0.0    Microsoft.PowerShell.Utility
Alias           chdir -> Set-Location
Alias           clc -> Clear-Content
Alias           clear -> Clear-Host
Alias           clhy -> Clear-History
Alias           cli -> Clear-Item
Alias           clp -> Clear-ItemProperty
Alias           cls -> Clear-Host
Alias           clv -> Clear-Variable
Alias           cnsn -> Connect-PSSession
***Сократил вывод***

Например мы бы могли выполнить реальную команду PowerShell для смены директории:

PS C:Windows> Set-Location C:
PS C:>

Таким образом мы вспомнили некоторые команды командной строки “cmd.exe“:

  • cd – используется для смены текущей директории, другими словами чтобы перемещаться по дереву каталогов;
  • dir – нужна для отображения содержимого текущий или указанной директории;
  • md – предназначена для создания нового каталога;
  • echo – выводит переданный ей текст на терминал, но можно вывод перенаправить в файл;
  • move – используется для перемещения файлов и каталогов;
  • copy – нужна для копирования файлов и каталогов.

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

  • Get-Alias

Сводка

PowerShell использование команд DOS

Имя статьи

PowerShell использование команд DOS

Описание

PowerShell позволяет выполнять команды DOS, знакомые вам по командной строке «cmd.exe». Это реализовано с помощью псевдонимов (alias)

I have a batch file which runs a command (that is in another batch file) in administrative mode via:

//instructions above

powershell.exe -Command "Start-Process file.bat -Verb RunAs" 

//instructions below

file.bat simply contains:

iisreset
exit

I want to be able to run this directly in a single batch file. Can this be done? I was hoping for somthing like:

 powershell.exe -Command "Start-Process 'iisReset && exit' -Verb RunAs" 

But this does not work.

Ben N's user avatar

Ben N

39.4k17 gold badges137 silver badges174 bronze badges

asked Jul 29, 2016 at 11:41

benscabbia's user avatar

The Start-Process cmdlet assumes that the first parameter (-FilePath, specifically) is only the filename of the program to run. That’s why you were getting «cannot find the file specified» errors. The -ArgumentList option is designed to pass parameters. Therefore, this should do what you want:

powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c calc && exit'"

Note that you might not even need the && exit part in some circumstances.

answered Jul 29, 2016 at 20:12

Ben N's user avatar

Ben NBen N

39.4k17 gold badges137 silver badges174 bronze badges

5

Введение в Windows PowerShellВ предыдущих статьях мы говорили о командлетах, функциях и сценариях в Windows PowerShell. Сегодня поговорим о последнем типе команд — внешних исполняемых файлах. Речь идет о командных файлах классической командной строки Windows (cmd.exe) и сценариях на языке VBScript.

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

Windows PowerShell позволяет запускать файлы .bat и .cmd. Для запуска необходимо указать путь к файлу. Например

C:primer.bat

При этом PowerShell создаст процесс cmd.exe, который и выполнит этот запрос. Тоже самое относится и к файлам .vbs. Windows PowerShell позволяет не только запускать подобные файлы, но и внедрять код VBScript в сценарии PowerShell. Если смотреть шире, то, на самом деле, внедрять можно код любого языка, поддерживающего ActiveX Scripting. При этом правда стоит учитывать, что эти языки весьма сильно отличаются по синтаксису от языка PowerShell.

Если же Вы хотите запустить в Windows PowerShell команду классической командной строки, то для этого достаточно использовать cmd /c.

Например, команда

cmd /c dir /b

выдаст Вам список файлов текущего каталога в виде одних только имен, без дополнительных атрибутов. Это команда cmd.exe, которую мы запустили в консоли PowerShell.

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

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

В этой статье я попробую собрать варианты выполнения команд CMD из консоли Powershell
Выполнение команд CMD с помощью символа вызова

Powershell распознает строку в кавычках просто как строку.
Что бы указать на то, что строка должна быть выполнена, требуется использовать специальный символ вызова, такой как  «&»

Для простых команд вполне подходят такие формы записи, в том числе и с аргументами

& "ping" ya.ru или & {ping ya.ru}

Выполняя утилиты CMD в консоли ISE вы можете наблюдать проблемы с кодировкой. Решение можно найти тут

Форма вызова команды с аргументами выглядит так

& "[path] command" [arguments]

Аргументов после закрытых кавычек может быть больше одного

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

Можно передать команду по конвейеру
"calc" | cmd
Start-Process

Мне нужно было выполнять в ходе повершельного скрипта вот такую команду с множеством параметров:

"C:Program Filesgsgs9.26bingswin64c.exe" -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dCompatibilityLevel=1.4 -dQUIET -dBATCH -sOutputFile=C:tempoutput0.pdf C:input.pdf

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

Start-Process -FilePath "C:Program Filesgsgs9.26bingswin64c.exe"`
-ArgumentList "-sDEVICE=pdfwrite", "-dPDFSETTINGS=/ebook",`
"-dNOPAUSE", "-dCompatibilityLevel=1.4", "-dQUIET",`
"-dBATCH", -sOutputFile=C:tempoutput0.pdf C:input.pdf

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

Если вы хотите используя Start-Process получить вывод, как и при использовании оператора &, в текущий сеанс консоли, то используйте параметр -NoNewWindow

UPD!

Начиная с Powershell версии 3 появился механизм под названием Stop-Parsing. Предназначен он для того, что бы все символы в строке считывались как простой текст, без какой либо интерпретации. Соответственно, нужда в экранировании кавычками всех параметров и их значений отпадает.
Принцип: вся строка идущая после символа —% считывается как обычный текст
На примере вышеприведенной команды, посмотрим как упростилась ее запись:

& "C:Program Filesgsgs9.26bingswin64c.exe" --% -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dCompatibilityLevel=1.4 -dQUIET -dBATCH -sOutputFile=C:tempoutput0.pdf C:input.pdf
Отладка

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

-RedirectStandardOutput c:tempoutput.txt

Также почитать про перенаправление вывода можно тут

Записки администратора

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

Вот команда:

"C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe" PCNAME

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

$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe"' $TEXT)

Команда просто откроет окно удаленного подключения SCCM к компьютеру, указанному пользователем в текстовом поле.

5 ответов

Лучший ответ

Попробуй это:

& "C:Program Files (x86)Microsoft Configuration ManagerAdminConsolebini386CmRcViewer.exe" PCNAME

Для PowerShell строка «…» — это просто строка, и PowerShell оценивает ее, отображая ее на экране. Чтобы заставить PowerShell выполнить команду, имя которой указано в строке, вы используете оператор вызова &.


127

Keith Hill
24 Июл 2014 в 22:19

Для запуска или преобразования командных файлов извне из PowerShell (особенно если вы хотите подписать все свои сценарии запланированных задач сертификатом) я просто создаю сценарий PowerShell, например deletefolders.ps1.

Введите в скрипт следующее:

cmd.exe /c "rd /s /q C:#TEMPtest1"

cmd.exe /c "rd /s /q C:#TEMPtest2"

cmd.exe /c "rd /s /q C:#TEMPtest3"

* Каждую команду нужно помещать в новую строку, снова вызывая cmd.exe.

Теперь этот сценарий можно подписать и запустить из PowerShell, выводя команды напрямую в командную строку / cmd.

Это намного безопаснее, чем запуск командных файлов!


78

Peter Mortensen
11 Сен 2018 в 01:29

Для тех, кому может понадобиться эта информация:

Я понял, что вы можете в значительной степени запустить команду, которая находится в вашем PATH, из сценария PS, и она должна работать.

Иногда вам может потребоваться предварительно запустить эту команду с помощью cmd.exe /c

Примеры

Вызов git из сценария PS

Мне пришлось перепаковать клиент git, завернутый в Chocolatey (для тех, кто может не знать, это пакет менеджер для Windows), который массово использует скрипты PS.

Я обнаружил, что как только git находится в PATH, такие команды, как

$ca_bundle = git config --get http.sslCAInfo

Сохранит местоположение файла git crt в переменной $ca_bundle.

Ищу приложение

Другой пример, который представляет собой комбинацию настоящего сообщения SO и этого сообщения SO, — это использование команды where

$java_exe = cmd.exe /c where java

Сохранит местоположение файла java.exe в переменной $java_exe.


2

Wessel van Lit
12 Авг 2021 в 00:01

Одним из решений было бы перенаправить вашу команду из PowerShell в CMD. Выполнение следующей команды направит команду notepad.exe в CMD, который затем откроет приложение «Блокнот».

PS C:> "notepad.exe" | cmd

После выполнения команды в CMD вы вернетесь в командную строку PowerShell и сможете продолжить выполнение сценария PowerShell.


Правки

Отображается стартовое сообщение CMD

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


16

InteXX
11 Июн 2020 в 05:12

Для запуска этой внешней программы необходимо использовать командлет Invoke-Command. Обычно работает без усилий.

Если вам нужно более одной команды, вы должны использовать командлет Invoke-Expression с опцией -scriptblock.


-2

Peter Mortensen
11 Сен 2018 в 01:27

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Powershell скачать для windows xp sp3
  • Powershell скачать для windows 11 pro 64
  • Powershell скачать для windows 10 торрент
  • Powershell скачать для windows 10 пуск
  • Powershell скачать для windows 10 последняя версия

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии