如何将文件/手动添加的值存入$Machines变量并保留MachineName字段
优化后的PowerShell实现
核心思路
将从文件读取的字符串数组,转换成包含MachineName属性的自定义对象数组,和从数据库拉取的$Machines结构保持一致,确保后续依赖$Machines.MachineName的代码无需修改。
完整代码
# 从文件读取机器列表并转换为目标结构 $sourceFile = "C:\machines.txt" $Machines = Get-Content -Path $sourceFile | ForEach-Object { [PSCustomObject]@{ MachineName = $_ # $_ 指代当前循环的单条机器名 } } # 验证结构(可选操作) $Machines # 原有业务代码无需修改,直接复用 Test-NetConnection -ComputerName $Machines.MachineName
关键修正说明
- 原代码错误地将整个机器数组赋值给每个对象的
MachineName字段,改用$_可获取当前遍历的单条机器名,生成符合要求的结构。 - 如果需要手动添加机器,可直接构造同结构的对象数组:
# 手动添加机器示例 $Machines = @( [PSCustomObject]@{ MachineName = "pc4" }, [PSCustomObject]@{ MachineName = "pc5" } )
内容的提问来源于stack exchange,提问作者Laurent
相关产品推荐
相关产品推荐

