當(dāng)我們把一個命令的執(zhí)行結(jié)果保存到一個變量中,可能會認(rèn)為變量存放的是純文本。
但是,事實(shí)上Powershell會把文本按每一行作為元素存為數(shù)組。如果一個命令的返回值不止一個結(jié)果時,Powershell也會自動把結(jié)果存儲為數(shù)組。
PS C:Powershell> $IPcfg=ipconfigPS C:Powershell> $IPcfgWindows IP ConfigurationEthernet adapter Local Area Connection: Connection-specific DNS Suffix . : *** Link-local IPv6 Address . . . . . : *** IPv4 Address. . . . . . . . . . . : 192.168.140.128 Subnet Mask . . . . . . . . . . . : 255.255.252.0 Default Gateway . . . . . . . . . : 192.168.140.1Tunnel adapter isatap.mossfly.com: Connection-specific DNS Suffix . : *** Link-local IPv6 Address . . . . . : *** Default Gateway . . . . . . . . . :***Tunnel adapter Teredo Tunneling Pseudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :PS C:Powershell> $IPcfg.Count22
使用數(shù)組存儲結(jié)果
判斷一個變量是否為數(shù)組
PS C:Powershell> $ip=ipconfigPS C:Powershell> $ip -is [array]TruePS C:Powershell> "abac" -is [array]FalsePS C:Powershell> $str="字符串"PS C:Powershell> $str.ToCharArray() -is [array]True
查看數(shù)組的元素個數(shù)用$array.Count屬性。訪問第x個元素,使用$array[x-1],因?yàn)閿?shù)組是以0開始索引的。
使用管道對數(shù)組進(jìn)一步處理
PS C:Powershell> ipconfig | Select-String "IP"Windows IP Configuration Link-local IPv6 Address . . . . . : *** IPv4 Address. . . . . . . . . . . : *** Link-local IPv6 Address . . . . . : ***
使用真實(shí)的對象操作
為什么不愿把IPconfig返回的結(jié)果稱為對象,因?yàn)樗皇钦嬲鼵mdlet命令,真正的Powershell命令返回的數(shù)組元素可不止一個字符串,它是一個內(nèi)容豐富的對象。
PS C:Powershell> ls Directory: C:PowershellMode LastWriteTime Length Name---- ------------- ------ ----d---- 2011/11/23 17:25 ABCd---- 2011/11/29 18:21 myscript-a--- 2011/11/24 18:30 67580 a.html-a--- 2011/11/24 20:04 26384 a.txt-a--- 2011/11/24 20:26 12060 alias-a--- 2011/11/24 20:27 12060 alias.ps1-a--- 2011/11/23 17:25 0 b.txt-a--- 2011/11/23 17:25 0 c.txt-a--- 2011/11/23 17:25 0 d.txt-a--- 2011/11/25 11:20 556 employee.xml-a--- 2011/11/29 19:23 21466 function.ps1-a--- 2011/11/28 11:12 186 LogoTestConfig.xml-a--- 2011/11/24 17:37 7420 name.html-a--- 2011/11/28 15:30 63 ping.bat-a--- 2011/11/24 17:44 735892 Powershell_Cmdlets.html-a--- 2011/11/30 16:04 2556 psdrive.html-a--- 2011/12/2 18:47 140 test.ps1-a--- 2011/11/23 17:37 242 test.txt-a--- 2011/11/28 16:42 170 test.vbsPS C:Powershell> $result=lsPS C:Powershell> $result.Count20
數(shù)組的每一個元素存放的是一個System.IO.DirectoryInfo對象。
當(dāng)我們輸出這些對象時,Powershell會自動幫我們把它轉(zhuǎn)換成友好的文本格式。
PS C:Powershell> $result[0].gettype().fullnameSystem.IO.DirectoryInfoPS C:Powershell> $result[0] Directory: C:PowershellMode LastWriteTime Length Name---- ------------- ------ ----d---- 2011/11/23 17:25 ABC對于任何一個對象都可以使用Format-List * 查看它所有的屬性和方法。PS C:Powershell> $result[0] | fl *PSPath : Microsoft.PowerShell.CoreFileSystem::C:PowershellABCPSParentPath : Microsoft.PowerShell.CoreFileSystem::C:PowershellPSChildName : ABCPSDrive : CPSProvider : Microsoft.PowerShell.CoreFileSystemPSIsContainer : TrueBaseName : ABCMode : d----Name : ABCParent : PowershellExists : TrueRoot : C:FullName : C:PowershellABCExtension :CreationTime : 2011/11/23 17:25:53CreationTimeUtc : 2011/11/23 9:25:53LastAccessTime : 2011/11/23 17:25:53LastAccessTimeUtc : 2011/11/23 9:25:53LastWriteTime : 2011/11/23 17:25:53LastWriteTimeUtc : 2011/11/23 9:25:53Attributes : Directory
新聞熱點(diǎn)
疑難解答
圖片精選