Usando o método de Conectando-se ao WMI remotamente com o PowerShell de
link
Eu usei o .NET para formatar números
exemplo daqui.
link
$Servers = @("localhost")
foreach ($Server in $Servers){
$OS = get-wmiobject -Namespace "root\cimv2" -Class Win32_OperatingSystem -Impersonation 3 -computername $Server
foreach ($Item in $OS){
$RAM = "{0:N6}" -f ($Item.TotalVisibleMemorySize)/1kB
$FREE = "{0:N6}" -f ($Item.FreePhysicalMemory)/1kB
$Server + "'t" + "{0:P0}" -f ($FREE/$RAM)
}
}
EDITAR
Para resolver problemas com formatos numéricos nas versões PS e .net, você pode usar o formato de ponto decimal ou fixo em vez do número para corrigir. link
$Servers = @("localhost")
foreach ($Server in $Servers){
$OS = get-wmiobject -Namespace "root\cimv2" -Class Win32_OperatingSystem -Impersonation 3 -computername $Server
foreach ($Item in $OS){
$RAM = "{0:D6}" -f ($Item.TotalVisibleMemorySize)/1kB
$FREE = "{0:D6}" -f ($Item.FreePhysicalMemory)/1kB
$Server + "'t" + "{0:P0}" -f ($FREE/$RAM)
}
}
OR
$Servers = @("localhost")
foreach ($Server in $Servers){
$OS = get-wmiobject -Namespace "root\cimv2" -Class Win32_OperatingSystem -Impersonation 3 -computername $Server
foreach ($Item in $OS){
$RAM = "{0:F6}" -f ($Item.TotalVisibleMemorySize)/1kB
$FREE = "{0:F6}" -f ($Item.FreePhysicalMemory)/1kB
$Server + "'t" + "{0:P0}" -f ($FREE/$RAM)
}
}