Arrays Powershell |脚本,用于分析使用和释放服务器存储,然后将其导出到CSV

Arrays Powershell |脚本,用于分析使用和释放服务器存储,然后将其导出到CSV,arrays,powershell,statistics,storage,space,Arrays,Powershell,Statistics,Storage,Space,我需要创建一个脚本来检查网络中主机的可用存储和已用存储。主机被加载到阵列中,而PowerShell中显示的磁盘具有可用空间和大小。 现在,我希望所有这些东西都被导出到csv文件中,以便您可以更轻松地分析数据 以下是脚本: $servers = @("server1", "server2", "server3") Foreach ($server in $servers) { $disks = Get-WmiObject Win

我需要创建一个脚本来检查网络中主机的可用存储和已用存储。主机被加载到阵列中,而PowerShell中显示的磁盘具有可用空间和大小。 现在,我希望所有这些东西都被导出到csv文件中,以便您可以更轻松地分析数据

以下是脚本:

$servers = @("server1", "server2", "server3")

Foreach ($server in $servers)
{
    $disks = Get-WmiObject Win32_LogicalDisk -ComputerName $server -Filter DriveType=3 | 
        Select-Object DeviceID, 
            @{'Name'='Size'; 'Expression'={[math]::truncate($_.size / 1GB)}}, 
            @{'Name'='Freespace'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}

    $server

    foreach ($disk in $disks)
    {
        $disk.DeviceID + $disk.FreeSpace.ToString("N0") + "GB / " + $disk.Size.ToString("N0") + "GB"
        

     }
 }
 

Thx btw:)

您不需要手动输出
$server
值来控制输出格式,而是希望将服务器名称“粘合”到每个关联的
$disk
对象上,这将使导出到CSV(使用正确的服务器名称)变得更容易:

现在,每个对象都附加了正确的服务器名称,我们可以轻松地导出到CSV:

$allDisks |Export-Csv .\path\to\output.csv -NoTypeInformation
。。。我们还可以使用PowerShell的本机格式化子系统来很好地处理交互式shell中的输出:

$allDisks |Format-Table DeviceID,Size,FreeSpace -GroupBy ComputerName

您好当我启动脚本时,excel中的输出如下:@CruZer0这是excel问题,不是PowerShell问题。如果您将Excel中的默认“列表分隔符”更改为
,或者使用数据导入向导,它将正常工作。否则,请尝试指定
-Delimiter';'使用
导出Csv
通常是语言环境中的默认列表分隔符,使用
作为十进制分隔符)非常感谢:)。
$allDisks |Format-Table DeviceID,Size,FreeSpace -GroupBy ComputerName