2009-08-14 3 views
2

Кто-нибудь знает о скрипте или утилите Windows PowerShell или утилите сторонних разработчиков, кодексе, скрипте poshcode, приложении и т. Д., Который может читать и сканировать сценарий powershell и подробно описывать, какие snapins, поставщиков, сборок, командлетов, функций и т. д. и т. д., сценарий должен выполняться.Скрипт Powershell, который извлекает метаданные из сценария powershell

Спасибо. Боб.

ответ

2

Прежде всего: нет, я не знаю такого сценария/утилиты.

Я подозреваю, что вы можете получить довольно далеко от возможностей 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 могут требуют.

Но, по крайней мере, в случае оснасток или модулей вам, вероятно, понадобится какая-то магия, чтобы точно знать что нет отсутствует.

+0

pspaser токенизатор. Я забыл об этом. –

0

На самом деле, мы делаем некоторые из этих утилит:

http://scriptcop.start-automating.com - Бесплатные онлайн/загружаемый статический анализ сценариев PowerShell http://scriptcoverage.startautomating.com/ - Code Coverage Инструмент для Powershell Scripts

Там также инструмент в модуле ShowUI (Get-ReferencedCommand), который делает именно то, что вы хотите. Он рассматривает каждую команду, используемую в команде, и каждую команду, которую они используют, для создания списка всех команд, которые вы должны включить.

Вы можете использовать его как: Get-ReferenedCommand -ScriptBlock { Start-MyCommand }

Надежда это помогает

Смежные вопросы