Выполняя некоторые исследования по другому вопросу, я хотел убедиться, что tree
не является реальной собственной командой или псевдонимом PowerShell. Конечно, правильный способ сделать это с помощью Get-Command
. Однако, когда я ищу команду, в которой я не уверен, я обычно предпочитаю сразу перейти к файлу справки, если он существует, вместо двухэтапного «проверить, существует ли команда, а затем перейти к справке». , Итак, команда, которую я выполнил, была help tree
. К моему удивлению, он вернул файл справки для Copy-Item!
В качестве проверки работоспособности я прописал это - Get-Help tree
- но в итоге получил те же результаты. Чтобы увидеть, было ли tree
по какой-то странной причине псевдонимом для Copy-Item
я запустил gal tree
- это вернуло ошибку, говоря, что такой псевдоним не существует. Я запустил gal -def Copy-Item
чтобы проверить все псевдонимы для Copy-Item
, и он только поднял copy
, cp
и cpi
.
Наконец, я сделал gcm tree
чтобы увидеть, что PowerShell должен был использовать для tree
. Как я и ожидал, это вызвало CommandType типа "Приложение" с определением «C:\Windows\system32\tree.com».
К сожалению, ни один из этих ответов не отвечает за необычное поведение Get-Help
здесь. Зачем Get-Help tree
возвращать файл справки для Copy-Item
, когда они кажутся совершенно не связанными? Это поведение было дублировано в PowerShell 2.0 в Windows 7 с пакетом обновления 1 и PowerShell 4.0 в Windows 8.1.