濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Windows Powershell 變量的類型和強(qiáng)類型

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

熱門標(biāo)簽:騰訊地圖標(biāo)注中心怎么標(biāo)注 印臺(tái)區(qū)呼叫中心外呼系統(tǒng) 六寸地圖標(biāo)注點(diǎn)怎么刪除 莫拉克電梯系統(tǒng)外呼怎么設(shè)置 新鄭電銷機(jī)器人一個(gè)月多少錢 電話機(jī)器人公司招聘 如何根據(jù)經(jīng)緯度百度地圖標(biāo)注 地圖標(biāo)注的圖案 萬全縣地圖標(biāo)注app

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

PS> (10).gettype().name
Int32
PS> (9999999999999999).gettype().name
Int64
PS> (3.14).gettype().name
Double
PS> (3.14d).gettype().name
Decimal
PS> ("WWW.MOSSFLY.COM").gettype().name
String
PS> (Get-Date).gettype().name
DateTimePowershell

會(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=101
PS> $b
101
PS> $b=255
PS> $b
255
PS> $b.gettype()

IsPublic IsSerial Name                   BaseType
-------- -------- ----                   --------
True   True   Byte                   System.ValueType

PS> $b=256

Cannot 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> $date

2012年12月20日 12:45:00

PS> $date.DayOfWeek
Thursday
PS> $date.DayOfYear
355
PS> $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 ]

您可能感興趣的文章:
  • Windows Powershell 自動(dòng)化變量
  • Windows Powershell 環(huán)境變量
  • Windows Powershell 變量的作用域
  • Windows Powershell 變量的幕后管理
  • Windows Powershell 命令返回?cái)?shù)組

標(biāo)簽:南昌 湘潭 疫苗接種 汕頭 天水 襄陽 喀什 臨汾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Windows Powershell 變量的類型和強(qiáng)類型》,本文關(guān)鍵詞  Windows,Powershell,變量,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Windows Powershell 變量的類型和強(qiáng)類型》相關(guān)的同類信息!
  • 本頁收集關(guān)于Windows Powershell 變量的類型和強(qiáng)類型的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    神农架林区| 化州市| 岑巩县| 青铜峡市| 澎湖县| 卓尼县| 越西县| 汶川县| 阳春市| 汤阴县| 天气| 荔浦县| 襄城县| 瑞丽市| 紫云| 边坝县| 全椒县| 乌苏市| 金坛市| 苍梧县| 崇信县| 嵊州市| 兴城市| 庆云县| 武城县| 林周县| 广南县| 河池市| 武山县| 尖扎县| 沙洋县| 朝阳市| 临朐县| 密云县| 忻城县| 建湖县| 陆丰市| 临漳县| 土默特左旗| 涪陵区| 五峰|