在Powershell中创建和访问数组值[重复]

问题描述 投票:2回答:1

我正在尝试创建一个PowerShell脚本,如果已经映射,则首先检查打印机列表。如果未映射列表中的打印机,则它将映射打印机。

单独检查打印机工作正常。当我创建一个数组和一个for循环时,由于打印机名称错误,它停止工作。

似乎我无法访问数组的单个项目。

这是我目前的代码段:

[string[]] $printernames = "Buero Drucker","hase"
for($i = 0; $i -lt $printernames.Length; $i++)
{
    $printerexists = [Boolean](Get-WmiObject win32_printer -Filter "Name = $printernames[$i]")
    Write-Host "Printer $printernames[$i] exists: $printerexists"
}

现在在调用$printernames[0]时,我希望得到以下内容:

"Buero Drucker"

相反,我收到以下内容:

"Buero Drucker hase[0]"

看起来变量不是真正的数组,但我不知道为什么。

=====编辑=====

for循环工作正常,迭代2次。因此,我希望数组创建是正确的,但访问变量是错误的

我已经检查了变量$ i。控制台输出如下:

Printer Buero Drucker hase[0] exists:  False
Printer Buero Drucker hase[1] exists:  False
arrays powershell for-loop
1个回答
1
投票

在括号中扩展变量有点烦人,你遇到同样的问题

$Var = "Something"
"$Var.Property"

它将返回"Something.Property"

你想用这个:

 "Name = $($printernames[$i])"

包装你需要在$()内扩展的任何东西,它将按预期工作,目前powershell只匹配var名称的末尾,并忽略任何.[等。

© www.soinside.com 2019 - 2024. All rights reserved.