不能 return 从 powershell 模块函数对象
Can't return object from powershell module function
好的,我看了看,又看了看,然后又看了一些……我这辈子都想不通为什么我的对象不会 return 来自我的函数!这包含在从另一个脚本调用的单独文件中的模块中。一切都已正确分配,但是一旦此函数失去范围,变量也会如此...我如何 return wiStore 对象或设置它,以便它不会在单词后失去范围。
编辑:请注意,没有 returned,我可以在调试器中看到变量集,但神奇的是,它在函数执行完毕后变为空。
function Get-WiStore
{
param
(
$CollectionUrl
)
Add-TfsReferences
$tfsUri = New-Object System.Uri $CollectionUrl
$tfProjectCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection $tfsUri
#WHY DO YOU DISAPEAR!!!!?!?!?!?!?!?!?! :'(
$wiStore = New-Object Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore $tfProjectCollection
}
function Add-TfsReferences
{
#my *.dll references
}
如果您只需要 return $wiStore,有两种方法可以做到。第一种是在函数末尾调用它,第二种是使用 RETURN keyword 明确告诉 powershell return 值。
return $wistore
我自己解决了这个问题,问题是我的引用失败了,但是 power shell 没有通知我。如果您需要模块的引用,那么您应该创建一个模块清单。另外,我删除了变量 $wiStore 并简单地返回了一个新对象。
function Get-WiStore
{
param
(
$CollectionUrl
)
$tfsUri = New-Object System.Uri $CollectionUrl
$tfProjectCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection $tfsUri
New-Object Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore $tfProjectCollection
}
请参阅我的其他问题的答案了解更多详情:
好的,我看了看,又看了看,然后又看了一些……我这辈子都想不通为什么我的对象不会 return 来自我的函数!这包含在从另一个脚本调用的单独文件中的模块中。一切都已正确分配,但是一旦此函数失去范围,变量也会如此...我如何 return wiStore 对象或设置它,以便它不会在单词后失去范围。
编辑:请注意,没有 returned,我可以在调试器中看到变量集,但神奇的是,它在函数执行完毕后变为空。
function Get-WiStore
{
param
(
$CollectionUrl
)
Add-TfsReferences
$tfsUri = New-Object System.Uri $CollectionUrl
$tfProjectCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection $tfsUri
#WHY DO YOU DISAPEAR!!!!?!?!?!?!?!?!?! :'(
$wiStore = New-Object Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore $tfProjectCollection
}
function Add-TfsReferences
{
#my *.dll references
}
如果您只需要 return $wiStore,有两种方法可以做到。第一种是在函数末尾调用它,第二种是使用 RETURN keyword 明确告诉 powershell return 值。
return $wistore
我自己解决了这个问题,问题是我的引用失败了,但是 power shell 没有通知我。如果您需要模块的引用,那么您应该创建一个模块清单。另外,我删除了变量 $wiStore 并简单地返回了一个新对象。
function Get-WiStore
{
param
(
$CollectionUrl
)
$tfsUri = New-Object System.Uri $CollectionUrl
$tfProjectCollection = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection $tfsUri
New-Object Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore $tfProjectCollection
}
请参阅我的其他问题的答案了解更多详情: