Прежде всего: нет, я не знаю такого сценария/утилиты.
Я подозреваю, что вы можете получить довольно далеко от возможностей Powershell разбора.
Например, следующий сценарий:
function test {}
test
$content = gc $args[0]
[System.Management.Automation.PsParser]::Tokenize($content, [ref] $null) |
? { $_.Type -eq "Command" } | ft
дал себя в качестве аргумента дает следующий результат:
Content Type Start Length StartLine StartColumn EndLine EndColumn
------- ---- ----- ------ --------- ----------- ------- ---------
test Command 20 4 3 1 3 5
gc Command 39 2 5 12 5 14
? Command 127 1 6 76 6 77
ft Command 157 2 6 106 6 108
Так, тип «Команда» включает в себя по крайней мере, функций и командлетов. Вы можете дополнительно проанализировать это, сглаживая эти жетоны.
Это, вероятно, может вам немного рассказать, но не приближается к вашему довольно исчерпывающему списку того, что сценарии Powershell могут требуют.
Но, по крайней мере, в случае оснасток или модулей вам, вероятно, понадобится какая-то магия, чтобы точно знать что нет отсутствует.
pspaser токенизатор. Я забыл об этом. –