windows - 使用 BAT/PS 脚本自动安装

标签 windows powershell batch-file automation wix

我一直在尝试自动安装我的一个应用程序,但遇到了一些障碍,我真的需要一些帮助。

目前我们正在使用戴尔的 KACE 技术将安装程序推送到本地机器。安装程序以 SYSTEM 用户身份运行,这意味着它不能也不能直接访问网络共享(稍后相关)。

应用安装流程如下:
停止本地安全服务以允许软件安装
删除映射到驱动器盘符 X 的所有内容
映射网络驱动器X\test\test
TestApp.exe/s
msiexec/i Test.msi/quiet
启动本地安全服务以允许安装软件
复制快捷方式文件到桌面

安装本身有 1 个可执行文件和 1 个必须运行的 MSI。 EXE 安装大型机应用程序。 MSI 文件在本地安装一些文件,然后注册位于该映射驱动器上的 6 个 DLL 文件。

这就是问题所在 - 因为这些文件必须位于该共享驱动器上并且安装程序以 SYSTEM 身份运行 -> 系统帐户无法访问映射的驱动器来注册文件,因此安装失败。

我不能简单地在批处理文件中以明文形式存储用户名/密码,这进一步限制了我。

到目前为止,这是我的代码:

REM Stopping McAfee Services
echo Stopping McAfee Services.
net stop mcshield
net stop mcafeeframework

REM Map Network Drive
echo Mapping Network Drive
net use X: /delete /y
net use X: \\test\test

(Here is where I need help - Is there a way to force a username/password prompt here for the user? I basically just want the user to authenticate to the X drive mapping, which will allow the installation to move forward)

echo Starting Test 1 Installation
Test1.exe /s /v"/qb"
echo Starting Test 2 Installation
msiexec /i Test2.msi /quiet
(If the drive has not been mapped by this point, the installation fails as the SYSTEM account can't access the drive)

echo.

REM Restarting Mcafee Services
echo Starting McAfee Services.
net start mcshield
net start mcafeeframework
echo.

REM Copy Shortcut
xcopy "shortcut\*" "C:\Users\public\desktop"

或者,

我可以/应该将其转换为 PS 脚本吗?我知道 PS 比批处理更强大,但不确定如何去做。

最佳答案

如果通过强制身份验证提示,您的意思是需要人工输入(并且您没有远程运行此脚本),那么此行应该与现有登录 session 交互并要求提供凭据:

start explorer \\test\test
echo After you have entered network credentials
pause

一旦用户输入有效的,剩下的脚本可以继续

net use X: \\test\test

关于windows - 使用 BAT/PS 脚本自动安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632411/

相关文章:

visual-c++ - 运行vcvars32.bat后如何重置环境

Java 无法使用 ProcessBuilder 运行 Exec Jar

asp.net-mvc - 无法安装 Asp.net MVC 3

powershell - 在 powershell 中使用 Azure CLI 创建 CosmosDB

powershell - Sitecore Powershell 100件限制

string - 如何批量反转字符串?

c# - 没有控制台窗口或依赖项的简单 DOM 操作

c++ - 我可以在低级 Hook 过程中区分触摸板和鼠标消息吗? (Win32)

c++ - CreateDIBSection 留下 'Not enough storage' 错误,但似乎仍然有效

sql - 来自 Powershell Invoke-Sqlcmd 的错误检测并不总是有效?