创建从管道中的名称命名的New-Object

时间:2017-07-21 07:30:46

标签: powershell

Hello Stackoverflow PowerShell专家

我刚刚开始访问这个网站,所以希望能够获得一些回答问题的荣誉,并且只是提出可以为Stackoverflow社区这个非常棒的知识库做出贡献的问题。

我的Powershell技能每天都在增长,但是我很难理解为什么这样做不起作用。

我想创建一组新的对象,这些对象是从一个pscustomobject的noteproperty中保存的名称列表中命名的

    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> $ADSObjectNames

    ObjectName                     CSV                                            
    ----------                     ---                                            
    Process                        580501780015_Process.csv                       
    Applications                   580501780015_Applications.csv                  
    ApplicationResourceAssociation 580501780015_ApplicationResourceAssociation.csv
    NetworkInterface               580501780015_NetworkInterface.csv              
    SystemPerformance              580501780015_SystemPerformance.csv             
    Tags                           580501780015_Tags.csv                          
    Connection                     580501780015_Connection.csv                    
    Server                         580501780015_Server.csv                        



    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> $ADSObjectNames | Select-Object -Property ObjectName | ForEach-Object {$_.objectname = New-Object -TypeName pscustomobject}


    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> Get-Variable | Where-Object {$_.Name -eq 'Process'}

    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> Get-Variable | Where-Object {$_.Name -eq 'Server'}

    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner>

$ ADSObjectNames细分如下:

    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> $ADSObjectNames | gm


       TypeName: System.Management.Automation.PSCustomObject

    Name        MemberType   Definition                         
    ----        ----------   ----------                         
    Equals      Method       bool Equals(System.Object obj)     
    GetHashCode Method       int GetHashCode()                  
    GetType     Method       type GetType()                     
    ToString    Method       string ToString()                  
    CSV         NoteProperty string CSV=580501780015_Process.csv
    ObjectName  NoteProperty string ObjectName=Process          



    PS G:\Team Drives\Projects\AWS-PowerShell\AWS_ADS_DataMiner> 

非常感谢您从经验和知识中获得的任何见解。

感谢Stackoverflow' peops

斯图尔特

1 个答案:

答案 0 :(得分:2)

  • 听起来好像让您感到困惑New-ObjectNew-VariableNew-Object不会为您创建变量;它的语法更像$newVar = New-Object ...

  • 两个Cmdlet都需要更多参数才能真正生效。只有New-Object的{​​{1}}会创建一个空对象;只有-TypeName的{​​{1}}会创建一个空变量。New-Variable-Name分别允许您将内容存储在其中。

  • 建议不要动态创建变量 - 请参阅this post of mine和Tomalak的有用评论。 Ansgar Wiechers's在同一页面上回答演示如何将数据存储在哈希表中。