Windows Powershell使用哈希表
哈希表存放的是对,在哈希表中不再仅仅限制使用数字寻址,可以使用任意类型的数据类型寻址。
创建哈希表
之前使用@()创建数组,现在使用@{}创建哈希表,使用哈希表的键访问对应的值。
PSC:Powershell>$stu=@{Name="小明";Age="12";sex="男"}
PSC:Powershell>$stu
NameValue
---------
Name小明
Age12
sex男
PSC:Powershell>$stu["Name"]
小明
PSC:Powershell>$stu["age"]
12
PSC:Powershell>$stu.Count
3
PSC:Powershell>$stu.Keys
Name
Age
sex
PSC:Powershell>$stu.Values
小明
12
男
在哈希表中存储数组
可以在创建哈希表时就使用数组,因为创建数组和哈希表的的元素关键字不冲突。一个是逗号,一个是分号。
PSC:Powershell>$stu=@{Name="小明";Age="12";sex="男";Books="三国演义","围城","哈姆雷特"}
PSC:Powershell>$stu
NameValue
---------
Books{三国演义,围城,哈姆雷特}
Name小明
Age12
sex男
在哈希表中插入新的键值
在哈希表中插入新的键值很方便,象定义变量一样,可以直接拿来使用
PSC:Powershell>$Student=@{}
PSC:Powershell>$Student.Name="令狐冲"
PSC:Powershell>$Student.School="华山派"
PSC:Powershell>$Student
NameValue
---------
Name令狐冲
School华山派
哈希表值的更新和删除
如果要更新键的值,可以直接重写。如果要删除这个键值对,可以使用Remove方法,参数为Key
PSC:Powershell>$stu
NameValue
---------
Books{三国演义,围城,哈姆雷特}
Name小明
Age12
sex男
PSC:Powershell>$stu.Name="赵强"
PSC:Powershell>$stu.Name
赵强
PSC:Powershell>$stu.Remove("Name")
PSC:Powershell>$stu
NameValue
---------
Books{三国演义,围城,哈姆雷特}
Age12
sex男
使用哈希表格式化输出
在Powershell中哈希表的一个有趣的应用可以用来格式化文本输出。Powershell许多命令的输出结果都是以表格的形式,当然可以使用Format-Table自定义表格格式,例如:
PSC:Powershell>Dir|Format-Table Directory:C:Powershell ModeLastWriteTimeLengthName --------------------------- d----2011/11/2317:25ABC d----2011/11/2918:21myscript PSC:Powershell>Dir|Format-TableFullName,Mode FullNameMode ------------ C:PowershellABCd---- C:Powershellmyscriptd---- C:Powershella.html-a---
上述的命令只能限制表格输出那些列,隐藏那些列。但是对于列的宽度,列标题无能为力,但是有了哈希表就可以实现更多自定义了。
表格的每一个列包含四个属性:
Expression:绑定的表达式
Width:列宽度
Label:列标题
Alignment:列的对齐方式
PSC:Powershell>$column1=@{expression="Name";width=30;label="filename";alignment="left"}
PSC:Powershell>$column2=@{expression="LastWriteTime";width=40;label="lastmodification";alignment="right"}
PSC:Powershell>ls|Format-Table$column1,$column2
filenamelastmodification
-------------------------
ABC2011/11/2317:25:53
myscript2011/11/2918:21:28
a.html2011/11/2418:30:13