将数组作为参数从CMD传递给PowerShell会出现问题
我无法将数组作为CMD的参数传递给PowerShell脚本。 以下是PS代码的示例:将数组作为参数从CMD传递给PowerShell会出现问题,powershell,cmd,Powershell,Cmd,我无法将数组作为CMD的参数传递给PowerShell脚本。 以下是PS代码的示例: [CmdletBinding()] Param( [string[]]$serverArray, ) $serviceName = 'service1' function getState { Process { $serverArray foreach ($server in $serverArray) { $servState =
[CmdletBinding()]
Param(
[string[]]$serverArray,
)
$serviceName = 'service1'
function getState {
Process {
$serverArray
foreach ($server in $serverArray) {
$servState = (Get-WmiObject Win32_Service -ComputerName $server -Filter "name='$serviceName'").State
}
}
getState
如何从CMD调用脚本:
powershell -file .\script.ps1 -serverArray Server1,Server2
我收到一个错误,因为未向$serverArray
传递数组:
Server1,Server2
Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT:
0x800706BA)
At C:\script.ps1:58 char:29
+ $servState = (Get-WmiObject <<<< Win32_Service -ComputerName $server -Filter "name='$serviceName'").State
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
.\script.ps1 -serverArray Server1,Server2
服务器1
服务器2
您可以在命令提示符下运行此命令:
powershell script.ps1“服务器1,服务器2”
如果向脚本中添加更多参数:
powershell script.ps1“Server1,Server2”“parameter2参数”“parameter3参数”
CMD对powershell数组一无所知。您可以将服务器列表作为单个令牌传递
powershell -File .\script.ps1 Server1 Server2
并在脚本中使用$args
而不是命名参数:
foreach ($server in $args) {
...
}
也可以在正文中的逗号处输入参数值:
[CmdletBinding()]
Param(
[string]$Servers
)
$serverArray = $Servers -split ','
-file
->-command
请确保测试运行您的代码,以确保它不会引入额外的错误,如参数定义中虚假的尾随逗号和函数缺少的结束括号。如何powershell-NoProfile-file.\script.ps1…
[CmdletBinding()]
Param(
[string]$Servers
)
$serverArray = $Servers -split ','