批次檔使用UNC路徑執行安裝程式常會收到無法執行的錯誤解法

症狀

在批次檔內如果使用UNC路徑執行程式,如(\\ServerName\SharedFolder\xxx.exe)常會遇到以下類似問題。





發生原因

有時安裝程式不允許從遠端執行。



解決方式

可以使用內建指令 pushdpopd 將遠端伺服器的分享資料夾暫時掛上為網路磁碟機,然後直接執行分享資料夾內的安裝或更新程式


場景如下:
在 \\ServerName\SharedFolder\ 裡有 ieconf.msi 及 PKISETUP.exe 兩種類型的安裝檔,但利用批次檔執行派送安裝時,PKISETUP.exe 無法遠端執行。


範例批次檔
==========================
pushd \\ServerName\SharedFolder
msiexec /i ieconf.msi /qn
PKISETUP.exe
popd
==========================




心得與觀察

1. pushd 跟 popd 其實是類似 cd 這個指令,但 pushd 可以建立一個工作歷程的虛擬堆疊,以便可以快速返回瀏覽過的目錄,堆疊的主要特性是 "先進後出、後進先出";而 popd 就是依據堆疊的先後順序,在每次執行 popd 時切換到最上一個工作目錄,一直到最早被推入的工作目錄而止。

2. 而 pushd 使用在網路路徑上時跟 net use 看起來很相似,但其中還是存在一些差異。net use 掛上分享資料夾做為網路磁碟機時必須指定磁碟代號;但 pushd 卻是從(Z:)開始選擇未用的磁碟代號中自動掛上。此外 net use 可以帶入使用者名稱密碼存取遠端資料夾;但 pushd 卻沒有這些參數,這意味著網路資料夾必須是可以匿名存取或是使用目前登入的帳號密碼可以存取的(如: 雙方都為網域成員...)才行。







留言

熱門文章