1

我被困在我知道很简单但我一生无法弄清楚的事情上。

我正在尝试导入带有主机名列表的 .txt 文件,一旦检索到该列表,脚本就会返回安装的总物理内存量。

到目前为止,我有这个:

function get
{
$boxes = Get-Content C:\Temp\hostnamesforRAM.txt
foreach($box in $boxes)
{
Get-WmiObject Win32_ComputerSystem | select TotalPhysicalMemory
}
}
get

但是,它只是简单地返回:

4151570432
4151570432
4151570432
4151570432
4151570432

有任何想法吗?

谢谢

4

3 回答 3

8

您需要将当前主机名 ($box) 传递给 computerName 参数,如果没有它,您将从自己的计算机获取值。

function get
{
$boxes = Get-Content C:\Temp\hostnamesforRAM.txt
foreach($box in $boxes)
{
Get-WmiObject Win32_ComputerSystem -ComputerName $box | select TotalPhysicalMemory
}
}

get

另一种更短的方法是将文件的内容传递给 ComputerName 参数。ComputerName 参数接受名称的集合:

Get-WmiObject Win32_ComputerSystem -ComputerName (Get-Content C:\Temp\hostnamesforRAM.txt) | 
Select-Object Name,TotalPhysicalMemory
于 2012-07-10T10:28:27.883 回答
2

这是以TotalPhysicalMemory字节为单位,以获取特殊的计算机信息添加computernameGet-WmiObject具有正确变量名的命令(在您的情况下为 $box):

Get-WmiObject -computername $box Win32_ComputerSystem

于 2012-07-10T10:32:07.583 回答
1

尝试

   function get
    {
    $boxes = Get-Content C:\Temp\hostnamesforRAM.txt
    foreach($box in $boxes)
    {
    "$box -> $((Get-WmiObject Win32_ComputerSystem -computername $box).TotalPhysicalMemory)"
    }
    }
于 2012-07-10T10:31:50.987 回答