
Проведя некоторые исследования на темуДругой вопрос, я хотел проверить, чтобы убедиться, что tree
это не настоящая собственная команда PowerShell или псевдоним. Конечно, правильный способ сделать это — с помощью Get-Command
. Однако, когда я ищу команду, в которой не уверен, я обычно предпочитаю сразу перейти к файлу справки, если он существует, вместо того, чтобы выполнять два шага «проверить, существует ли команда,затемперейти на help". Итак, команда, которую я запустил, была 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 "Application" с Definition "C:\Windows\system32\tree.com".
К сожалению, ничего из этого не отвечает на необычное поведение здесь Get-Help
. Зачем Get-Help tree
возвращать файл справки для Copy-Item
, когда эти два кажутся совершенно не связанными? Это поведение было продублировано в PowerShell 2.0 в Windows 7 SP1 и PowerShell 4.0 в Windows 8.1.
решение1
Вы получаете этот результат, потому что справка для Copy-Item — этотолькофайл справки в вашей системе, содержащий ключевое слово "tree". Следующая команда покажет, что строка "tree" встречается в примечаниях раздела примеров.
(Get-Help -Name Copy-Item).examples.example.remarks | Where-Object { $_ -match 'tree'}
Попробуйте выполнить команду ниже, и вы обнаружите, что ключевое слово «intact» также уникально для этого файла справки.
Get-Help intact
Это также объясняет, почему он не найден при использовании другой локали.
Например, для получения списка файлов справки, содержащих ключевое слово «particular», используйте команду
Get-Help particular
Надеюсь, это проясняет употребление.