2013-10-16 48 views
1

我正在創建一個powershell腳本來檢查OU用戶與已經爲文件共享存檔配置的用戶進行檢查,但是我碰到了一個絆腳石。我可以查詢AD以獲取每個OU及其主目錄的用戶列表,將所有詳細信息轉儲到日誌的文本文件並基於後續查詢。一旦我有了這些細節,我嘗試運行一個dos命令,(Enterprise Vault)Archivepoints.exe將變量傳遞給它。該命令通常是:在引用UNC路徑的PowerShell中運行cmd

Archivepoints.exe find \\fopserver045v\ouone_users$ 

當我嘗試運行下面的代碼時出現錯誤。

$app="D:\Enterprise Vault\ArchivePoints.exe" 
$EVArg = "find" 
$VolLine = "\\fopserver045v\ouone_users_r$" 
Invoke-Item "$app $EVArg $VolLine" 

Invoke-Item : Cannot find path 'D:\Enterprise Vault\ArchivePoints.exe find \fopserver045v\ouone_users_r$' because it does not exist. 

起初我還以爲這是缺少是造成這一問題的UNC路徑的第一個反斜槓,但我不再肯定。

EV服務器和UNC浴池上運行的腳本和命令實際上並不到服務器,它只是EV內的參考路徑,所以它不是憑證問題。

如果可能,我需要能夠將輸出記錄到文件中。

代碼應該是什麼樣的,我應該使用invoke-command還是Invoke-Expression來代替?

感謝

回答

0

不要使用Invoke-Item。應使用呼叫操作員運行外部命令(&)。您可以使用splatting作爲參數列表。

$app="D:\Enterprise Vault\ArchivePoints.exe" 
$arguments = "find", "\\fopserver045v\ouone_users_r$" 

& $app @arguments