好吧,我看了看,然后看了一下,然后看了一下......对于我的生活,我无法弄清楚为什么我的物体不会从我的功能中回来!它包含在从另一个脚本调用的单独文件中的模块中。一切都被正确分配但是一旦这个函数失去了范围,所以变量......如何返回wiStore对象或设置它以使它在单词后不会丢失范围。
编辑:请注意,没有返回任何内容,我可以在调试器中看到变量集,但奇怪的是,在函数执行完毕后它变为null。
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
}
答案 0 :(得分:0)
如果你只需要返回$ wiStore,有两种方法可以做到。第一个是在函数结束时调用它,第二个是使用RETURN keyword显式告诉powershell返回值。
return $wistore
答案 1 :(得分:0)
我自己解决了这个问题,问题是我的引用失败但是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
}
有关详细信息,请参阅我的其他问题的答案:https://stackoverflow.com/a/38246932/3812871