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

首頁 > 開發 > PowerShell > 正文

Windows Powershell 變量的作用域

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

如果我們對變量不做特別的聲明,Powershell解釋器會自動處理和限制變量的作用域。將下面的內容命令保存著至test1.ps1

$windows = $env:windir“Windows Folder: $windows”

然后在控制臺給變量$windows賦值,并調用Test.ps1腳本。

PS> $windows="Hellow"PS> ./test.ps1Windows Folder: C:/WindowsPS> $windowsHellow

調用腳本時,會分配一個變量$windows,在腳本調用結束后,這個變量被回收,腳本中的變量不會影響腳本外的變量,因為它們在不同的作用域中。powershell會針對每個函數和腳本給它們分配不同的作用域。

更改變量的可見性
你可以很容易的看到沒有Powershell解釋器自動限制可見性時會發生什么狀況,同樣是剛才的腳本,剛才的命令,只是在運行腳本時多加上一個點”.” 和一個空格:

PS> $windows="Hellow"PS> . ./test.ps1Windows Folder: C:/WindowsPS> $windowsC:Windows

在運行腳本時使用一個原點和空格,Powershell解釋器就不會為腳本本身創建自己的變量作用域,它會共享當前控制臺的作用域,這種不太靈活但卻簡單的方法,使用時一定要格外小心。

加強變量可見性限制的優點:清空初始化環境
可以假設一個場景,如果你在當前控制臺不小心定義了一個只讀的常量,這個常量既不能更新也不能刪除,很是麻煩。但是如果你在腳本中操作這個變量就不成問題,因為腳本有自己的作用域。例如,將下面文本保存為test.ps1,并調用沒有任何問題:

New-Variable a -value 1 -option Constant"Value: $a"PS> ./test.ps1Value: 1PS> ./test.ps1Value: 1

但是如果你通過圓點禁用作用域限制,調用test.ps1,就會有異常,因為一個常量不能被創建兩次。

PS> . ./test.ps1Value: 1PS> . ./test.ps1New-Variable : A variable with name 'a' already exists.Attest.ps1:1 char:13+ New-Variable <<<< a -value 1 -option Constant  + CategoryInfo     : ResourceExists: (a:String) [New-Variable], SessionStateException  + FullyQualifiedErrorId : VariableAlreadyExists,Microsoft.PowerShell.Commands.NewVariableCommand

所以這種變量的作用域限制可以把變量的沖突降到最小。

設置單個變量的作用域
到目前為止,看到的變量作用域的改變都是全局的,能不能針對某個具體變量的作用域做一些個性化的設置。

$global
全局變量,在所有的作用域中有效,如果你在腳本或者函數中設置了全局變量,即使腳本和函數都運行結束,這個變量也任然有效。

$script
腳本變量,只會在腳本內部有效,包括腳本中的函數,一旦腳本運行結束,這個變量就會被回收。

$private
私有變量,只會在當前作用域有效,不能貫穿到其他作用域。

$local
默認變量,可以省略修飾符,在當前作用域有效,其它作用域只對它有只讀權限。

打開Powershell控制臺后,Powershell會自動生成一個新的全局作用域。如果增加了函數和腳本,或者特殊的定義,才會生成其它作用域。在當前控制臺,只存在一個作用域,通過修飾符訪問,其實訪問的是同一個變量:

PS> $logo="www.49028c.com"PS> $logowww.49028c.comPS> $private:logowww.49028c.comPS> $script:logowww.49028c.comPS> $private:logowww.49028c.comPS> $global:logowww.49028c.com

當調用一個已定義的函數,Powershell會生成第二個作用域,它可以對調用者的作用域中的變量執行讀操作,但是不能執行寫操作。

PS> function f(){ "var=$var";$var="function inner";$var }PS> $var="I am in console."PS> $varI am in console.PS> fvar=I am in console.function innerPS> $varI am in console.

怎樣把當前控制臺中的變量保護起來,不讓它在函數和腳本中被訪問,Private修飾符就派上了用場。

PS> function f(){ "var=$var";$var="function inner";$var }PS> $private:var="i am a private variable in console,other scope can not access me."PS> fvar=function innerPS> $private:vari am a private variable in console,other scope can not access me.

對于$private限制的變量能不能在函數中通過$global修改呢?不但不能修改,還會刪除當前的$private變量

PS> Function f(){ "var=$var";$global:var=" Try to change variable in function"}PS> $private:var="I am a private variable"PS> $private:varI am a private variablePS> $varI am a private variablePS> fvar=PS> $private:varPS> $varPS>PS> $private -eq $nullTrue

但是$local 修飾的變量則可以通過$global在函數內部更改。

PS> Function f(){ "var=$var";$global:var=" Try to change variable in function"}PS> $var="I am a local variable."PS> $varI am a local variable.PS> $private:varI am a local variable.PS> fvar=I am a local variable.PS> $var Try to change variable in functionPS> $local:var Try to change variable in function

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄页视频免费观看| 国产成人精品av| 亚洲精品久久久久国产| 尤物yw午夜国产精品视频明星| 国产精品一区电影| 成人福利视频在线观看| 综合网日日天干夜夜久久| 国产日韩欧美电影在线观看| 久久91精品国产| 久久精品视频播放| 精品女同一区二区三区在线播放| 成人性生交大片免费看视频直播| 91高清免费在线观看| 91天堂在线视频| 国产欧美一区二区三区久久| 精品国产欧美一区二区三区成人| 亚洲视屏在线播放| 成人中文字幕在线观看| 日韩高清a**址| 国产精品久久久91| 精品国产自在精品国产浪潮| 久久精品国产综合| 高潮白浆女日韩av免费看| 日本19禁啪啪免费观看www| 亚洲加勒比久久88色综合| 亚洲视频在线视频| 久久久久久久久久久免费精品| 欧美日本高清视频| 日韩麻豆第一页| 欧美大胆a视频| 欧美成人中文字幕| 色婷婷久久一区二区| 国产日韩在线视频| 国产女人18毛片水18精品| 国产精品免费看久久久香蕉| 啊v视频在线一区二区三区| 日韩高清人体午夜| 亚洲第一天堂无码专区| 日韩在线国产精品| www国产亚洲精品久久网站| 日韩hd视频在线观看| 欧美日韩国产影院| 日韩欧美国产一区二区| 日本aⅴ大伊香蕉精品视频| 欧美在线日韩在线| 亚洲区中文字幕| 亚洲精品国精品久久99热一| 亚洲欧美一区二区三区情侣bbw| 18性欧美xxxⅹ性满足| 国产伦精品一区二区三区精品视频| 精品久久香蕉国产线看观看gif| 欧美成人午夜免费视在线看片| 中文字幕欧美精品日韩中文字幕| 亚洲美女动态图120秒| 最近2019中文字幕大全第二页| 欧美日韩精品中文字幕| 久久99视频免费| 欧美巨大黑人极品精男| 中文字幕国产亚洲2019| 欧美日韩激情网| 久久免费视频在线观看| 欧美大尺度激情区在线播放| 欧美午夜丰满在线18影院| 成人动漫网站在线观看| 91日韩在线视频| 91精品国产91久久久久久久久| 欧美精品在线视频观看| 欧美超级乱淫片喷水| 姬川优奈aav一区二区| 欧美日韩亚洲精品内裤| 亚洲欧美日韩精品久久亚洲区| 亚洲xxxxx电影| 成人黄色免费在线观看| 日韩av免费网站| 亚洲天堂免费在线| 国产精品欧美风情| 欧美乱大交xxxxx另类电影| 亚洲第一二三四五区| 日韩精品一区二区三区第95| 久久久精品影院| 国产精品永久免费在线| 96pao国产成视频永久免费| 亚洲国产精久久久久久久| 国产91色在线|| 九九热r在线视频精品| 亚洲色无码播放| 久久韩剧网电视剧| 日韩精品亚洲元码| 在线观看国产精品淫| 日韩精品久久久久久久玫瑰园| 亚洲欧美日韩图片| 91夜夜未满十八勿入爽爽影院| 日韩亚洲第一页| 亚洲成人精品视频在线观看| 久久视频这里只有精品| 亚洲成人黄色在线观看| 欧洲成人午夜免费大片| 粗暴蹂躏中文一区二区三区| 国产欧美精品在线| 精品亚洲aⅴ在线观看| 国产精品一区专区欧美日韩| 日韩精品免费在线视频| 免费av一区二区| 日韩色av导航| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品久久久久久久久久久久| 精品国产老师黑色丝袜高跟鞋| 久久久女女女女999久久| 国产专区精品视频| 国产精品久久久久91| 日韩免费在线免费观看| 欧美激情在线一区| 欧洲日本亚洲国产区| 国产欧美日韩专区发布| 日韩精品中文字幕在线| 在线精品国产欧美| 中文字幕亚洲精品| 中文欧美日本在线资源| 国产精品久久久久久久久男| 国产精品69久久久久| 亚洲最大av在线| 久久在线免费观看视频| 91精品国产高清自在线看超| 俺也去精品视频在线观看| 亚洲天堂av在线播放| 欧美体内谢she精2性欧美| 色阁综合伊人av| 国产精品丝袜白浆摸在线| 国产色婷婷国产综合在线理论片a| 精品国偷自产在线| 欧美激情精品久久久久久黑人| 欧美日韩成人在线播放| 欧美性猛交xxxx偷拍洗澡| 国产欧美久久久久久| 亚洲国产精品成人一区二区| 日韩大陆毛片av| 成人免费在线视频网站| 91精品国产高清久久久久久久久| 5278欧美一区二区三区| 日韩亚洲欧美成人| 亚洲欧美一区二区三区情侣bbw| 91精品国产乱码久久久久久蜜臀| 欧洲成人免费视频| 色婷婷综合久久久久中文字幕1| 国产美女91呻吟求| 欧美大片va欧美在线播放| 国产精品美乳一区二区免费| 欧日韩在线观看| 岛国视频午夜一区免费在线观看| 免费91在线视频| 国产三级精品网站| 日本免费一区二区三区视频观看| 中文字幕日韩欧美在线| 国产精品96久久久久久又黄又硬| 久久久久久网址| 91精品视频观看| 欧美性猛交丰臀xxxxx网站| 久久综合免费视频影院| 精品国产老师黑色丝袜高跟鞋| 国产日韩在线免费| 92看片淫黄大片看国产片| 亚洲人成在线观看| 精品亚洲一区二区三区在线观看| 国产精品福利观看|