我有一个PS脚本需要通过XML执行/调用。
$sessions = Get-RDUserSession foreach($个会话中的$个会话){调用-...
运算式或陈述式中有未预期的词语基元'in'。位于第1行,字符:78 $sessions = Get-RDUserSession foreach($sessions中的$session){叫用-...
表达式中缺少右括号“)”。位于第1行,字符:109
配置文件xml
<Action name="KillAllUsers" Type="Powershell" Executor='$sessions = Get-RDUserSession
foreach ( $session in $sessions )
{ Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force }'></Action>
1条答案
按热度按时间vs91vp4v1#
Literal[1]当XML文本被解析为DOM (Document Object Model)时,XML * 文本的XML * 属性 * 中的换行符(换行符)似乎 * 没有 * 被保留;它们被替换为 * 空格。
因此,无论您在
Executor
属性中放入什么代码,最后都是 * 单行 *,这就是为什么您必须使用;
(PowerShell的语句分隔符)来分隔语句;请注意Get-RDUserSession
后面的;
,并注意此处的换行符纯粹是为了可读性:至于您看到的错误:
由于您的代码全部放在一行中,没有使用语句分隔符,因此
foreach
语句在语法上变成了Get-RDUserSession
命令的 * 参数 *,从而导致了语法错误;引发错误的简单方法是:[1]相比之下,*转义 * 换行符(


用于仅LF换行符,

用于CRLF换行符)**被 * 保留:它们在内存 *(DOM中)中被转换为 * 文本 * 换行符 *,并在序列化期间重新转换为它们的 * 转义 * 形式,即,当将内存中的DOM转换为 * 字符串 * 或将其保存到 * 文件 * 时。