值未存储在 powershell 变量中

Value not storing in powershell variable

我正在调用一个 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

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

函数在它自己的作用域内运行,作用域和作用域中创建的所有变量在函数退出时被释放。函数应该 return 数据,您将其分配给局部范围内的变量,如下所示:

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

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