因此,我查看了尽可能多的有关 InTune 和 NSIS 的文档,但似乎仍无法弄清楚这一点。
我有一个 NSIS 静默安装程序(在本地执行时,甚至通过 psexec 作为系统执行时)完全没有问题,但在使用 InTune 进行软件部署时似乎什么都不做。安装程序调用一个批处理文件,该文件运行 vbscript 来枚举系统上的所有用户,然后更改所有用户的密码:有关上述所有内容的来源,请参见下文。
NSIS 安装程序
Name "Silent"
OutFile "silent.exe"
RequestExecutionLevel admin
Function .onInit
SetSilent silent
FunctionEnd
Section ""
File FindUsers.vbs
File un.bat
Exec un.bat
SectionEnd
VBS 脚本
Set exclude = CreateObject("Scripting.Dictionary")
exclude.CompareMode = vbTextCompare
exclude.Add "HomeGroupUser$", True
exclude.Add "Guest", True
Set accounts = GetObject("WinNT://.")
accounts.Filter = Array("user")
For Each user In accounts
If Not exclude.Exists(user.Name) Then WScript.Echo user.Name
Next
最后是批处理文件:
@echo off
setlocal
set newpw=Test
for /f "delims=" %%u in ('cscript //NoLogo FindUsers.vbs') do (
echo "net user "%%u" "%newpw%""
net user "%%u" "%newpw%"
)
为什么使用 intune 部署时无法正常运行,但以用户或系统身份执行时可以正常运行?
答案1
应该执行外壳
ExecShell open un.bat
答案2
您可能还必须指定输出目录,请参阅设置输出路径
SetOutPath $TEMP
File "un.bat" # will be extracted to $TEMP
ExecShell open "$TEMP\un.bat"