我有一個需要通過 XML 執行/呼叫的 PS 腳本。出現錯誤
$sessions = Get-RDUserSession foreach($sessions in $sessions){Invoke- ...
運算式或陳述句中出現意外的標記“in”。在 line:1 char:78 $sessions = Get-RDUserSession foreach($session in $sessions){Invoke- ...
Missing close ')' in expression。在行:1 字符:109
組態檔
<Action name="KillAllUsers" Type="Powershell" Executor='$sessions = Get-RDUserSession
foreach ( $session in $sessions )
{ Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force }'></Action>
uj5u.com熱心網友回復:
當 XML 文本被決議為DOM(檔案物件模型)時,XML文本的 XML屬性中的文字[1]換行符(換行符)似乎沒有保留;它們被替換為空格。
因此,您在Executor屬性中放置的任何代碼都以單行結尾,這就是為什么您必須使用;PowerShell 的陳述句分隔符來分隔您的陳述句;請注意;后面Get-RDUserSession并注意換行符純粹是為了便于閱讀:
<Action name="KillAllUsers" Type="Powershell" Executor='
$sessions = Get-RDUserSession;
foreach ( $session in $sessions ) {
Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}
'></Action>
至于你看到的錯誤:
由于您的代碼全部放在沒有陳述句分隔符的單行上,因此foreach陳述句在語法上成為命令的引數,從而Get-RDUserSession導致語法錯誤;引發錯誤的一個簡單方法是:
# -> ERROR: "Unexpected token 'in' in expression or statement."
Get-Date foreach ($i in 1..2) { $i }
[1] 相比之下,轉義換行符(
對于 LF-only 換行符,
對于 CRLF 換行符)被保留:它們在記憶體中(在 DOM 中)被轉換為文字換行符,并在序列化期間重新轉換為它們的轉義形式,即在轉換將記憶體中的 DOM 轉換為字串或將其保存到檔案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516118.html
