不能 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
}

请参阅我的其他问题的答案了解更多详情: