PowerShell 字符串基础

创建字符串变量

简单字符串

使用双引号定义支持变量扩展和转义字符的字符串。

$myString = "Hello World, the time is $(Get-Date)"

使用单引号定义字面量字符串,不进行变量扩展或转义字符解释。

$myString = 'Hello World, the variable is $myVar and the newline is `n'

多行字符串

使用 here 字符串创建跨多行的文本块。以 @" 开始,以 "@ 结束。

$multiLine = @"
First line of text
Second line with "quotes"
Third line with variable: $env:USERNAME
"@

使用单引号 here 字符串创建字面量多行文本。

$literalMulti = @'
This is a literal here string
Variables like $env:COMPUTERNAME are not expanded
Escape sequences like `n are treated literally
'@

特殊字符

在扩展字符串中,可使用反引号转义序列插入特殊字符。

$text = "Column1`tColumn2`tColumn3`n" + "Value1`tValue2`tValue3"

在字符串中嵌入引号时,需使用两个相同的引号字符。

$myString = "This includes ""double quotes"" in the text."
$myString = 'This includes ''single quotes'' in the text.'

动态信息

在扩展字符串中直接包含变量名以插入其值。

$user = $env:USERNAME
$message = "Current user: $user"

使用子表达式 $() 在字符串中执行复杂操作并插入结果。

$header = "Report"
$divider = "$('=' * ($header.Length + 10))"
$report = "$header`n$divider"

插入格式化信息

使用格式化操作符 -f 将数据格式化为特定样式。

$template = "{0,-10} {1,10:N2} {2,10:P0}"
$data = $template -f "Item1", 1234.567, 0.756

语法结构

{索引[,对齐][:格式字符串]}
  • 索引:从0开始,对应 -f 后面的值数组位置
  • 对齐(可选):正数右对齐,负数左对齐,数字表示字段宽度
  • 格式字符串(可选):指定具体的格式化方式
对齐

可以在格式字符串中指定对齐方式:正数表示右对齐,负数表示左对齐。

格式 描述 示例 输出结果
{N,width} 右对齐,指定宽度 "{0,10}" -f "Pi" Pi
{N,-width} 左对齐,指定宽度 "{0,-10}" -f "Pi" Pi
格式字符串

标准数值格式

格式 名称 描述 示例 输出结果
C/c 货币格式 显示为货币值 "{0:C}" -f 3.1415926535 ¥3.14
D/d 十进制 仅整数,可指定长度 "{0:D6}" -f 314 000314
E/e 科学计数法 指数表示法,可指定精度 "{0:E4}" -f 3.1415926535 3.1416E+000
F/f 定点数 固定小数位数 "{0:F5}" -f 3.1415926535 3.14159
G/g 常规格式 最紧凑表示法,自动选择 "{0:G3}" -f 3.1415926535 3.14
N/n 数字格式 带千位分隔符和小数 "{0:N2}" -f 31415.926535 31,415.93
P/p 百分比 百分比表示 "{0:P3}" -f 0.31415926535 31.416 %
R/r 往返过程 保证往返转换精度 "{0:R}" -f 3.1415926535 3.1415926535
X/x 十六进制 十六进制表示,大小写敏感 "{0:X}" -f 314 13A

自定义数值格式字符串

格式 名称 描述与功能 示例 输出结果
'text' 字面字符串 原样插入文本 "{0:π=#.###}" -f 3.1415926535 π=3.142
0 零占位符 强制显示数字,不足补零 "{0:000.0000}" -f 3.1415926535 003.1416
# 数字占位符 可选数字位,无数字时不显示 "{0:##.##}" -f 3.1415926535 3.14
. 小数点 确定小数点的位置 "{0:#.000}" -f 3.1415926535 3.142
, 千位分隔符 添加组分隔符 "{0:#,##0.0000}" -f 3141.5926535 3,141.5927
, 数字缩放 缩放数字(每逗号除以1000) "{0:#,,.000}" -f 3141592.6535 3.142
% 百分比占位符 乘以100并添加百分号 "{0:0.00%}" -f 0.031415926535 3.14%
E+0 科学记数法(带符号) 强制显示指数符号 "{0:0.00E+00}" -f 3141.5926535 3.14E+03
E-0 科学记数法(仅负) 仅负指数时显示符号 "{0:0.00E-00}" -f 0.0031415926535 3.14E-03
; 节分隔符 条件格式:正数;负数;零 "{0:正数;负数;零}" -f 3.1415926535 正数
\ 转义字符 使特殊字符作为字面量 "{0:#\#.\#\#}" -f 3.1415926535 3#.14#

日期时间格式字符串

格式 描述 示例 输出结果
d 短日期 "{0:d}" -f (Get-Date) 2026/1/28
D 长日期 "{0:D}" -f (Get-Date) 2026年1月28日
t 短时间 "{0:t}" -f (Get-Date) 12:30
T 长时间 "{0:T}" -f (Get-Date) 12:30:45
f 完整日期时间(短时间) "{0:f}" -f (Get-Date) 2026年1月28日 12:30
F 完整日期时间(长时间) "{0:F}" -f (Get-Date) 2026年1月28日 12:30:45
g 常规(短日期短时间) "{0:g}" -f (Get-Date) 2026/1/28 12:30
G 常规(短日期长时间) "{0:G}" -f (Get-Date) 2026/1/28 12:30:45
M/m 月日模式 "{0:M}" -f (Get-Date) 1月28日
Y/y 年月模式 "{0:Y}" -f (Get-Date) 2026年1月

自定义日期时间格式

格式 描述 示例 输出结果
yyyy 四位年份 "{0:yyyy}" -f (Get-Date) 2026
MM 两位月份 "{0:MM}" -f (Get-Date) 01
dd 两位日期 "{0:dd}" -f (Get-Date) 28
HH 24小时制小时 "{0:HH}" -f (Get-Date) 12
hh 12小时制小时 "{0:hh}" -f (Get-Date) 12
mm 分钟 "{0:mm}" -f (Get-Date) 30
ss "{0:ss}" -f (Get-Date) 45
tt AM/PM指示器 "{0:hh:mm tt}" -f (Get-Date) 12:30 下午
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容