0
我想使用Language.Parser類的ParseInput方法從腳本獲取所有令牌。 問題是,只要我沒有在腳本中的任何評論,它的工作正常,但當我添加評論停止進一步解析。實際上,它將整個評論和評論後面的所有行作爲最後一個標記。 如果您測試代碼,您會看到我正在根據您在腳本中放置註釋的位置進行更改。 我已經使用了test.ps1中的測試代碼,使用不同代碼測試的代碼仍然表現相同。ParseInput根據腳本中的註釋更改出令牌
$ParsedScriptContent = [System.Management.Automation.Language.Parser]::ParseInput((Get-Content .\test.ps1), [ref]$ParserTokens, [ref]$null)
$i = 0
$ParserTokens | foreach{
if($_){
$i++
}
}
Write-Host $i
謝謝!我決定使用這兩種方法來分析腳本。當ParseFile返回Token時,Tokenize返回PSToken。理論上兩者應該具有相同的屬性,但不同。 –