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
斯图尔特
答案 0 :(得分:2)
听起来好像让您感到困惑New-Object
和New-Variable
。 New-Object
不会为您创建变量;它的语法更像$newVar = New-Object ...
两个Cmdlet都需要更多参数才能真正生效。只有New-Object
的{{1}}会创建一个空对象;只有-TypeName
的{{1}}会创建一个空变量。New-Variable
和-Name
分别允许您将内容存储在其中。
建议不要动态创建变量 - 请参阅this post of mine和Tomalak的有用评论。 Ansgar Wiechers's在同一页面上回答演示如何将数据存储在哈希表中。