博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell中的基础数据类型
阅读量:6638 次
发布时间:2019-06-25

本文共 2038 字,大约阅读时间需要 6 分钟。

PowerShell是一个面向对象的语言,在申明变量的时候不强制要求申明数据类型,使用$开头来申明变量即可。

基本数据类型

PowerShell本身是基于.Net开发出来的,所以在.Net中的基本数据类型,在PowerShell中也可以使用,只是在PowerShell中用”[]”来标识具体的数据类型。比如[int],[long],[string],[bool],[double]等。

使用-is来判断某个变量是否指定的数据类型,和C#中的is关键字是一样的。比如:

$a=10; 
$a 
-is [int] 
$a 
-is [double]

第二行返回True,第三行返回False。

我们也可以在定义变量时指定数据类型。比如我们要定义decimal类型的10,那么可以写为:

[decimal]
$c=10

$c.GetType() 可以看到我们的类型为Decimal。

数据类型转换

关于默认数据类型转换,PowerShell和C#的行为有所不同。PowerShell会根据第一个变量的类型作为目标类型,然后将运算后面的联系转换为第一个类型。比如我们申明两个变量:

$a=10; 
$b=
"
10
";

如果我们使用加法运算:

$a+
$b

该运算会返回20,因为第一个变量是int类型的,所以后面的变量都会转换为int类型。如果我们调整变量的顺序:

$b+
$a

该运算返回的结果为1010,因为第一个变量是string类型。习惯了C#的默认类型转换,那么我们可以强制进行类型转换后再进行运算。强制类型转换的方法也是与C#相同。

比如我们要按int类型来计算,那么我们第二个加法可以改为:

[int]
$b+
$a

我们也可以使用-as命令,那么第二个加法改为:

(
$b 
-as [int])+
$a

List/Array类型

我们平时使用的各种Get-XXX命令,很多都是返回对应类型的Array,比如Get-Process.

如果我们要定义一个集合,那么可以使用”@(对象1,对象2,对象3…)”的格式申明集合。比如我们定义一个字符串集合:

$a=@('a','bb','ccc')

其实不使用@和括号也是可以的,只需要用逗号分割各个Item即可。

$a='aaa','bb','c'

如果是申明一个空的集合,就必须写为:

$a=@()

与C#不同的是,在PowerShell中,往集合中添加元素,可以使用+=符号。

$a=@() 
$a+=
"
abc
" 
$a+=
"
dddd
" 
Write-Host 
$a

如果要移除某个元素,那么就不简单了,需要使用Where查询(简写为?),找出要保留的元素,然后将保留的元素集合再重新赋值会变量。比如对于字符串集合,我们要移除字符c,那么操作如下:

$a=@('aaa','bb','c') 
$a
$a | ? {
$_ 
-ne 'c'} 
Write-Host 
$a

访问某个元素使用[idx]即可和C#相同。至于对集合的各种操作,可以参见我。

Hashtable/Dictionary类型

哈希表就是一个Key-Value对的集合。哈希表的创建格式如下:

@{Key1=Value1;Key2=Value2;…}

这里Key一般是字符串,但是并不需要用引号引起来(当然,使用了引号更好),Value可以是任意类型。比如我们创建一个员工和部门的Hashtable,命令如下:

$a=@{Devin=
"
IT
";Edward=
"
Finance
";Jeneen=
"
Sale
"}

使用keys属性可以获得哈希表的Key列表,使用values属性可以获得Value列表。

如果要往哈希表中添加元素,可以使用.Add(Key,Value)方法。比如添加一个员工:

$a.Add(
"
Julia
",
"
Logisitcs
")

这里需要注意的是Key必须要带引号。而且哈希表的Key是不允许重复的,如果已经存在相同的值,添加会报错。可以先判断Key是否存在,然后再添加:

if(
-not 
$a.ContainsKey(
"
Julia
")) 
$a.Add(
"
Julia
",
"
Logisitcs
"
}

如果要移除某个Key对应的元素,那么可以调用.Remove(Key)函数即可。

$a.Remove(
"
Julia
")

如果要访问某个Key对应的值,有两种方法:

$a[
"
Devin
"
$a.Devin

需要注意的是,直接对哈希表进行Sort-Object是没有效的,我们必须先调用GetEnumerator方法,把哈希表转换后在执行Sort。

$a.GetEnumerator() | Sort-Object Name

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/p/4521367.html,如需转载请自行联系原作者

你可能感兴趣的文章
Hadoop运维记录系列(一)
查看>>
你理解这些Cisco NAT分类和原理吗
查看>>
门户网站CDN实战优化教学案例分享
查看>>
发现和使用OneNote的计算器功能
查看>>
SAP R3 采购申请相关简单操作 :附Oracle后台数据库对应表明细。
查看>>
倾听是谈话中最基本的技巧
查看>>
KVM虚拟化技术之网卡流量聚合
查看>>
CentOS查看内核版本、系统版本、系统位数
查看>>
11G Oracle RAC添加新表空间时数据文件误放置到本地文件系统的修正
查看>>
Anroid Studio第七期 - 语音动画
查看>>
用户空间访问I2C设备驱动
查看>>
Android第五期 - 更新自己的apk本地与网络两种方法
查看>>
/usr/bin/which: no ssh-copy-id in 和ssh: Could not resolve hostname
查看>>
性能测试报告编写技巧
查看>>
【博客话题】项目的成果,是整个项目团队的体现
查看>>
二十年后的回眸(2)——顺风顺水的前三年
查看>>
6.Azure负载均衡(下)
查看>>
32.Azure制作自定义的Liunx虚拟机映像
查看>>
谁来创建中国的SpaceX
查看>>
新浪微博:移动化、商业化
查看>>