执行PowerShell代码时出错

时间:2018-06-07 10:46:50

标签: powershell powershell-v5.0

我的代码没有打印存储在数组中的值,而是打印System.Collections.Hashtable[$i]

$text = Read-Host
$id = @{}
for ($i=0; $i -le $text; $i++)
{
    $id[$i] = Read-Host
}
for ($i=0; $i -le $text; $i++)
{
    Write-Host $id[$i] 
}

输出继电器:

PS C:\Users\mifi>.\1.ps1
2
Keshav
kk
kk
System.Collections.Hashtable[0]
System.Collections.Hashtable[1]
System.Collections.Hashtable[2]

This is the Screenshots of the Ouput

每当我运行此代码时,Output都会产生上述形式。

1 个答案:

答案 0 :(得分:3)

请不要发布您编写的代码或从内存中输入的代码。你得到像

这样的输出
System.Collections.Hashtable[0]
System.Collections.Hashtable[1]
System.Collections.Hashtable[2]

因为在您的实际代码中您有一个声明

Write-Host "$id[$i]"

而不是

Write-Host $id[$i]

您的示例代码假装有。

PowerShell只在双引号字符串中进行简单的变量扩展。它不会像人们期望的那样扩展更复杂的表达式(如索引或属性访问)。表达式"$id[$i]"被扩展为变量$id的字符串表示形式(在本例中是对象类的名称:“System.Collections.Hashtable”),后跟一个开放的方括号,变量$i的值和结束方括号。