Могу ли я установить PowerShell как «по умолчанию» в Windows 7?

9

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

Какие-либо предложения?

Ipsquiggle
источник
5
Я не думаю, что powershell может интерпретировать командные файлы, поэтому вам не следует открывать их.
nhinkle

Ответы:

9

Я только что провел очень быстрый тест, и следующая запись реестра добавит пункт «PowerShell here» в контекстное меню всех папок в проводнике:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\PowerShellHere]
@="&PowerShell here"

[HKEY_CLASSES_ROOT\Directory\shell\PowerShellHere\command]
@="cmd.exe /c start \"PS\" powershell.exe -NoExit -Command \"cd \\\"%1\\\"\""

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

Относительно cmd скриптов / пакетных файлов. Я думаю, что по умолчанию не имеет смысла запускать CMD-скрипты в PowerShell. Но это также возможно, изменив HKCR\cmdfile\shell\openраздел реестра.

SkyBeam
источник
Спасибо! Я попробую сегодня вечером. Единственная причина, по которой я хочу, чтобы скрипты открывались в powershell, заключается в согласованности и сотрудничестве с моими инструментами управления окнами. Вы правы в том, что нет никакой внутренней практической причины. ;)
Ipsquiggle
0

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

Вы можете попробовать изменить %COMSPEC%переменную так, чтобы она указывала на powershell.exeиспользование setx, но я не думаю, что вам понадобится много времени, чтобы осознать, что это действительно плохая идея, и снова изменить ее.

сохраните файл как * .ps1 вместо * .bat, и он будет использовать powershell

Paradroid
источник
1
Почему это плохая идея? Просто любопытно.
afrazier
@afrazier: я не экспериментировал с переходом %COMSPEC%на не-CMD-совместимую оболочку, но я предполагаю, что изменение его на PowerShell приведет к попытке .cmd/ .batfiles выполнить в PowerShell, поэтому они потерпят неудачу. Я установил много программного обеспечения, в котором нужно было использовать командные файлы, поэтому это было бы плохой идеей. Кроме того, я немного предвзят, поскольку я все время использую CMD (на самом деле, TCC, который является расширенным расширенным набором) для повседневного управления файлами - я использую PowerShell только для системных задач, хотя мне еще многое предстоит узнать, так как это так сильно по сравнению.
paradroid
1
Просто для смеха, я изменил, %ComSpec%чтобы указать на PowerShell в моей системе Win7. Первые пару .cmdфайлов, которые я тестировал, работают нормально. Они включают в себя cmd-специфичные конструкции ( for, манипуляции с переменными, if), поэтому PS, по-видимому, достаточно умен, чтобы знать, когда ему нужно вызывать cmd.exe.
afrazier
Например, переход %ComSpec%на powershell нарушает команды управления версиями mercurial.
Надежда