Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell ';必须指定一个对象';关于获取成员的管道变量_Powershell_Nuget_Envdte_T4scaffolding - Fatal编程技术网

Powershell ';必须指定一个对象';关于获取成员的管道变量

Powershell ';必须指定一个对象';关于获取成员的管道变量,powershell,nuget,envdte,t4scaffolding,Powershell,Nuget,Envdte,T4scaffolding,为什么我可以成功地通过管道将cmdlet的结果传递给成员,而不是通过变量 PM> Get-ProjectFolder "Services" -Project "Foobar" | Get-Member TypeName: System.__ComObject#{8e2f1269-185e-43c7-8899-950ad2769ccf} Name MemberType Definition

为什么我可以成功地通过管道将cmdlet的结果传递给成员,而不是通过变量

PM> Get-ProjectFolder "Services" -Project "Foobar" | Get-Member


   TypeName: System.__ComObject#{8e2f1269-185e-43c7-8899-950ad2769ccf}

Name              MemberType Definition                                  
----              ---------- ----------                                  
AddFolder         Method     ProjectItem AddFolder (string, string)      
AddFromDirectory  Method     ProjectItem AddFromDirectory (string)       
AddFromFile       Method     ProjectItem AddFromFile (string)            
AddFromFileCopy   Method     ProjectItem AddFromFileCopy (string)        
AddFromTemplate   Method     ProjectItem AddFromTemplate (string, string)
Item              Method     ProjectItem Item (Variant)                  
ContainingProject Property   Project ContainingProject () {get}          
Count             Property   int Count () {get}                          
DTE               Property   DTE DTE () {get}                            
Kind              Property   string Kind () {get}                        
Parent            Property   IDispatch Parent () {get}                   

编辑:


获取成员-InputObject$f
而不是管道怎么样?正如帮助所说的,有一个区别,但是它应该只考虑集合:

-输入对象

指定检索其成员的对象

使用InputObject参数与管道化对象以获取成员不同


谢谢,
InputObject
确实有效,但我不明白的是为什么管道的单行版本有效,而将结果保存到var和管道却无效。我说这两者在逻辑上有区别,对吗?@IlyaKozhevnikov,至少根据文件,不应该有区别。如果计算
$f
,会发生什么情况?它提供的输出是否与
Get ProjectFolder
命令相同?@IlyaKozhevnikov另外,键入.Net.typed表示“没有逻辑差异”。是的,输出是相同的,请看编辑中的屏幕截图。是的,我认为这与它是COM对象有关,可能是某种竞争条件,
$(Get ProjectFolder Foo)| Get Member
以与变量变量相同的方式失败。
PM> $f = Get-ProjectFolder "Services" -Project "Foobar"
PM> $f | Get-Member
Get-Member : You must specify an object for the Get-Member cmdlet.
At line:1 char:6
+ $f | Get-Member
+      ~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
    + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand