Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给powershell中的命令_Powershell_Parameter Passing - Fatal编程技术网

将参数传递给powershell中的命令

将参数传递给powershell中的命令,powershell,parameter-passing,Powershell,Parameter Passing,你能告诉我为什么这样做吗: Get-WmiObject Win32_LogicalDisk -ComputerName xxx, yyy, zzz -Filter "DeviceID='C:'" | Select-Object pscomputername, @{Name="Size GB";Expression={ "{0:N2}" -f ($_.Size / 1GB)}}, @{Name="Free GB";Expression={ "{0:N2}" -f ($_.FreeSpace / 1

你能告诉我为什么这样做吗:

Get-WmiObject Win32_LogicalDisk -ComputerName xxx, yyy, zzz -Filter "DeviceID='C:'" | Select-Object pscomputername, @{Name="Size GB";Expression={ "{0:N2}" -f ($_.Size / 1GB)}}, @{Name="Free GB";Expression={ "{0:N2}" -f ($_.FreeSpace / 1GB) }}
这不是:

$Machines = "xxx, yyyy, zzz"
Get-WmiObject Win32_LogicalDisk -ComputerName $Machines -Filter "DeviceID='C:'" | Select-Object pscomputername, @{Name="Size GB";Expression={ "{0:N2}" -f ($_.Size / 1GB)}}, @{Name="Free GB";Expression={ "{0:N2}" -f ($_.FreeSpace / 1GB) }}
?

我真的很困惑。 我尝试将$Machines更改为:

xxx, yyy, zzz
@(xxx, yyy, zzz)
我得到的错误是:

获取WMIOObject:RPC服务器不可用。(来自HRESULT的异常:0x800706BA) 在C:\AppSupport\ps\freespace\freespace.ps1:10 char:1 +获取WmiObject Win32_LogicalDisk-ComputerName$Machines-Filter“DeviceID='C:'”。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidOperation:(:)[Get WMIOObject],COMException


我想你想在这里做的是

$Machines = @("xxx", "yyy", "zzz")

将它们作为数组传递。

我想您在这里要做的是

$Machines = @("xxx", "yyy", "zzz")

将它们作为数组传递。

因为您将所有三个名称定义为单个字符串

$Machines = "xxx, yyyy, zzz"
这与为计算机调用
“xxx,yyyy,zzz”

xxx,yyy,zzz
@(xxx,yyy,zzz)
不起作用,因为您没有引用它们,因此PowerShell尝试将它们用作表达式并保存结果(调用名为
xxx
的函数/cmdlet/应用程序等)。这就是它返回ex的原因

$machines = xxx, yyy, zzz
At line:1 char:16
+ $machines = xxx, yyy, zzz
+                ~
Missing argument in parameter list.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingArgument
您需要将它们拆分为三个字符串的数组。这应该行得通

$Machines = "xxx", "yyyy", "zzz"
Get-WmiObject Win32_LogicalDisk -ComputerName $Machines -Filter "DeviceID='C:'" |
Select-Object pscomputername, @{Name="Size GB";Expression={ "{0:N2}" -f ($_.Size / 1GB)}}, @{Name="Free GB";Expression={ "{0:N2}" -f ($_.FreeSpace / 1GB) }}

因为您将所有三个名称定义为一个字符串

$Machines = "xxx, yyyy, zzz"
这与为计算机调用
“xxx,yyyy,zzz”

xxx,yyy,zzz
@(xxx,yyy,zzz)
不起作用,因为您没有引用它们,因此PowerShell尝试将它们用作表达式并保存结果(调用名为
xxx
的函数/cmdlet/应用程序等)。这就是它返回ex的原因

$machines = xxx, yyy, zzz
At line:1 char:16
+ $machines = xxx, yyy, zzz
+                ~
Missing argument in parameter list.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingArgument
您需要将它们拆分为三个字符串的数组。这应该行得通

$Machines = "xxx", "yyyy", "zzz"
Get-WmiObject Win32_LogicalDisk -ComputerName $Machines -Filter "DeviceID='C:'" |
Select-Object pscomputername, @{Name="Size GB";Expression={ "{0:N2}" -f ($_.Size / 1GB)}}, @{Name="Free GB";Expression={ "{0:N2}" -f ($_.FreeSpace / 1GB) }}

非常感谢!我明白我做错了什么。非常感谢!我明白我做错了什么。非常感谢你!非常感谢你!