我在 PowerShell v5.0 中撰寫了一個 PowerShell 腳本,我可以從批處理檔案中毫無問題地執行該腳本。但是,當我在 Windows 2008 中使用 PowerShell v1.0 執行批處理檔案時,我收到錯誤訊息“在一元運算子“-”之后缺少運算式。
有人可以告訴我是什么導致了錯誤嗎?
這是我的批處理檔案中的代碼
@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%SAP_Shell_Script.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'";
uj5u.com熱心網友回復:
這不能保證能解決您的問題,但可能會引導您找到解決方案:
首先 - 如果可能的話 - 值得考慮更新您非常過時的 v1.0 PowerShell 安裝(隨 Windows Server 2008 提供)。
由于您已經排除了問題不是腳本的內容,這意味著 PowerShell 的CLI 語法在以后的版本中必須更改:
- 聽起來您正在使用的至少一個引數名稱
powershell.exe在 v1 中未被識別,導致它和所有后續引數都被解釋為 PowerShell 命令(它是-前綴 - 然后被解釋為運算子- 導致錯誤訊息)。
故障排除如下:
首先
powershell.exe -?顯示您的版本支持哪些引數。從一個最小的命令開始,然后嘗試一個一個地添加引數。
以下最小命令假定您已經使用
Set-ExecutionPolicy至少允許當前會話(行程)執行腳本;在以后的 PowerShell 版本中,您可以按以下方式進行操作 - 我不知道它是否適用于 v1.0:Set-ExecutionPolicy -Force -Scope Process -ExecutionPolicy Bypass
最小命令:
PowerShell "& '%PowerShellScriptPath%'"
請注意,與您的原始命令(在 v5 中有效)一樣,假設變數的值%PowerShellScriptPath%本身不包含'字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468377.html
