我正在尝试从批处理脚本/命令提示符运行 powershell 命令,但一直收到错误

我正在尝试从批处理脚本/命令提示符运行 powershell 命令,但一直收到错误

下面是我尝试从命令提示符运行的单行命令。

powershell -command "Get-Date (Get-WmiObject -Class win32_reliabilityRecords -filter \"sourcename = 'Microsoft-Windows-WindowsUpdateClient'\" -ErrorAction SilentlyContinue | select @{LABEL = 'date';EXPRESSION = {$_.ConvertToDateTime($_.timegenerated)}} | select -first 01).date -format yyyyMMdd | Out-File -FilePath C:\temp\winupdatelatest.txt"

错误:Get-Date:无法将参数“Date”绑定到目标。异常设置“Date”:“无法将 null 转换为“System.DateTime”类型。”行号:1 字符:10

  • 获取日期(获取 WmiObject -Class win32_reliabilityRecords -filter“酸...
  •      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo:WriteError:(:) [Get-Date],ParameterBindingException
    • FullyQualifiedErrorId:ParameterBindingFailed,Microsoft.PowerShell.Commands.GetDateCommand

感谢您的帮助

答案1

这是您的命令,其中每一行都是一个新参数:

powershell 
-command 
"Get-Date (Get-WmiObject -Class win32_reliabilityRecords -filter "sourcename
= 
'Microsoft-Windows-WindowsUpdateClient'" -ErrorAction SilentlyContinue |select @{LABEL = 'date';EXPRESSION = {$_.ConvertToDateTime($_.timegenerated)}} | select -first 01).date -format yyyyMMdd | Out-File -FilePath C:\temp\datelatest.txt"

基本上,您的问题是,由于您使用“...”...“...”,因此命令的某些部分被视为参数,而其他部分则不是。

目前最简单的解决方案是将所有内容放入 .ps1 文件中,然后使用:

powershell -file myfile.ps1 -ExecutionPolicy Unrestricted

但如果你确实必须使用此命令,那么使用“”代替“。你的命令将变成:

powershell -command "Get-Date (Get-WmiObject -Class win32_reliabilityRecords -filter 
"""sourcename = 'Microsoft-Windows-WindowsUpdateClient'""" -ErrorAction SilentlyContinue 
|select @{LABEL = 'date';EXPRESSION = {$_.ConvertToDateTime($_.timegenerated)}} 
|select -first 01).date -format yyyyMMdd | Out-File -FilePath C:\temp\datelatest.txt"

相关内容