«Help Tree» возвращает справку для Copy-Item

«Help Tree» возвращает справку для Copy-Item

Проведя некоторые исследования на темуДругой вопрос, я хотел проверить, чтобы убедиться, что 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

Надеюсь, это проясняет употребление.

Связанный контент