国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PowerShell > 正文

Windows Powershell 變量的類型和強(qiáng)類型

2020-10-29 21:04:06
字體:
供稿:網(wǎng)友

變量可以自動(dòng)存儲(chǔ)任何Powershell能夠識(shí)別的類型信息,可以通過$variable的GetType().Name查看和驗(yàn)證Powershell分配給變量的數(shù)據(jù)類型。

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

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

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

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

指定類型定義變量

定義變量時(shí)可以在變量前的中括號(hào)中加入數(shù)據(jù)類型。例如定義一個(gè)Byte類型的變量,因?yàn)锽yte的定義域?yàn)閇0,255],一旦嘗試使用一個(gè)不在定義域中的值賦給該變量就會(huì)顯示一條錯(cuò)誤信息。

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

使用固定類型的優(yōu)點(diǎn)

手動(dòng)地定義類型的一個(gè)重要原因是每個(gè)特殊的數(shù)據(jù)類型都有自己的特殊命令和特殊方法。比如把一個(gè)日期字符串賦給一個(gè)變量,Powershell不會(huì)自動(dòng)把這個(gè)字符串轉(zhuǎn)換成日期對(duì)象賦給一個(gè)變量,因?yàn)镻owershell畢竟是機(jī)器,沒有人那么智能。當(dāng)你在賦值時(shí)指定DateTime類型時(shí),你會(huì)發(fā)現(xiàn)幾乎所有的.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結(jié)點(diǎn)

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

默認(rèn)支持的.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 ]

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乌珠穆沁旗| 延庆县| 元谋县| 浪卡子县| 樟树市| 阿巴嘎旗| 通化市| 南阳市| 漳平市| 开鲁县| 潮州市| 红河县| 芜湖县| 德格县| 香格里拉县| 和田市| 麻江县| 涡阳县| 迭部县| 石阡县| 乐平市| 遵化市| 凯里市| 德昌县| 静安区| 潜江市| 庆阳市| 阿拉善左旗| 图们市| 黔江区| 华阴市| 库车县| 岳普湖县| 肇东市| 奈曼旗| 周口市| 循化| 兴海县| 全椒县| 耒阳市| 恩施市|