Powershell:Get-WmiObject无法在循环中运行asJob

时间:2017-05-31 10:16:27

标签: powershell get-wmiobject

我想有时检查域中服务器的一些信息。在这个例子中,我试图远程获取Windows版本(只有一个服务器,目前没有循环):

$cr=Get-Credential "domain\adm_user"
$computer="serverA"
Invoke-Command { Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -Computer $computer -Credential $cr | Format-List -Property Name, OSArchitecture, SerialNumber} -AsJob -ComputerName .
Get-Job | Wait-Job
Get-Job | Receive-Job

输出:

Cannot validate argument on parameter 'ComputerName'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.

似乎,scriptblock {}无法看到变量$computer。 当我将变量-computer $computer替换为服务器名称时,它正在运行。

1 个答案:

答案 0 :(得分:1)

对于Invoke-Command中的变量扩展,使用param块并指定参数:

$computer = 'localhost'
Invoke-Command {param($computer) Get-WmiObject Win32_OperatingSystem -Computername $computer } -ArgumentList $computer

使用PS v5。