创建字符串变量
简单字符串
使用双引号定义支持变量扩展和转义字符的字符串。
$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 下午 |