2016-11-30 33 views
0

我想創建一些按鈕的代碼來將PowerShell命令的一部分返回給目標單元格。我只想要狀態的前兩個字符(「Ru」用於運行或「ST」用於停止)進入單元格。返回一個PowerShell命令的Excel單元格

的PowerShell命令我想使用的是:

PS C:\Windows\System32\WindowsPowerShell\v1.0> get-service -Name browser 

Status Name    DisplayName 
------ ----    ----------- 
Running browser   Computer Browser 

我不知道我怎麼能解析返回值得到公正的2個字符。 我已經開始使用此代碼:

Sub Button2_Click() 
Dim retval As String 
retval = Shell("C:\Windows\System32\WindowsPowerShell\v1.0> 'get-service' -Name browser") 
End Sub 

我得到一個運行時錯誤「file not found」,所以我至少是猜測我的語法不正確。

回答

0

您的外殼命令損壞,您傳遞提示而不是可執行文件的路徑。目前無法測試,但這應該工作:

Sub Button2_Click() 
    Dim retval As String 
    retval = Left(Shell("powershell -command '(get-service -Name browser).Status'"),2) 
End Sub 

編輯上面的腳本作品,但作爲預期與外殼函數僅返回執行命令
的WshShellExec功能可以的PID做你想做的事,但它運行PowerShell窗口有一個惱人的閃爍。

Sub Button2_Click() 
    Set WshShell = CreateObject("WScript.Shell") 
    Set WshShellExec = WshShell.Exec("powershell -command ""(get-service -Name browser).Status""") 
    retval = Left(WshShellExec.StdOut.ReadAll, 2) 
End Sub 
+0

謝謝LotPings, – Jimf2

+0

謝謝LotPings, 我必須承認,我看着那個代碼多次,並沒有看到,這是不完整的。所以,你的建議執行OK,但它似乎返回2個數字?我期待着2個字符'RU'或'ST'。另外,每個後續執行(我有一個用執行字符串編碼的按鈕)返回一個不同的數字。我不確定這些數字代表什麼。任何想法? – Jimf2

+0

@ Jimf2編輯我的答案。 – LotPings

相關問題