2014-11-05 42 views
0

我想從具有變量驅動器名稱的驅動器調用exe文件。 代碼首先在系統的每個驅動器中搜索路徑,一旦發現它進入If條件,我想調用一個命令-bpimagelist。在調用exe文件時獲取Powershell腳本錯誤

下面是代碼,它給出了一個不尋常的錯誤。

for($pat=67 ;$pat -le 87 ;$pat++) 
{ 
$y = [char]$pat; 
$path = $y+":\Veritas\Netbackup\bin\admincmd" 
If((Test-Path $path)) 
{ 
Write-Host $path "is found in" $y "drive" 
Invoke-Item $y":\Veritas\Netbackup\bin\admincmd\bpimagelist -client abc.ge.com -d 11/01/2014 -U" 
break 
} 
Else 
{ 
continue 
} 
} 

錯誤:

PS C:\Documents and Settings\abala\Desktop> .\veritasscript.ps1 
D:\Veritas\Netbackup\bin\admincmd is found in D drive 
Invoke-Item : Cannot find path 'C:\Veritas\Netbackup\bin\admincmd\bpimagelist - 
client hclinnobpm01.jnj.com -d 11\01\2014 -U' because it does not exist. 
At C:\Documents and Settings\admin_broy5\Desktop\veritasscript.ps1:8 char:17 
+  Invoke-Item <<<< $y":\Veritas\Netbackup\bin\admincmd\bpimagelist -clien 
t hclinnobpm01.jnj.com -d 11/01/2014 -U" 

================================== ===============

我不知道爲什麼錯誤顯示C:\ Veritas當$ y的當前值是D,也在寫主機行它打印爲D驅動器中的路徑。 有人可以請建議一個方法來調用上面的exe文件嗎?

+0

是的,它確實存在於d驅動器,這就是爲什麼輸出的第一行是 - 「d:\ VERITAS \的Netbackup \ BIN \ admincmd有是發現在D驅動器「 – 2014-11-05 17:34:13

+0

沒有先生,甚至包括在TestPath中的bpimagelist不起作用。 目前爲了測試目的,我試圖用下面的代碼調用位於C:\ Windows \ syste32下的fsutil.exe,但即使這樣也行不通。 Invoke-Expression「volume diskfree」$ y「:」 有什麼建議嗎? – 2014-11-05 17:36:43

回答

0

您使用了錯誤的cmdlet時使用Invoke-Item

將其更改爲Invoke-Expressioniex

Invoke-Expression "$($y):\Veritas\Netbackup\bin\admincmd\bpimagelist -client abc.ge.com -d 11/01/2014 -U" 
+0

即使這樣也行不通。 對於一個簡單的測試,我試圖調用Windows fsutil文件: Invoke-Expression「fsutil volume diskfree」$ y「:」 但即使這樣也行不通。以下錯誤: Invoke-Expression:無法找到接受參數'C:'的位置參數。 – 2014-11-05 17:31:27

+0

由於冒號,請謹慎使用該命令。它應該是:'Invoke-Expression'fsutil volume diskfree $($ y):「' – arco444 2014-11-05 17:34:05

+0

事實上,當我嘗試粘貼的命令時出現同樣的錯誤,所以你錯了。我會用你的問題中的完整命令進行測試,然後才能確定它不起作用 – arco444 2014-11-05 17:35:05

1

一個更好的辦法來做到這一點是使用Start-Process,而不是之一Invoke命令。

下面是一個例子:如果拋出了同樣的錯誤,你應該檢查機器是否真的的bpimagelist存在

Start-Process "$y:\Veritas\Netbackup\bin\admincmd\bpimagelist" -argumentList @("-client abc.ge.com","-d 11/01/2014","-U") 

有關使用PowerShell運行可執行文件的詳細信息請查看Technet Wiki

+0

明天當我到達Prod環境中的辦公室時,我會嘗試啓動過程。同時在家裏,我試圖在Invoke-Expression裏面調用帶有變量驅動器名稱的簡單fsutil.exe,它現在可以與arco444的有用答覆一起使用。但這不是我的要求。我想調用表達式中沒有幾個開關的bpimagelist,我不知道它會起作用或不起作用。我將在明天嘗試並在這裏發佈。謝謝 – 2014-11-05 17:48:15

相關問題