Возможно ли, как вы остановите powershell с помощью некоторых командлетов?
Powershell явно намного лучше, чем cmd, но он скрывает основные функции. Я обычно использую его, чтобы понять, как использовать команды, которые я хочу в сценариях, но это ломает большое количество основных вещей, и я в конечном итоге использую обе бок о бок, если попаду в липкое место.
Сегодня это было удаление каталога - rd или rmdir - оба из которых были повреждены в powershell в пользу одного из недокументированных команд из командной строки Remove-Item. Кажется, я все время сталкиваюсь с этим - sc (за то, что он обманывает сервисы); где для поиска какой программы вызывается при вводе команды и т.д. и т.д.
В самом деле, у меня действительно была проблема с sc, а затем googled, чтобы узнать команду, где только обнаружить, что это тоже не работало в powershell! Это был запутанный день
В некоторых случаях, когда вы знаете, что это происходит, вы можете ввести полное имя exe (например, "where.exe" будет работать, тогда как "where" по своему усмотрению).
Однако это не относится к rmdir. Хотя интересно ввести "где rmdir" в cmd не работает.
Итак... мой вопрос в том, есть ли способ отключить (желательно все) командлеты в powershell и просто получить нормальный материал вместо этого?
Ответы
Ответ 1
Нет необходимости отключать командлеты в powershell, так как это уничтожит самую причину его наличия.
Большинство "нормальных" вещей есть в любом случае, которые вы можете найти с помощью команды get-alias
.
C:\> get-alias
CommandType Name
----------- ----
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ?? -> Invoke-NullCoalescing
Alias ac -> Add-Content
Alias asnp -> Add-PSSnapin
Alias cat -> Get-Content
Alias cd -> Set-Location
Alias chdir -> Set-Location
.....
..... AND A WHOLE LOT MORE!
Если вам не хватает команды, которую вы действительно хотите иметь, то вы можете легко добавить новый псевдоним:
Set-Alias python2 "C:\Python27\python.exe"
Чтобы избежать необходимости делать это каждый раз, вы можете просто добавить это в свой профиль запуска. Просто введите $PROFILE
в командной строке, и он покажет вам путь к файлу. Если он не существует, просто создайте его, и любые команды powershell, которые вы добавите в начало, будут автоматически активированы при запуске нового сеанса.
И последнее. Все команды задокументированы, и вы можете легко получить их, используя только два.
Просто введите это в свою командную строку, и вы будете на пути к просветлению Powershell!
get-help get-command
get-command -noun Item
get-command -verb get
Ответ 2
Я только понял, что ответ на мой вопрос был похоронен в комментариях к другому ответу:
Чтобы удалить командлет в powershell, вы запустите
Удалить псевдоним элемента: что-то.
Я могу подтвердить, что вы можете сделать это, используя профиль, упомянутый в сообщении Джоша, однако есть еще несколько шагов:
По умолчанию вы не можете запускать скрипты в powershell. Вы должны изменить это, используя set-ExecutionPolicy.
Я изменил это, используя admin powershell и набрав
set-executionpolicy bypass
Это позволит вам запускать любой script, который вам нравится
Тогда в моем профиле script у меня есть строки вроде:
Remove-Item -force alias:sc
Вы не увидите ошибки из этого script, когда он запустится, и он ничего не сделает, если у вас нет силы.