为何PowerShell命令将查询结果仅存入单个数组元素?
问题原因分析
你的命令之所以把结果存入数组的单个元素,核心问题出在Format-Table和Out-String两个命令的使用上:
Format-Table是PowerShell的格式化命令,它的设计目的是生成适合人类阅读的格式化文本,而非返回可用于后续处理的数据对象。Out-String会将Format-Table输出的所有内容合并成一个单一的多行字符串,即便你用@()强制包裹,也只是将这一个字符串放入数组,因此数组的Count为1,所有服务名都集中在$array[0]这个元素里。
正确实现方式
要让每个服务名作为数组的独立元素,应该直接提取服务对象的Name属性值,跳过格式化命令:
方法1:使用Select-Object -ExpandProperty
$array = Get-Service '*Event*' | Select-Object -ExpandProperty Name
方法2:直接访问对象属性(更简洁)
$array = (Get-Service '*Event*').Name
执行上述任一命令后,$array.Count会返回3,$array[0]、$array[1]、$array[2]分别对应单个服务名。
内容的提问来源于stack exchange,提问作者jarodas2004
相关产品推荐
相关产品推荐

