You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于服务器状态更新CSV文件并生成Appx包报告的PowerShell脚本功能确认

基于服务器状态更新CSV文件并生成Appx包报告的PowerShell脚本功能确认

看起来你需要一个能跟踪服务器在线状态、动态更新源CSV,同时生成Appx包扫描报告的PowerShell脚本,我来帮你梳理下这个方案的功能和实现细节:

需求场景说明

你有一个记录服务器列表的CSV文件(比如computers.csv/computers2.csv),初始只有name列记录服务器FQDN:

name
Server01.contoso.local
Server02.contoso.local
Server03.contoso.local
Server04.contoso.local
Server05.contoso.local
Server06.contoso.local

你希望实现两个核心目标:

  • 每次运行脚本时,更新源CSV的appx列:标记服务器是在线可访问(Port open or computer reachable)还是离线不可达(Port closed or computer unreachable),且后续运行时只会重新检查之前标记为离线或未标记的服务器
  • 生成一个MSStoreReport.csv报告,记录成功访问的服务器上的所有Appx包信息,失败访问的服务器则记录错误状态

脚本功能拆解(更新版代码)

下面是你提供的更新版PowerShell脚本,我标注了关键逻辑:

# 1. 导入源服务器列表CSV
$computers = Import-Csv "C:\temp\computers2.csv"

$AllResults = foreach ($computer in $computers) {
    try {
        # 2. 只处理之前标记为离线或未设置状态的服务器,避免重复检查在线服务器
        if (($computer.appx -eq 'Port closed or computer unreachable') -Or ($null -eq $computer.appx)){
            # 3. 远程执行Appx包扫描命令,成功则收集包信息
            Invoke-Command -ComputerName $computer.name -ScriptBlock { Get-AppxPackage -AllUsers } -ErrorAction 'Stop' | ForEach-Object {
                [pscustomobject]@{
                    "ComputerName" = $computer.Name
                    "Appx"         = $_.Name -join ";"
                }
            }
            # 4. 标记该服务器为在线可访问
            $Computer.Appx = "Port open or computer reachable"
        }
    }
    catch {
        # 5. 执行失败时,标记服务器为离线不可达
        $Computer.Appx = "Port closed or computer unreachable"
    }
}

# 6. 将扫描结果追加到报告CSV(在线服务器的Appx列表/离线服务器的错误状态)
$AllResults | Export-Csv -Path "C:\Temp\MSStoreReport.csv" -NoTypeInformation -Encoding 'UTF8' -Append

# 7. 更新源CSV文件,保存最新的服务器状态标记
$computers | Export-Csv -Path "C:\temp\computers2.csv" -NoTypeInformation -Encoding 'UTF8'

运行流程验证

  • 第一次运行:所有服务器初始无appx列,脚本会逐一检查,在线的(Server01、Server03、Server06)会被标记为Port open or computer reachable并收集Appx包信息写入报告;离线的(Server02、Server04、Server05)标记为Port closed or computer unreachable,报告中记录对应错误状态。源CSV会新增appx列并保存所有状态。
  • 第二次运行:脚本只会检查之前标记为Port closed or computer unreachable的服务器,如果此时Server02恢复在线,会更新它的状态为Port open or computer reachable,并收集它的Appx包信息追加到报告,其他已标记在线的服务器不会重复检查,提升效率。

注意事项

  • 确保运行脚本的账号有远程服务器的管理员权限,且目标服务器启用了WinRM(PowerShell远程管理)
  • 若需要调整检查的端口或连通性方式,可以在Invoke-Command前添加测试逻辑(比如Test-Connection或Test-NetConnection)
  • 报告CSV使用-Append参数,会持续累积所有扫描结果,若需要每次生成全新报告,可去掉该参数(但会覆盖旧报告)

备注:内容来源于stack exchange,提问作者Arbelac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:08:10