亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PowerShell > 正文

Powershell ISE的抽象語法樹編程示例

2020-10-29 20:59:09
字體:
來源:轉載
供稿:網友

有一個讓我非常喜歡Windows PowerShell ISE的理由,就是它將它的基礎腳本對象模型暴露給用戶,這樣就允許用戶按照自己的方式和需要去自定義腳本體驗。
自定義ISE的核心是$psISE對象。$psISE對象允許用戶去控制ISE許多方面的功能。你可以從這里獲取關于$psISE的分層對象模型的介紹,和與這些對象相關聯的功能。

這篇文章會討論你怎樣利用PowerShell公開提供的解釋器接口,來結合ISE對象模型魅力,去創建腳本分析和快速定位的工具。

想象一下,你不得不分析一個相對龐大的PowerShell腳本。那這個腳本可能是別人寫的,也有可能是你自己幾個月前寫的,扔了好久了。PowerShell ISE已經做了件非常棒的工作了,它提供了腳本環境。你可以通過添加Add-On(附加工具)來擴充它的功能,讓你的腳本體驗更好,更高效。從PowerShell 3.0開始,腳本的抽象語法樹(AST)就可以使用語法解釋器接口非常方便的獲取了。下面的腳本行會獲取當前打開的ISE中的腳本的AST:

復制代碼 代碼如下:

$AbstractSyntaxTree = [System.Management.Automation.Language.Parser]::
ParseInput($psISE.CurrentFile.Editor.Text, [ref]$null, [ref]$null)

接下來讓我們查詢腳本中所有的函數:

復制代碼 代碼如下:

$functionsInFile = $AbstractSyntaxTree.FindAll({$args[0] -is
 [System.Management.Automation.Language.FunctionDefinitionAst]}, $true)

撇開函數定位的定義,如果我們能回到光標之前出現的位置,那將太漂亮了。實現這個也非常簡單。我們所要做的只是存儲這些行號,然后按照反轉順序反轉他們。(是否有人已經知道了,“堆棧”)

下面的腳本塊展示了展示了Go-To Definition的實現。

復制代碼 代碼如下:

#Define some useful global variables
 
$global:__ISEGoToAddOncurrLine=1
 
$global:__ISEGoToAddOncurrcol=1
 
$global:__ISEGoToAddOnlineToGoTo=1
 
$global:__ISEGoToAddOncolToGoTo=1
 
#We need two stacks - one each for line and column
 
$global:__ISEGoToAddOnstackOfLine = New-Object System.Collections.Stack
 
$global:__ISEGoToAddOnstackOfCol = New-Object System.Collections.Stack
 
#This script block has the logic for the implementation of the Go-To definition functionality
 
$global:__ISEGoToAddOnscriptBlockGoTo =
 
{
 
$AbstractSyntaxTree =[System.Management.Automation.Language.Parser]::ParseInput($psISE.CurrentFile.Editor.Text,[ref]$null, [ref]$null)
 
$functionsInFile = $AbstractSyntaxTree.FindAll(
 
{$args[0] -is[System.Management.Automation.Language.FunctionDefinitionAst]}, $true)
 
#Get the text of the line where we have the cursor
 
$str = $psISE.CurrentFile.Editor.CaretLineText
 
#Store them on the stack for later use
 
$global:__ISEGoToAddOnstackOfLine.Push($psISE.CurrentFile.Editor.CaretLine)
 
$global:__ISEGoToAddOnstackOfCol.Push($psISE.CurrentFile.Editor.CaretColumn)
 
$global:__ISEGoToAddOncurrLine = $global:__ISEGoToAddOnstackOfLine.Peek()
 
$global:__ISEGoToAddOncurrcol = $global:__ISEGoToAddOnstackOfCol.Peek()
 
#Get the selected text so that it can be used for searching existing functions
 
$selectedFunction = $psISE.CurrentFile.Editor.SelectedText
 
#Ensure that the cursor is somewhere between the word boundaries of the function
 
$functionsInFile | %{if(($str.Contains($_.name)) `
 
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜女主播在线直播| 久久久久久欧美| 欧美性猛xxx| 69**夜色精品国产69乱| 亚洲精品成人久久| 久久精品国产96久久久香蕉| 日韩中文字幕不卡视频| 国产精品福利小视频| 久久精品视频一| 欧美精品日韩三级| 亚洲精品wwww| 国产在线精品播放| 久久精品国产久精国产一老狼| 欧美日韩国产一区二区三区| 91成人在线视频| 亚洲最大的av网站| 国产第一区电影| 欧美劲爆第一页| 成人做爰www免费看视频网站| 日本aⅴ大伊香蕉精品视频| 日韩欧美成人免费视频| 日韩高清免费在线| 欧美成人精品在线| 欧美亚洲另类制服自拍| 青青草原成人在线视频| 色综合天天综合网国产成人网| 欧美wwwwww| 国产精品视频网址| 国产最新精品视频| 国内外成人免费激情在线视频| 日韩欧美极品在线观看| 午夜精品久久久久久久男人的天堂| 国产日韩中文字幕| 亚洲伊人成综合成人网| 国产精品第一第二| 欧美一级视频在线观看| 欧美日韩国产精品一区二区不卡中文| 日本不卡高字幕在线2019| 亚洲成人999| 亚洲а∨天堂久久精品9966| 红桃av永久久久| 亚洲成人av片| 成人欧美一区二区三区在线湿哒哒| 亚洲激情久久久| 色综久久综合桃花网| 亚洲第一区第一页| 欧美激情性做爰免费视频| 久久久久久久久久久久久久久久久久av| 久久免费视频网| 91国偷自产一区二区三区的观看方式| 亚洲石原莉奈一区二区在线观看| 日本伊人精品一区二区三区介绍| 久久久国产精彩视频美女艺术照福利| 精品美女久久久久久免费| 国产精品ⅴa在线观看h| 欧洲成人免费aa| 久久久人成影片一区二区三区| 俺去了亚洲欧美日韩| 亚洲欧美中文字幕| 性视频1819p久久| 国产精品视频白浆免费视频| 久久久亚洲精选| 亚洲天堂网在线观看| 欧美极度另类性三渗透| 日本高清视频一区| 亚洲色图35p| 久久久久久国产三级电影| 波霸ol色综合久久| 欧美自拍视频在线观看| 色综合伊人色综合网| 国产一区二区日韩精品欧美精品| 国产成人jvid在线播放| 欧美大肥婆大肥bbbbb| 欧美大尺度在线观看| 久久精品国产清自在天天线| 亚洲一区二区三区sesese| 欧美另类极品videosbest最新版本| 中文字幕久热精品视频在线| 亚洲偷欧美偷国内偷| 国产精品日韩在线| 国产亚洲a∨片在线观看| 亚洲欧美在线看| 疯狂欧美牲乱大交777| 日本aⅴ大伊香蕉精品视频| 国产精品第一区| 欧美黑人性生活视频| 欧美日韩国产成人高清视频| 在线亚洲午夜片av大片| 中文字幕亚洲欧美日韩在线不卡| 精品亚洲va在线va天堂资源站| 国产精品女人久久久久久| 日av在线播放中文不卡| 久久综合国产精品台湾中文娱乐网| 国模吧一区二区三区| 日韩精品在线播放| 国产精品99久久久久久人| 欧美刺激性大交免费视频| 国产精品欧美在线| www.欧美三级电影.com| 国产精品丝袜久久久久久不卡| 亚洲乱码国产乱码精品精天堂| 91亚洲精品久久久| 欧美xxxx18性欧美| 日韩中文字幕网站| 中文字幕少妇一区二区三区| 精品福利樱桃av导航| 91高清视频在线免费观看| 亚洲毛片在线观看.| 欧美激情视频在线免费观看 欧美视频免费一| 欧美日韩国产999| 久久精品在线视频| 久久久久久18| 黄色一区二区在线观看| 另类色图亚洲色图| 色悠久久久久综合先锋影音下载| 久色乳综合思思在线视频| 国产成人午夜视频网址| 久久伊人精品一区二区三区| 国产亚洲日本欧美韩国| 91深夜福利视频| 97久久精品人人澡人人爽缅北| 91极品视频在线| 国产欧美日韩专区发布| 日韩精品福利在线| 精品国产区一区二区三区在线观看| 精品人伦一区二区三区蜜桃网站| 国产精品美女免费| 国产日韩在线一区| 欧美成人久久久| 欧美日韩福利在线观看| 国产精品久久久久久久美男| 欧美日韩在线观看视频小说| 国产精品亚洲第一区| 国产精品美女久久久久av超清| 国产日韩欧美综合| 色偷偷888欧美精品久久久| 亚洲女人天堂成人av在线| 国产性猛交xxxx免费看久久| 国产丝袜一区视频在线观看| 欧美野外猛男的大粗鳮| 国产日产亚洲精品| 国产女精品视频网站免费| 久久91亚洲精品中文字幕奶水| 亚洲欧美日韩综合| 欧美国产中文字幕| 国产精品99一区| 国产精品美女久久久免费| 九九精品视频在线观看| 亚洲欧美一区二区三区久久| 精品久久久久人成| 欧美亚洲在线视频| 精品无码久久久久久国产| 日韩av一区在线| 国产精品久久久久久网站| 久久乐国产精品| 在线亚洲男人天堂| 日韩视频在线一区| 日韩高清免费在线| 国产精品久久久久久久电影| 中文精品99久久国产香蕉| 欧美另类极品videosbestfree| 欧美亚洲国产日韩2020| 欧美激情视频网| 中文字幕国产精品久久|