在前一个技能中我们掩饰了如何分析一段脚本块的内容并且搜索变量或命令。这种技术也适用于基于文本的脚本。以下脚本将会检查自己并且提取出变量和命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $filepath = $PSCommandPath $tokens = $errors = $null
$ast = [System.Management.Automation.Language.Parser]::ParseFile($filepath, [ref]$tokens, [ref]$errors )
$ast.FindAll( { $true }, $true) | Where-Object { $_.GetType().Name -eq 'VariableExpressionAst' } | Select-Object -Property VariablePath -ExpandProperty Extent | Select-Object -Property * -ExcludeProperty *ScriptPosition | Out-GridView -Title 'Variables'
$ast.FindAll( { $true }, $true) | Where-Object { $_.GetType().Name -eq 'CommandAst' } | Select-Object -ExpandProperty Extent | Select-Object -Property * -ExcludeProperty *ScriptPosition | Out-GridView -Title 'Commands'
|
请确保将脚本保存到硬盘,或为 $filepath
指定一个不同的实际存在的脚本路径。