我在传递字符串和数据表变量时调用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
它只是在我的实际脚本中不起作用。
答案 0 :(得分:4)
该函数在其自己的作用域中运行,作用域中创建的作用域和所有变量在函数退出时处理。函数应返回数据,您将数据分配给本地范围中的变量,如下所示:
Function myFunc
{
param ($id, $dt)
$myDataTable | where-object ($_.ID -eq $ID)
}
$myVar = myFunc -id "stringID" -dt myDataTable