PowerShell 5传递Datetime参数

时间:2017-09-15 15:38:00

标签: powershell datetime

运行以下ps1,但datetime参数正在出错。

调试显示日期正确($ earlydate =我输入的日期)

正在传递HostIP参数,因此传递日期时间似乎有一个特殊的技巧,我不知道。

我收到的错误是:

  

无法验证参数' After'之后的参数。参数为null或   空。提供一个非null或空的参数,然后尝试   再次命令。

非常感谢任何帮助。

param( 
    [Parameter(Mandatory=$True)] 
    [string]$HostIP,

    [Parameter(Mandatory=$True)]
    [datetime]$earlydate,

    [Parameter(Mandatory=$True)]
    [datetime]$latedate
)

Invoke-Command {Get-EventLog Security -After $earlydate -Before $latedate} -ComputerName $HostIP | 
Export-Csv c:\Events\$HostIP.csv

2 个答案:

答案 0 :(得分:1)

Invoke-Command {Get-EventLog Security -After $using:earlydate -Before $using:latedate}

$ earlydate& $ latedate变量在您的机器上定义,而不是在远程机器上定义。远程机器不会自动继承变量,因此远程机器上的变量将为空。

答案 1 :(得分:0)

您的脚本正在寻找日期时间类型,我想您正在传递一个字符串。如果要传入字符串,请将其转换为函数内的datetime,否则传入datetime对象,例如:

(Get-Date -year 2017 -month 9 -day 15)