声明中的意外令牌 - PowerShell
Unexpected Token in statement - PowerShell
我有一个 运行 工作正常的脚本,但是当我 运行 在家里构建相同的脚本时,脚本失败并出现以下错误:
Unexpected token '(' in expression or statement.
At C:\Users\MyAccount\Documents\Test.ps1:34 char:54
+ $Log = [Microsoft.VisualBasic.Interaction]::InputBox ('Enter the Even ...
Unexpected token '(' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
这是我正在尝试的代码 运行:
$log = [Microsoft.VisualBasic.Interaction]::InputBox ('Enter the Event ID you are looking for.', 'Event ID Query')
cd C:\temp\winevent_logs
$List = Get-ChildItem | Where-Object {$_.FullName -match "security"} | Select-Object
Get-WinEvent -FilterHashtable @{path=$List;id=$Log} | Measure-Object | Select-Object count
我猜我的家庭系统存在配置问题,它不解释 Visual Basic 操作,但我不确定从哪里开始。
你有一个语法问题(这意味着你的问题与你运行你的代码在哪台机器上无关):
- 当在PowerShell中调用.NET方法时,必须没有space 位于方法名称和左括号之间,
(
,这与 C# 不同,后者是允许的。
以 [string]
类型的 .ToUpper()
instance method 为例:
# OK - no space between 'ToUpper' and '('
PS> 'foo'.ToUpper()
FOO
# BROKEN - space before '('
PS> 'foo'.ToUpper ()
ParserError:
Line |
1 | 'foo'.ToUpper ()
| ~
| Unexpected token '(' in expression or statement.
注:
与错误的 space、PowerShell 解释 space 之后的内容(在本例中为 ()
) 作为 单独的表达式 ,它破坏了语法,因为 space 分隔的表达式列表(与运算符)无效;例如,1 2
触发相同的错误。
顺便说一句:省略 ()
否则将是方法调用 - 例如,'foo'.ToUpper
- 提供有用的PowerShell 中的用途:它显示 反射 信息,即方法及其重载的签名(参数列表及其类型);例如:
OverloadDefinitions
-------------------
string ToUpper()
string ToUpper(cultureinfo culture)
你在InputBox
和('Enter
之间放了一个space。删除 space 以便它作为带有参数的方法执行:
$log = [Microsoft.VisualBasic.Interaction]::InputBox('Enter the Event ID you are looking for.', 'Event ID Query')
否则,您试图告诉 PowerShell 做的是 return 方法对象本身,它不知道如何处理括号中的结果子表达式。
我有一个 运行 工作正常的脚本,但是当我 运行 在家里构建相同的脚本时,脚本失败并出现以下错误:
Unexpected token '(' in expression or statement.
At C:\Users\MyAccount\Documents\Test.ps1:34 char:54
+ $Log = [Microsoft.VisualBasic.Interaction]::InputBox ('Enter the Even ...
Unexpected token '(' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
这是我正在尝试的代码 运行:
$log = [Microsoft.VisualBasic.Interaction]::InputBox ('Enter the Event ID you are looking for.', 'Event ID Query')
cd C:\temp\winevent_logs
$List = Get-ChildItem | Where-Object {$_.FullName -match "security"} | Select-Object
Get-WinEvent -FilterHashtable @{path=$List;id=$Log} | Measure-Object | Select-Object count
我猜我的家庭系统存在配置问题,它不解释 Visual Basic 操作,但我不确定从哪里开始。
你有一个语法问题(这意味着你的问题与你运行你的代码在哪台机器上无关):
- 当在PowerShell中调用.NET方法时,必须没有space 位于方法名称和左括号之间,
(
,这与 C# 不同,后者是允许的。
以 [string]
类型的 .ToUpper()
instance method 为例:
# OK - no space between 'ToUpper' and '('
PS> 'foo'.ToUpper()
FOO
# BROKEN - space before '('
PS> 'foo'.ToUpper ()
ParserError:
Line |
1 | 'foo'.ToUpper ()
| ~
| Unexpected token '(' in expression or statement.
注:
与错误的 space、PowerShell 解释 space 之后的内容(在本例中为
()
) 作为 单独的表达式 ,它破坏了语法,因为 space 分隔的表达式列表(与运算符)无效;例如,1 2
触发相同的错误。顺便说一句:省略
()
否则将是方法调用 - 例如,'foo'.ToUpper
- 提供有用的PowerShell 中的用途:它显示 反射 信息,即方法及其重载的签名(参数列表及其类型);例如:OverloadDefinitions ------------------- string ToUpper() string ToUpper(cultureinfo culture)
你在InputBox
和('Enter
之间放了一个space。删除 space 以便它作为带有参数的方法执行:
$log = [Microsoft.VisualBasic.Interaction]::InputBox('Enter the Event ID you are looking for.', 'Event ID Query')
否则,您试图告诉 PowerShell 做的是 return 方法对象本身,它不知道如何处理括号中的结果子表达式。