成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Powershell ISE的抽象語法樹編程示例

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

熱門標簽:電話智能外呼系統(tǒng)誠信合作 使用電話機器人電銷是否違法 真人和電話機器人對話 金融電銷公司怎么辦理外呼系統(tǒng) 雷霆電話機器人電話 安徽400電話辦理 信陽話務外呼系統(tǒng)怎么收費 湖州電銷防封卡 什么渠道可以找外呼系統(tǒng)客戶

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

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

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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

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

下面的腳本塊展示了展示了Go-To Definition的實現(xiàn)。

復制代碼 代碼如下:

#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)) `
 
–and ($global:__ISEGoToAddOncurrcol -ge
 
$str.IndexOf($_.name)) `
 
-and ($global:__ISEGoToAddOncurrcol -le
 
($str.IndexOf($_.name)+$_.name.length))
 
)
 
{$selectedFunction = $_.name}
 
}
 
if($selectedFunction -ne "")
 
{
 
#See if the selected function exists in the current open file
 
$functionToGoTo = $functionsInFile | ?{$_.name -eq "$selectedFunction"}
 
$global:__ISEGoToAddOnlineToGoTo = $functionToGoTo.Extent.StartLineNumber
 
$global:__ISEGoToAddOncolToGoTo = $functionToGoTo.Extent.StartColumnNumber
 
}
 
if($functionToGoTo -eq $null)
 
{
 
try
 
{
 
$comm = Get-Command -Name "$selectedFunction" -ErrorAction SilentlyContinue
 
$comm.Definition | Out-GridView
 
}
 
catch [System.Exception]
 
{
 
}
 
}
 
else
 
{
 
#Select the function definition, assuming the function name immediately follows the keyword 'function'
 
try
 
{
 
$psise.CurrentFile.Editor.Select($global:__ISEGoToAddOnlineToGoTo,
 
($global:__ISEGoToAddOncolToGoTo+9),
 
$global:__ISEGoToAddOnlineToGoTo,
 
($global:__ISEGoToAddOncolToGoTo+8+$selectedFunction.length+1))
 
}
 
catch [System.Exception]
 
{
 
}
 
}
 
}

補充一下,Go-To Definition 功能,如果當前Powershell會話中存在的話,以上腳本會顯示選中文本的定義。(另外,上面的腳本只是一個簡單的例子,假如你的“function”關鍵字和函數(shù)名出現(xiàn)在腳本的同一行。這在PowerShell中并不是必須的,所以如果你的腳本風格不同,你可能需要微調(diào)一下邏輯。)

接下來應當是在Add-on(附加工具)菜單上添加這些腳本,并把它作為選中腳本的一個命令。下面兩行就可以做這件事。

復制代碼 代碼如下:

$global:__ISEGoToAddOnsb1 =
{ $global:__ISEGoToAddOnscriptBlockGoTo | Out-Null}
$null=$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(
"Go do definition", $global:__ISEGoToAddOnsb1, "F12")

現(xiàn)在來看看我們怎樣實現(xiàn)Go-Back 功能,使用我們定義的全局堆棧,幾行代碼即可:

復制代碼 代碼如下:

$global:__ISEGoToAddOnscriptBlockGoBack =
 
{
 
try
 
{
 
#Pop the line and column numbers from the stack to do a reverse traversal
 
$global:__ISEGoToAddOncurrLine =
 
$global:__ISEGoToAddOnstackOfLine.Pop()
 
$global:__ISEGoToAddOncurrcol =
 
$global:__ISEGoToAddOnstackOfCol.Pop()
 
$psISE.CurrentFile.Editor.SetCaretPosition(
 
$global:__ISEGoToAddOncurrLine, $global:__ISEGoToAddOncurrcol)
 
$psISE.CurrentFile.Editor.SelectCaretLine();
 
}
 
catch [System.Exception]
 
{
 
}
 
}
 
$global:__ISEGoToAddOnsb2 = { $global:__ISEGoToAddOnscriptBlockGoBack | Out-Null}
 
$null=$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Go Back",$global:__ISEGoToAddOnsb2, "Shift+F12")

就到這里了,只用了一些PowerShell代碼就實現(xiàn)了Visual Studio中的Go-To Definition (轉(zhuǎn)向定義)和Go-Back(返回)功能。

你還可以繼續(xù)擴展這個腳本,讓它包含這些任務:諸如顯示腳本中所有函數(shù),點擊函數(shù)轉(zhuǎn)到函數(shù)定義。作為大家進一步擴展功能的鼓勵,我給你看下我的 ISE附加工具現(xiàn)在的樣子。

擴展PowerShell ISE 中的 “附加工具”菜單

標簽:六盤水 山南 濟南 湛江 岳陽 運城 鶴崗 德州

巨人網(wǎng)絡通訊聲明:本文標題《Powershell ISE的抽象語法樹編程示例》,本文關鍵詞  Powershell,ISE,的,抽象,語法樹,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Powershell ISE的抽象語法樹編程示例》相關的同類信息!
  • 本頁收集關于Powershell ISE的抽象語法樹編程示例的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产激情视频在线| 成人午夜视频在线| 视频一区中文字幕精品| 少妇人妻无码专区视频| 欧洲精品久久久| 欧美一级黄色片视频| 欧美高潮视频| 欧美黑人狂野猛交老妇| 成人三级黄色免费网站| 国产三级按摩推拿按摩| 青草影视电视剧免费播放在线观看| 国产精品国产亚洲精品看不卡| 亚洲日本成人女熟在线观看| 日本中文字幕久久| 日本精品一区二区三区高清| 美女国产精品久久久| 四虎成人在线观看| 狠狠干狠狠操视频| 最近中文字幕在线6| 少妇精品久久久一区二区| 性欧美精品男男| 天天摸天天做天天爽水多| 久久久久亚洲AV成人网人人小说| 欧美与动交zoz0z| 国产精品九九九九九| 天天操天天干天天爱| 欧美日韩精品免费观看视欧美高清免费大片| 国产传媒在线播放| 欧美jizzhd精品欧美满| 国产又粗又长又大的视频| 久久亚洲无码视频| 欧美黑人3p| www国产精品com| 欧美日韩一区二区三| 91.com在线观看| 在线欧美日韩| 我要看一级黄色大片| 欧美激情亚洲色图| 国产女主播在线播放| 亚洲三级在线视频| 欧美日韩亚洲自拍| 国偷自产一区二区免费视频| 毛片在线网站| 九色丨porny丨自拍入口| 亚洲国产合集| 欧美亚洲国产另类| 欧美精品xxxxx| 国产精品r级在线| 欧美日韩亚洲网| 色噜噜狠狠一区二区三区| 超碰97在线人人| 师生出轨h灌满了1v1| 亚洲午夜精品久久久久久久久久久久| 自拍视频一区二区| 欧美日韩国产中文精品字幕自在自线| 永久免费毛片在线观看| 在线视频91p| 亚洲午夜激情网站| 国产欧美一区二区在线| 久久精品电影网| 2020国产精品视频| 99久久夜色精品国产亚洲96| 日本黄色网网页| 久久国产综合视频| 亚洲欧美综合v| 色诱视频在线观看| 91网页在线看| 91www在线| 国产一区二三区| 日本成人手机在线| 中文字幕成人网| www.涩涩涩| 欧美精品无码一区二区三区| 午夜激情在线| 91视频综合| 精品国产成人| 你懂的免费在线观看| 亚洲美女网站| 国产精品无码天天爽视频| 国产成人精品免费一区二区| 最新亚洲精品国自产在线观看| 国产精品成人网| 四虎精品一区二区三区| 国产精品一区二区三区四区五区| 成人免费在线播放视频| 一本一道波多野毛片中文在线| 日韩电影在线一区| 久久久亚洲综合网站| 免费一级做a爰片久久毛片潮| 91 在线视频| 欧美性受xxx| 青青在线视频| 日韩欧美国产另类| 首页欧美精品中文字幕| 男女啪啪a级毛片| 一色屋成人免费精品网站| 97影院理论片在线播放| 日本a级片在线观看| 欧美精品日韩综合在线| 日韩精品免费一区二区在线观看| 欧美一区二区福利视频| 97高清免费视频| 91色porny蝌蚪| 国产高清视频色在线www| 国产福利一区二区三区| 久久久久久久久久久久久久国产| 91在线导航| 欧美日韩亚洲综合一区二区三区| 国产精品v欧美精品v日韩| 国产伦精品一区二区三区照片| 视频二区在线观看| 色七七影院综合| 欧美性生活一区| av中文字幕网| 欧美日韩二区三区| 国产视频不卡一区| 在线观看日韩av| 亚洲一区二区三区蜜桃| 亚洲影视资源网| 亚州色图欧美色图| 中文字幕一区二区三区欧美日韩| 91丨九色丨蝌蚪丨对白| 欧美极品一区二区三区| 国产99精品在线观看| 麻豆一区二区三区视频| 亚洲少妇30p| 日本高清免费不卡视频| 性欧美lx╳lx╳| 一区二区三区四区在线免费视频| 一区二区三区四区视频精品免费| 99精品全国免费观看视频软件| 欧美成人高清视频| 久久国产精品久久久久久| 日韩精品一区二区三区在线播放| 国产婷婷成人久久av免费高清| 偷拍自拍在线| 麻豆视频在线观看免费| 日韩国产在线| av在线视屏| 日本电影亚洲天堂一区| 深夜福利在线视频| 福利片在线观看| 亚洲国产中文字幕| 精品一区二区三区蜜桃在线| 视频精品一区二区| 人妻妺妺窝人体色www聚色窝| 人妻少妇精品无码专区久久| 午夜精品久久久久久久99热黄桃| 91小视频网站| 丁香六月婷婷综合| 国产麻豆精品一区二区三区v视界| 综合激情一区| 国产一区二区三区在线视频观看| 在线看不卡av| 亚洲欧洲闷骚av少妇影院| 午夜综合激情| 欧美日韩高清一区二区不卡| 91精品国产综合久久婷婷香蕉| 日本黄色三级大片| 人人妻人人爽人人澡人人精品| 国产精品免费看久久久香蕉| 久久天堂精品| 精品无码一区二区三区| 欧美黑人xxxx| 精品国产91久久久久久老师| 韩剧1988在线观看免费完整版| 五月婷婷狠狠干| 婷婷综合视频| 国产精品美女视频免费观看软件| 中文字幕人妻熟女人妻a片| 亚洲激情欧美| 美女露胸视频在线观看| 欧美在线视频免费观看| 久久久久久久极品| 欧美又大又硬又粗bbbbb| 亚洲精品一区中文字幕乱码| 日韩伦理av| 国产精品自产拍在线观看| 亚洲欧美日韩国产综合在线| 国内精品伊人| 91禁男男在线观看| 国产精品ⅴa在线观看h| 五月国产精品| 欧美日韩在线一区二区三区| 亚洲av无码一区二区三区观看| 国产一二三四五| 欧美三级一区| 国产精品丝袜高跟| 四虎a级欧美在线观看| av电影高清在线观看| 精品国产一区二区三区不卡| 日韩国产精品久久久久久亚洲| 性欧美高清视频| 国产精品视频久久久| 在线观看麻豆视频| 精品乱码一区内射人妻无码| a级影片在线| 又色又爽又黄视频| 亚洲国产导航| 蜜桃av综合| 欧美激情久久久久久| 欧洲亚洲女同hd| 喜爱夜蒲2在线| 中国av免费看| 日韩精品亚洲一区| 一区二区三区四区蜜桃| 国产98在线|日韩| 精品一区二区三区在线播放| 男人皇宫亚洲男人2020| 亚洲精品久久久| 麻豆视频传媒入口| 欧美日韩精品欧美日韩精品| 毛片中文字幕| 国产精品免费无遮挡无码永久视频| 99re国产在线| 2021av在线| 亚洲国产日韩一区二区| 俄罗斯精品一区二区| 亚洲精品久久在线| 久久久久免费精品国产| 116极品美女午夜一级| 国产精品嫩草影院俄罗斯| 强制高潮抽搐sm调教高h| 亚洲国产精选| 日本亚洲欧美三级| 美日韩一级片在线观看| 午夜精产品一区二区在线观看的| av天堂一区二区三区| 91日韩在线播放| 青青免费在线视频| 欧美国产综合视频| 视频在线在亚洲| av在线之家电影网站| 日本人妻一区二区三区| 国产视频一区三区| 国产精品亚洲无码| 欧美日韩精品在线播放| 99久久国产综合精品麻豆| 国产精品av免费观看| 日本午夜精品一区二区三区| 麻豆一区二区三区四区精品蜜桃| 精品福利一区二区三区免费视频| www.污视频| 无码人妻精品一区二区中文| 日本成人动漫在线观看| 蜜桃av一区| 亚洲第一页视频| 久久99精品国产99久久6尤物| 五月天丁香激情| 黄色精品在线看| 在线观看你懂得| 国产精品免费久久久久久| 偷拍日韩校园综合在线| 小水嫩精品福利视频导航| 性欧美lx╳lx╳| 91超碰在线| 日韩人妻一区二区三区蜜桃视频| 怡红院男人天堂| 欧美激情导航| 999在线观看精品免费不卡网站| 99视频在线| 91在线免费视频观看| 精品无人区乱码1区2区3区免费| 澳门av一区二区三区| 国产精品久久综合av爱欲tv| 国产精品边吃奶边做爽| 亚洲精品中文字幕乱码三区91| 91精品视频观看| 欧美亚洲高清一区二区三区不卡| 国产3级在线观看| 亚洲人体影院| 永久免费不卡在线观看黄网站| 99久热re在线精品视频| 女人av一区| 日韩精品一区不卡| yourporn在线观看中文站| 亚洲男人天堂视频| 日本老熟俱乐部h0930| 日韩中文字幕在线观看视频| 亚洲人成在线观看网站高清| 日韩在线观看中文字幕| 色偷偷av亚洲男人的天堂| 国产玉足榨精视频在线观看| 国产精品短视频| 天天躁日日躁狠狠躁av麻豆男男| 亚洲色图第四色| 欧美成人午夜精品免费| 亚洲精品之草原avav久久| av女优在线播放| 欧美日韩久久婷婷| 国产欧美一区二区在线| av中文资源在线资源免费观看| 国产精品av久久久久久麻豆网| 精品va天堂亚洲国产| 久久777国产线看观看精品| 色琪琪一区二区三区亚洲区| 日日夜夜操操操| 午夜欧美理论片| 日韩一级片免费视频| 美女黄毛**国产精品啪啪| 好看的视频你懂的| 久久波多野结衣| 欧美羞羞免费网站| 国产又大又黄又粗的视频| 夜夜爽99久久国产综合精品女不卡| 精品无码人妻一区二区三区品| 中文字幕久久午夜不卡| 日本xxxwww免费视频| 精品中文字幕一区二区小辣椒| 黄色精品视频网站| 亚洲天堂一二三| 69久久夜色精品国产69| 国产绿帽刺激高潮对白| 成人av影院在线观看| 神马午夜在线视频| 米奇777在线欧美播放| 天天操夜夜欢| 亚洲男人在线天堂| 日本妇乱大交xxxxx| 国产精品视频无码| 一区二区三区 日韩| xxx欧美尤物xxx| 亚洲男人的天堂网| 国产精品mv在线观看| 国产亚洲一区二区三区在线观看| 777精品久无码人妻蜜桃| 国产大片中文字幕在线观看| 精品国产一区二区三区成人影院|