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="";

如果我们使用加法运算:

$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

PowerShell中的基础数据类型的更多相关文章

  1. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  2. Python中的基础数据类型

    Python中基础数据类型 1.数字 整型a=12或者a=int(2),本质上各种数据类型都可看成是类,声明一个变量时候则是在实例化一个类. 整型具备的功能: class int(object): & ...

  3. Delphi中的基础数据类型

    参考http://www.cnblogs.com/del/archive/2007/12/04/982167.html 在学习之初,在这么多的数据类型中,最好记住这五种标准数据类型(整型.实型.字符型 ...

  4. C#中的基础数据类型

    一.C#有15个预定义类型,13个值类型,两个引用类型(string和object): 1.整型 int a=15; short a=15; 2.浮点类型 float a=12.9; double a ...

  5. 二、Windows基础数据类型

    六.Windows Data Types 简介: 6.1.这些数据类型都是C语言数据类型的再次的进行包装. 6.2.因为考虑到如果使用的是C中的基础数据类型可能无法表示,想表示的精准的含义. 6.3. ...

  6. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  7. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  8. python基础数据类型--list列表

    列表: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = [‘alex ...

  9. python 的基础 学习 第五天 基础数据类型的操作方法

    1,列表的基本操作方法 1,列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: ...

随机推荐

  1. Macaca自动化测试之PC端测试

    Macaca是一套完整的自动化测试解决方案.由阿里巴巴公司开源: http://macacajs.github.io/macaca/ 特点: 同时支持PC端和移动端(Android.iOS)自动化测试 ...

  2. ThinkPHP学习(一)

    下载3.2框架后,解压缩到web目录下面,可以看到初始的目录结构如下: 3.2版本相比之前的版本自带了一个完整的应用目录结构和默认的应用入口文件,开发人员可以在这个基 础之上灵活调整.其中, Appl ...

  3. mysql权限管理

    经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...

  4. mybatis入门基础(六)----高级映射(一对一,一对多,多对多)

    一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id INT NOT NULL AUTO_INCREMENT, itemsname ) NOT ...

  5. 3.Code-First 约定(EF Code-First系列)

    前面,我们已经了解了Code-First利用领域类,怎么为我们创建数据库的简单示例.现在我们来学习一下Code-First约定吧. 什么是约定 约定说白了,就是基于一套规矩办事,这里就是基于你定义好的 ...

  6. 基于STM32Cube的DAC数模转化

    1. STM32Cube配置 1.1 DAC配置   1.2 TIM6 配置 1.3 利用Cube产生工程程序,MDK打开软件       在主循环上添加语句:      HAL_TIM_Base_S ...

  7. c# 连接Mysql数据库

    mysql.data.dll下载_c#连接mysql必要插件 全部版本下载:http://hovertree.com/h/bjaf/0sft36s9.htm mysql.data.dll是C#操作MY ...

  8. javascript处理HTML的Encode(转码)和Decode(解码)总结

    HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器 ...

  9. Lind.DDD.ConfigConstants统一管理系统配置

    回到目录 Lind.DDD.ConfigConstants属于新添加的组件,用来帮助我们安全的进行配置消息的管理,我们在开发项目时,有个感觉,你的config配置项会越来越多,越来越难以阅读,随着你引 ...

  10. 《C#微信开发系列(4)-接收 / 返回文本消息》

    4.0接收 / 返回文本消息 ①接收/返回文本消息原理说明 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,着手开发之前先行阅读微信公众平台接收普通消息 ...