PowerShell操作Excel新增Server列并按服务器数组填充Get-Service对应行
PowerShell 按服务器批量导出服务列表到Excel实现方案
首先直接给出可运行的完整代码:
# 定义要查询的服务器列表,修正原代码中错写为服务名的问题 $servers = @('Server1', 'Server2') # 初始化空数组存储所有服务器的服务结果 $exportData = @() foreach ($server in $servers) { # 逐台获取服务列表:本地测试直接用Get-Service,查询远程服务器改为 Get-Service -ComputerName $server $currentServerServices = Get-Service # 给当前服务器的所有服务记录追加Server列,值为当前服务器名 $processedData = $currentServerServices | Select-Object ` @{Name = 'Server'; Expression = { $server }}, Status, Name # 追加到总导出数据集 $exportData += $processedData } # 一次性导出所有数据到Excel,-AutoSize参数可自动适配列宽 $exportData | Export-Excel -Path F:\file.xlsx -AutoSize
核心逻辑说明
- 不需要嵌套循环逐行给服务加服务器名,直接使用
Select-Object的计算属性,就能给当前循环批次的所有服务记录统一追加Server字段 - 所有服务器的处理结果都收集到同一个数组中,最后一次性调用
Export-Excel导出即可,不需要多次写入文件
注意:运行前需确保已安装ImportExcel模块,未安装可执行
Install-Module -Name ImportExcel -Scope CurrentUser完成安装。
如果需要查询远程服务器的真实服务,需确保当前执行账号拥有对应服务器的WMI访问权限。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

