Arrays 使用PowerShell操作对象内的字符串值

Arrays 使用PowerShell操作对象内的字符串值,arrays,powershell,object,Arrays,Powershell,Object,我的目标是获取两个具有主机名的对象(通过导入CSV创建),将一个列表与另一个列表进行比较,并显示每个列表中缺少的内容 在进行比较之前,我需要操作存储在对象中的主机名。第一步是使用正则表达式删除(-replace)不必要的文本,然后将所有主机名设置为小写(ToLower()) 我不太擅长修改现有对象并保持它们“完好无损”,所以我希望有人能在这方面帮助我 以下是存储在CSV中的数据示例。标题位于第7行,每行数据的存储方式如下: ... 7 "name","IP","OSType" 8 "WCSM

我的目标是获取两个具有主机名的对象(通过导入CSV创建),将一个列表与另一个列表进行比较,并显示每个列表中缺少的内容

在进行比较之前,我需要操作存储在对象中的主机名。第一步是使用正则表达式删除(
-replace
)不必要的文本,然后将所有主机名设置为小写(
ToLower()

我不太擅长修改现有对象并保持它们“完好无损”,所以我希望有人能在这方面帮助我

以下是存储在CSV中的数据示例。标题位于第7行,每行数据的存储方式如下:

... 7 "name","IP","OSType" 8 "WCSMserver.com","10.10.10.10","OSX" 9 "SERVER2.com","11.11.11.11","Windows" 10 "windowsserver @ SERVER2.com","11.11.11.13","Windows" 11 "winner.comSERVER2.com","11.11.11.12","Windows" ...
通过执行
$global:QReportObject.name | ForEach Object
可以循环对象的名称,而不是对象的名称

我已经简化了您的脚本(为了可读性):

这将输出:

name                      
----                      
WCSMserver-remove this-com
SERVER2.com               
windowsserver-remove this-
winner.comSERVER2.com     



name                 
----                 
wcsmservercom        
server2.com          
windowsserver        
winner.comserver2.com

通过执行
$global:QReportObject.name | ForEach Object
可以循环对象的名称,而不是对象的名称

我已经简化了您的脚本(为了可读性):

这将输出:

name                      
----                      
WCSMserver-remove this-com
SERVER2.com               
windowsserver-remove this-
winner.comSERVER2.com     



name                 
----                 
wcsmservercom        
server2.com          
windowsserver        
winner.comserver2.com

你的问题是什么?有些东西不起作用吗?您是否收到错误?上面的表单不起作用,我收到以下错误“在该对象上找不到属性“name”。请验证该属性是否存在并可以设置。”。但是,如果我使用“$NewObject=$global:QRadarReportObject.name | ForEach对象{…”它将替换这些值,但它会创建一个全新的对象,这不是我要做的。
$global:QReportObject.name=
没有达到预期效果。这种简写语法是从
QReportObject
数组的所有元素中获取
name
属性。要分配每个元素的属性,需要迭代元素:
foreach($o在QReportObject中){$o.name=$o.name-replace…..
您的问题是什么?有些东西不起作用吗?您是否收到错误?如果上面的表单不起作用,我会收到以下错误“在该对象上找不到属性‘name’。请验证该属性存在并且可以设置。”但是,如果我使用“$NewObject=$global:QRadarReportObject.name | ForEach对象{…”它将替换这些值,但它会创建一个全新的对象,这不是我要做的。
$global:QReportObject.name=
没有达到预期效果。这种简写语法是从
QReportObject
数组的所有元素中获取
name
属性。要分配每个元素的属性,需要迭代单个元素:
foreach($o在QReportObject中){$o.name=$o.name-replace…..