将参数从Windows批处理脚本传递到powershell脚本

时间:2014-02-27 12:45:58

标签: windows variables batch-file powershell parameters

我有一个powershell脚本,它使用'quser'命令提取有关登录到一系列终端服务器的用户的数据。

我想在输出文件中添加一个时间戳,这个时间戳变量是在一个windows批处理文件中创建的,然后调用powershell脚本传递计算机名和时间戳,但是powershell脚本在函数中出现'Missing')错误参数列表'

    param(
[CmdletBinding()] 
[Parameter(ValueFromPipeline=$true,
           ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = 'localhost'
[string[]]$timestamp <========= this is the line I have added
)

如果我删除添加的行(在上面的代码中标记),脚本运行正常

1 个答案:

答案 0 :(得分:1)

您需要在参数之间添加逗号:

param(
[CmdletBinding()] 
[Parameter(ValueFromPipeline=$true,
           ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = 'localhost',
[string[]]$timestamp
)

除非你想要多个时间戳,否则你可能只想让它成为字符串而不是字符串数组(所以[string]$timestamp)。

我得到的错误消息看起来像这样(除了它是红色的)。第一个错误指向localhost行的末尾然后有一个连锁错误,那个时候似乎是一个虚假的)

PS C:\>     param(
>> [CmdletBinding()]
>> [Parameter(ValueFromPipeline=$true,
>>            ValueFromPipelineByPropertyName=$true)]
>> [string[]]$ComputerName = 'localhost'
>> [string[]]$timestamp
>> )
>>
At line:5 char:38
+ [string[]]$ComputerName = 'localhost'
+                                      ~
Missing ')' in function parameter list.
At line:7 char:1
+ )
+ ~
Unexpected token ')' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingEndParenthesisInFunctionParameterList

我在这里使用Powershell 3。其他版本可能会以不同方式显示错误。