PowerShell 错误 - 计划任务 - 预期表达式
Posted
技术标签:
【中文标题】PowerShell 错误 - 计划任务 - 预期表达式【英文标题】:PowerShell Error - Scheduled Task - expression expected 【发布时间】:2021-10-15 22:19:18 【问题描述】:我正在设置计划任务以注销断开的会话。我使用下面显示的参数打开 PowerShell.exe 来设置任务
powershell.exe -ExecutionPolicy Bypass -NoProfile -command "Invoke-command -ScriptBlock quser | Select-String "Disc" | ForEach logoff ($_.tostring() -split " +")[2]"
该参数在 PowerShell 中单独起作用,但是当我尝试创建此任务时,它失败并出现错误:
powershell.exe : At line:1 char:89
At line:2 char:1
+ powershell.exe -ExecutionPolicy Bypass -NoProfile -command "Invoke-co ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (At line:1 char:89:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
+ ... quser | Select-String Disc | ForEach logoff (((.tostring() -split ...
+ ~
An expression was expected after '('.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
我相信我需要对表达式进行评估以正确填充字符串,并尝试转义引号和括号以使其正常工作。任何帮助将不胜感激。
【问题讨论】:
在我看来, ($_.tostring() -split ' +')[2] 没有被理解为来自 quser 的管道对象的表达式。还在做一些测试。 powershell.exe -command "(quser | select-string 'Disc').count" 返回对象的计数,但 powershell.exe -command "quser | select-string 'Disc' | foreach- object $_ 不返回任何对象。我很困惑 【参考方案1】:您的问题可能是引号。请注意,您必须正确引用和转义您的命令行参数。为简单起见,您可以在命令中使用单引号,或者在不需要时一起跳过它们。此外,Invoke-Command
是多余的。
试试这个:
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "quser | Select-String Disc | foreach logoff ($_.Line -split ' +')[2]"
【讨论】:
如果我尝试运行“quser | Select-String 'Disc' | ForEach logoff ($_.tostring() -split ' +')[2]”它会工作并显示断开连接会议。当我运行 powershell.exe -ExecutionPolicy Bypass -NoProfile -command "quser | Select-String 'Disc' | ForEach logoff ($_.tostring() -split ' +')[2]" 你建议我仍然得到同样的错误“在'('之后需要一个表达式” 感谢您对调用命令的帮助。对我来说应该更明显的是它是多余的。 通过转义变量并使用下面的脚本块代码解决了这个问题。抱歉格式化:Powershell.exe –executionpolicy bypass –noprofile –command “Invoke-command –scriptblock$ints = (quser | select-string ‘Disc’).linenumber
$ints | foreach-object &logoff `$_ ”以上是关于PowerShell 错误 - 计划任务 - 预期表达式的主要内容,如果未能解决你的问题,请参考以下文章
尝试创建计划任务时出现Powershell错误?无法处理参数“参数”的参数转换