值未存储在 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
我正在调用一个 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