我有問題需要通過PowerShell在遠程服務器上執行批處理文件。用戶可以選擇在彈出窗口中的若干意見一樣服務器名,開始或殺死過程和SERVICENAME。所選項目將保存在變量中。使用路徑中的空格執行批處理文件
如果選擇了所有項目,我想將這些字符串合併到一個字符串中並執行命名爲此結果字符串的批處理腳本。 我嘗試按照this post中的描述進行操作,但批處理腳本不會執行。
實施例:
[String]$scriptpath="C:\tmp\"
[String]$Servername = "xx040"
[String]$actionprefix = "kill_process"
[String]$action = $($actionprefix) + "-"
[String]$Servicename = "service1"
[String]$ServiceFullname = $($action) + $($Servicename) + ".bat"
$batchPath = $("`"$scriptpath + $ServiceFullname `"")
Invoke-Command -ComputerName $Servername -ScriptBlock {
cmd.exe /c "`"$batchPath`""
}
好知道未來,謝謝! – eduardw
我不認爲這是一個好主意,因爲創建'8dot3' NTFS文件名可能被禁用(每卷或甚至每個系統)。請參閱'fsutil.exe行爲設置Disable8dot3 /?'和[禁用短文件名創建](http://www.itnotes.eu/?p=2322)。有些管理員這樣做是因爲他們認爲[禁用8.3文件名創建會提高Windows下的文件性能](https://support.microsoft.com/zh-cn/kb/121007),因此,出於性能原因,他們會在文件上禁用它服務器。 – JosefZ
@JosefZ我會說「這取決於」;-)我們只能希望,從來沒有一個「無聊的管理員」設置DisableCMD = 1'(請參閱https://technet.microsoft.com/en-us/library/ cc787344(v = ws.10)的.aspx)。 – Marged