下面是我尝试从命令提示符运行的单行命令。
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"