值不存储在powershell变量中

时间:2015-01-16 23:40:45

标签: variables powershell datatable

我在传递字符串和数据表变量时调用PS函数。我想提取datatable中的所有项目并将它们存储在一个对象中。

以下是我的脚本中的代码:

Function myFunc
{
    param ($id, $dt)
    $data = $dt | where-object ($_.ID -eq $ID)
}

$myVar = myFunc -id "stringID" -dt myDataTable

运行此时,data变量保持为空。

我的项目结束时有一个断点,所以我可以尝试使用这些值。当我尝试重新创建问题时,它可以工作:

[DBG]: PS C:\WINDOWS\system32>> $abc = $myDataTable | where-object {$_.ID -eq $ID}

[DBG]: PS C:\WINDOWS\system32>> $abc


ID          : //info here
Location    : //info here
Managedr    : //info here

它只是在我的实际脚本中不起作用。

1 个答案:

答案 0 :(得分:4)

该函数在其自己的作用域中运行,作用域中创建的作用域和所有变量在函数退出时处理。函数应返回数据,您将数据分配给本地范围中的变量,如下所示:

Function myFunc
{
    param ($id, $dt)
    $myDataTable | where-object ($_.ID -eq $ID)
}

$myVar = myFunc -id "stringID" -dt myDataTable