约 2102 字

约 11 分钟

#数据类型

#简介

PowerShell 建立在 .NET 之上,变量中保存的值都是 .NET 对象。常见的字符串、整数、浮点数、布尔值和日期时间都有对应的 .NET 类型。PowerShell 会根据赋值自动推断类型,也可以强制指定类型。

#常用类型

类型加速器.NET 类型示例
[string]System.String"hello"
[int]System.Int3242
[double]System.Double3.14
[bool]System.Boolean$true
[datetime]System.DateTimeGet-Date

使用 [类型] 语法可以声明变量或参数的类型:

[string]$name = "PowerShell"
[int]$count = 10
[double]$ratio = 0.75
[bool]$enabled = $true
[datetime]$today = Get-Date

#类型加速器

类型加速器是 .NET 类型的简写。除了上表中的类型,常用的还有:

[array]      # System.Array
[hashtable]  # System.Collections.Hashtable
[pscustomobject] # System.Management.Automation.PSCustomObject
[xml]        # System.Xml.XmlDocument

查看某个类型加速器对应的完整类型:

> [int]
System.Int32

#类型转换

PowerShell 会尝试在需要时自动转换类型:

> $a = "10"
> $a + 5
105

上面把 "10" 当成了字符串进行拼接。如果要按数值计算,需要显式转换:

> [int]$a + 5
15

也可以使用 -as 运算符进行转换,转换失败时返回 $null:

> "abc" -as [int]
> "42" -as [int]
42

#布尔值与 null

PowerShell 使用 $true 和 $false 表示布尔值:

> $true
True
> $false
False

$null 表示空值,通常用于判断变量是否为空:

> $value = $null
> $value -eq $null
True
> if ($null -eq $value) { "empty" }
empty
  • 在比较中建议把 $null 放在左侧,避免与数组比较时出现意外结果。
  • 空字符串 ""、数字 0 和空数组在布尔上下文中都会被视作 $false。

#GetType()

所有对象都可以调用 GetType() 查看其实际类型:

> $name = "PowerShell"
> $name.GetType().FullName
System.String
> (42).GetType().Name
Int32

对于通过管道得到的对象,也可以结合 Get-Member 查看类型和成员,详见 Get-Member 帮助手册。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2