Board logo

标题: [转载教程] 【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧) [打印本页]

作者: HAT    时间: 2013-8-30 21:16     标题: 【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧)

【探索PowerShell 】【一】初识http://www.bathome.net/thread-26144-1-1.html
【探索PowerShell 】【二】基本操作http://www.bathome.net/thread-26148-1-1.html
【探索PowerShell 】【三】PowerShell下使用Aliaseshttp://www.bathome.net/thread-26149-1-1.html
【探索PowerShell 】【四】PowerShell的对象、格式与参数http://www.bathome.net/thread-26159-1-1.html
【探索PowerShell 】【五】PowerShell基础知识http://www.bathome.net/thread-26162-1-1.html
【探索PowerShell 】【六】脚本基础简要http://www.bathome.net/thread-26163-1-1.html
【探索PowerShell 】【七】变量http://www.bathome.net/thread-26165-1-1.html
【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧)http://www.bathome.net/thread-26166-1-1.html
【探索PowerShell 】【九】条件控制、逻辑http://www.bathome.net/thread-26167-1-1.html
【探索PowerShell 】【十】循环语句http://www.bathome.net/thread-26168-1-1.html
【探索PowerShell 】【十一】函数http://www.bathome.net/thread-26174-1-1.html
【探索PowerShell 】【十二】筛选器 - Filtershttp://www.bathome.net/thread-26187-1-1.html
【探索PowerShell 】【十三】WMI对象http://www.bathome.net/thread-26188-1-1.html
【探索PowerShell 】【十四】使用WMI对象的方法http://www.bathome.net/thread-26189-1-1.html
【探索PowerShell 】【十五】引号与转义字符http://www.bathome.net/thread-26190-1-1.html

我们经常在程序设计中用到的数组,同样在脚本中很常用。本节就详细介绍一下数组,以及哈希表在PowerShell中的使用。

数组

在PowerShell中,声明一个变量为数组时,需要使用符号"@",例如:
  1. $strUsers=@("user1","user2","user3")
复制代码
这样,我们就声明了一个具有3个成员的数组。查看它的值,使用:
  1. $strUsers
复制代码
PS E:\> $strUsers=@("user1","user2","user3")
PS E:\> $strUsers
user1
user2
user3


还有一些其他的操作,如统计一个数组的成员数目:
  1. $strUsers.Count
复制代码
查看或者为数组成员单独赋值(需要注意的是,PowerShell与大多数程序语言一样,数组成员下标从0开始计数):
  1. $strUsers[0]
复制代码
  1. $strUsers[1]="marui"
复制代码
也可以使用加号合并数组,如:

PS E:\> $x=@(1,2,3)
PS E:\> $y=@(4,5,6)
PS E:\> $z=$x+$y
PS E:\> $z
1
2
3
4
5
6


哈希表

哈希表,也就是字典,是一种非常优秀的数据结构,允许我们使用关键字进行查询,它几乎没有性能损失,这些都是因为它的基本结构能够很好的符合计算机存储运算特性。

在声明哈希表变量时,同样需要用到符号"@",如:
  1. $age=@{"MaRui"=21;"Lee"=27;"Tom"=53}
复制代码
PS E:\> $age=@{"MaRui"=21;"Lee"=27;"Tom"=53}
PS E:\> $age

Name                           Value
----                           -----
MaRui                          21
Tom                            53
Lee                            27


与数组相似的也有如下操作:
  1. # 查询
  2. $age["MaRui"]
  3. # 增加(注意,增加的同时一定要赋值,否则不会添加新条目)
  4. $age["Ma"]=24
  5. # 修改
  6. $age["Ma"]=25
  7. # 删除(注意,使用圆括号)
  8. $age.remove("Ma")
  9. # 清除哈希表
  10. $age.clear()
复制代码
这节的内容很简单,就讲到这里。感谢各位花时间来浏览我的博客!

下去之后,有人问及我在PowerShell中如何进行复制粘贴,其实方法很简单,使用鼠标右键就可以了。

复制

我使用一个cmdlet来查看BIOS信息,并且复制它:
  1. get-wmiobject -class Win32_BIOS
复制代码
PS E:\> get-wmiobject -class Win32_BIOS


SMBIOSBIOSVersion : 8HET40WW(1.33)
Manufacturer      : LENOVO
Name              : Default System BIOS
SerialNumber      : R6K7H8A
Version           : LENOVO - 123


请各位试试复制下面的脚本内容(此脚本用来查看BIOS的详细信息):
  1. $info = get-wmiobject -class Win32_BIOS -namespace root\CIMV2 -comp .
  2. foreach ($objItem in $info) {
  3. write-host "BIOS Characteristics: " $objItem.BiosCharacteristics
  4. write-host "BIOS Version: " $objItem.BIOSVersion
  5. write-host "Build Number: " $objItem.BuildNumber
  6. write-host "Caption: " $objItem.Caption
  7. write-host "Code Set: " $objItem.CodeSet
  8. write-host "Current Language: " $objItem.CurrentLanguage
  9. write-host "Description: " $objItem.Description
  10. write-host "Identification Code: " $objItem.IdentificationCode
  11. write-host "Installable Languages: " $objItem.InstallableLanguages
  12. write-host "Installation Date: " $objItem.InstallDate
  13. write-host "Language Edition: " $objItem.LanguageEdition
  14. write-host "List Of Languages: " $objItem.ListOfLanguages
  15. write-host "Manufacturer: " $objItem.Manufacturer
  16. write-host "Name: " $objItem.Name
  17. write-host "Other Target Operating System: " $objItem.OtherTargetOS
  18. write-host "Primary BIOS: " $objItem.PrimaryBIOS
  19. write-host "Release Date: " $objItem.ReleaseDate
  20. write-host "Serial Number: " $objItem.SerialNumber
  21. write-host "SMBIOS BIOS Version: " $objItem.SMBIOSBIOSVersion
  22. write-host "SMBIOS Major Version: " $objItem.SMBIOSMajorVersion
  23. write-host "SMBIOS Minor Version: " $objItem.SMBIOSMinorVersion
  24. write-host "SMBIOS Present: " $objItem.SMBIOSPresent
  25. write-host "Software Element ID: " $objItem.SoftwareElementID
  26. write-host "Software Element State: " $objItem.SoftwareElementState
  27. write-host "Status: " $objItem.Status
  28. write-host "Target Operating System: " $objItem.TargetOperatingSystem
  29. write-host "Version: " $objItem.Version
  30. write-host
  31. }
复制代码
本文出自 “马睿的技术博客” 博客,请务必保留此出处http://marui.blog.51cto.com/1034148/293506




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2