Powershell 如何使用变量从哈希表打印数据?

Powershell 如何使用变量从哈希表打印数据?,powershell,hashtable,Powershell,Hashtable,我想打印表中的数据。当我使用Read Host时,此代码不起作用 我怎样才能做到这一点? (对不起我的英语) 我的代码在这里: $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) $SqlConnection.Close() $cureentData = Get-Date -format "yyyy-M-d" $table = $DataSet.Tables[0] $i=0; $hash = @{};

我想打印表中的数据。当我使用Read Host时,此代码不起作用

我怎样才能做到这一点? (对不起我的英语)

我的代码在这里:

$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

$SqlConnection.Close()
$cureentData = Get-Date -format "yyyy-M-d"

$table = $DataSet.Tables[0]

$i=0;
$hash = @{};     
foreach ($row in $table)
{

 $hash.Add(($i),(@{ 
'app_id' = ($row.app_id) 
 'app_guid' = ($row.app_guid) 
 'app_nazwa_pliku' = ($row.app_nazwa_pliku) 
})) 

Write-Host [$i] "Nr sprawy:" $row.sp_numer "Zakończono:" $row.ak_zakonczono"-" $row.app_guid ;
$i++;
}

 if($table.Rows.Count -gt 1)
  {
   $selected = Read-Host -Prompt 'Który z plików chcesz zmienić?';
   ($hash.$selected).app_guid; #working only if $selected is $selected=5 without Read-Host
   ($hash[$selected]).app_guid; #working only if $selected is $selected=5 without Read-Host
   ($hash.5).app_guid; #working, but i need use variable
}

有人能帮我吗?

您的问题似乎是用作密钥的项目的类型<代码>读取主机返回一个
[字符串]
。。。因此,从中得到的数字是一个数字字符串,而不是
[int]
。将其强制为
[int]
,则查找工作正常。[咧嘴笑]这是一个例子

$HashTable = @{}
foreach ($Index in 0..10)
    {
    $HashTable.Add($Index, 
        @{
        Pow2 = [math]::Pow($Index, 2)
        Pow3 = [math]::Pow($Index, 3)
        })
    }

$HTKey = [int](Read-Host 'Enter a number from 0 to 10 to see the cube of it ')

$HashTable[$HTKey].Pow3
输入的数字=
3

结果=
27

$selected不是整数
读取主机
将始终返回字符串。您使用数字键构建了哈希表。因此,在最简单的形式中,您需要强制输入整数

[int]$selected = Read-Host -Prompt 'Który z plików chcesz zmienić?';

请注意,由于您可以在
Read Host
中键入任何需要的内容,因此在尝试将数据用作整数之前,您应该进行一些数据验证

更改哈希表 您还可以通过在哈希表生成中使用字符串来降低这种复杂性

$hash.Add(("$i"),(@{   
使用这种方法,您不必更改
读取主机
提示输出

改进你的选择方法
根据任务所需的复杂性,您可能可以选择

您没有显示足够的代码。如何读取
$table
变量?您是否在某个时候启动了
$i
变量?您好,谢谢您的回复。我更新了我的代码。数据从数据库下载并放入数据集$表为$dataSet。表[0]$我想你的头衔和你的问题不符<代码>$selected是一个字符串。如果你想像int一样使用它,你需要以某种方式改变它<代码>[int]$selected=读取主机…。如果你在提示符中输入了错误的内容,你可能会有铸造问题。看看它的工作!非常感谢
$hash.Add(("$i"),(@{