0

当谈到使用 powershell 编写脚本时(或者一般来说,当涉及到脚本编写时),我是相当新的。我遇到的问题是我有一堆我想在一行中输出的变量。这不是原始但简化的代码:

$a = 1
$b = 2
$c = $a; $b;
Write-output $c

输出如下所示:

1
2

您可能会猜到我希望输出的样子:

12

我已经在网上搜索以获得解决方案,但似乎没有任何效果。我究竟做错了什么?

4

2 回答 2

4

现在你只是分配$a$c然后$b分别输出 - 使用@()数组子表达式运算符来创建$c

$c = @($a; $b)

然后,使用-join运算符将​​两个值连接成一个字符串:

$c -join ''
于 2021-07-13T13:48:58.073 回答
0

Select-Object您可以使用成员访问或检索属性值使事情变得更轻松。检索到值后,您可以对其进行操作。

尚不完全清楚您真正需要什么,但以下是如何从代码中获取所需系统数据的蓝图。

# Get Serial Number
$serial = Get-CimInstance CIM_BIOSElement | Select-Object -Expand SerialNumber

# Serial Without Last Digit
$serialMinusLast = $serial -replace '.$'

# First 7 characters of Serial Number
# Only works when serial is 7 or more characters
$serial.Substring(0,7)
# Always works
$serial -replace '(?<=^.{7}).*$'

# Get Model
$model = Get-CimInstance Win32_ComputerSystem | Select-Object -Expand Model

# Get First Character and Last 4 Characters of Model
$modelSubString = $model -replace '^(.).*(.{4})$','$1$2'

# Output <model substring - serial number substring>
"{0}-{1}" -f $modelSubString,$serialMinusLast

# Output <model - serial number>
"{0}-{1}" -f $model,$serial

使用语法$object | Select-Object -Expand PropertyProperty仅由于使用-Expandor而检索 的值-ExpandProperty。您可以选择使用使用语法的成员访问$object.Property来实现相同的结果。

如果您有一个元素数组,则可以使用-join运算符创建这些数组元素的单个字符串。

$array = 1,2,3,'go'
# single string
$array -join ''

字符串格式运算符-f可用于将组件连接成单个字符串。它允许您轻松地在子字符串之间添加额外的字符。

于 2021-07-13T14:29:19.743 回答