麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PowerShell > 正文

Windows Powershell 變量的類型和強類型

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

變量可以自動存儲任何Powershell能夠識別的類型信息,可以通過$variable的GetType().Name查看和驗證Powershell分配給變量的數據類型。

PS> (10).gettype().nameInt32PS> (9999999999999999).gettype().nameInt64PS> (3.14).gettype().nameDoublePS> (3.14d).gettype().nameDecimalPS> ("WWW.MOSSFLY.COM").gettype().nameStringPS> (Get-Date).gettype().nameDateTimePowershell

會給數據分配一個最佳的數據類型;如果一個整數超出了32位整數的上限([int32]::MaxValue),它就會分配一個64位整數的數據類型;如果碰到小數,會分配一個Double類型;如果是文本,Powershell會分配一個String類型;如果是日期或者時間,會被存儲為一個Datetime對象。

這種類型自適應也稱作“弱類型”,雖然使用起來方便,但是也會有一些限制,甚至危險。如果powershell選擇了一個錯誤的類型付給變量,可能會引發一些奇怪的現象。例如有一個變量要存儲的是即將拷貝文件的個數,可是在賦值時付了一個字符串,Powershell不會去做過多的判斷,它會更新這個變量的類型,并且存儲新的數據。所以一般專業的程序員或者腳本開發者更喜歡使用“強類型”,哪怕在賦值時類型不兼容的報錯,他們也樂意接受。

喜歡使用強類型的另一個原因是:每一個數據類型都有屬于自己的函數。例如DateTime,和XML,盡管這兩種類型都可以用純文本表示,但是使用強類型[DateTime]和[XML],對于數據操作起來更方便,這兩個類型的方法可是很豐富奧!

指定類型定義變量

定義變量時可以在變量前的中括號中加入數據類型。例如定義一個Byte類型的變量,因為Byte的定義域為[0,255],一旦嘗試使用一個不在定義域中的值賦給該變量就會顯示一條錯誤信息。

PS> [byte]$b=101PS> $b101PS> $b=255PS> $b255PS> $b.gettype()IsPublic IsSerial Name                   BaseType-------- -------- ----                   --------True   True   Byte                   System.ValueTypePS> $b=256Cannot convert value "256" to type "System.Byte". Error: "Value was either too large or too small for an unsigned byte."At line:1 char:3+ $b <<<< =256  + CategoryInfo     : MetadataError: (:) [], ArgumentTransformationMetadataException  + FullyQualifiedErrorId : RuntimeException

使用固定類型的優點

手動地定義類型的一個重要原因是每個特殊的數據類型都有自己的特殊命令和特殊方法。比如把一個日期字符串賦給一個變量,Powershell不會自動把這個字符串轉換成日期對象賦給一個變量,因為Powershell畢竟是機器,沒有人那么智能。當你在賦值時指定DateTime類型時,你會發現幾乎所有的.Net 中DateTime類型的方法在這里都得到支持。

PS> [DateTime]$date="2012-12-20 12:45:00"PS> $date2012年12月20日 12:45:00PS> $date.DayOfWeekThursdayPS> $date.DayOfYear355PS> $date.AddDays(-10)2012年12月10日 12:45:00Powershell

處理Xml文檔也很方便,

例如有如下LogoTest.xml

   <LOGOTEST>  <EXTENSIONS>   <E>.exe</E>   <E>.dll</E>  </EXTENSIONS>  <FILES>   <F></F>  </FILES>  <DIRS></DIRS> </LOGOTEST>

查詢.exe 和 .dll結點

PS> [ XML ]$xml=(Get-Content .LogoTestConfig.xml)PS> $xml.LogoTest.Extensions.E.exe.dllPowershell 

默認支持的.NET類型如下。

[array],[bool],[byte],[char],[datetime],[decimal],[double],[guid],[hashtable],[int16],[int32],[int],[int64],[long],[nullable],[psobject],[regex],[sbyte].[scriptblock],[single],[float],[string],[switch],[timespan],[type],[uint16],[uint32],[uint64],[ XML ]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频区 | 成人福利软件 | 外国一级黄色片 | 91在线视频福利 | 成年免费大片黄在线观看岛国 | 免费国产自久久久久三四区久久 | 国产精品美女一区二区 | 国产女厕一区二区三区在线视 | 成人毛片在线 | 国产精品久久久久久久久久尿 | 美女羞羞视频网站 | 亚洲91在线 | 蜜桃一本色道久久综合亚洲精品冫 | 久久久一区二区三区四区 | 免费日韩片 | 亚洲精品一区二区三区大胸 | 免费观看亚洲视频 | 久久久久九九九女人毛片 | 亚洲码无人客一区二区三区 | 成人免费毛片一 | 免费一及片 | 中文在线观看视频 | 日韩黄色免费电影 | 久久精品com | 国产精品久久久久久久娇妻 | 久久亚洲国产午夜精品理论片 | 亚洲一区成人在线 | 一级电影免费看 | 久久伊人精品视频 | 亚洲视频高清 | 亚洲精品aa | 精品国产乱码一区二区 | 蜜桃网站免费 | 国产精品免费久久久 | 青青草成人免费视频在线 | 欧美日韩国产成人在线 | 日韩av成人 | 久久精品网址 | 国产精品视频一区二区三区四 | 久久艳片 | 曰韩在线视频 |