Получение C: диск с нескольких серверов - PullRequest
0 голосов
/ 07 января 2019
$computers = Get-Content -Path c:\server\computers.txt
$computers | foreach {
    $os = Get-WmiObject win32_OperatingSystem -computername $_
    Get-WMIObject Win32_Logicaldisk -filter "deviceid='$($os.systemdrive)'" -ComputerName $_
} | Select PSComputername,DeviceID,
@{Name="SizeGB";Expression={$_.Size/1GB -as [int]}},
@{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB,2)}} |
Sort FreeGB | Format-Table -Autosize >> C:\server\diskreport.txt

1 Ответ

0 голосов
/ 07 января 2019

Поскольку на самом деле не было опубликовано ни одного вопроса или ошибок по поводу того, что у вас есть, вот что я использую, чтобы получить дисковое пространство на сервере. Вы всегда можете получить список и выбросить его в цикл foreach, отправив их этой функции, и выбросить вывод в файл, как вам захочется.

Function Get-DiskInventory
{
    [CmdletBinding()]
    Param (
    [Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
    [alias("Name")]
    [string[]]$ComputerName="localhost",
    [validateset(2,3)]
    [int]$DriveType=3,
    [Parameter()]
    [string]$DriveLetter

)

Begin{
    Write-Verbose "Getting disk inventory on $ComputerName"
}

Process {
    foreach ($Computer in $ComputerName) {
        Write-Verbose "Connecting to $Computer"
        Write-Verbose "Looking for drive type $DriveType"
        $Result = Get-WmiObject -Class win32_logicaldisk -ComputerName $Computer -Filter "drivetype=$DriveType" |
        Select-Object -Property @{label='Computer';expression={$Computer}},
        DeviceID,
        @{label='Size(GB)';expression={$_.Size / 1GB -as [int]}},
        @{label='UsedSpace(GB)';expression={($_.Size - $_.FreeSpace) / 1GB -as [int]}},
        @{label='FreeSpace(GB)';expression={$_.FreeSpace / 1GB -as [int]}},
        @{label='%Free';expression={$_.FreeSpace / $_.Size * 100 -as [int]}}

        if ($DriveLetter) {
            Write-Verbose "Filtering drives"
            $Result = $Result | where deviceid -EQ "$DriveLetter`:"
        }

        $Result | Select-Object -Property * -Unique
    }
}

End{
    Write-Verbose "Finished running command"
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...