一、背景
工作中我们可能常常遇到一些需要批量处理的工作任务的场景,例如,为了方便用户快速打开某个应用程序,我们需要在用户的桌面上创建对应的快捷方式。如果手动一个个创建,不仅耗时费力,而且容易出错且没有什么意义。为了解决这个问题,我们决定采用脚本自动化处理的方式,以提高工作效率。
二、应用场景
某公司需要为员工批量配置办公电脑,其中一项需求就是在员工的桌面上创建多个快捷方式。这些快捷方式指向的是公司内部常用的应用程序和文件,以便员工能够快速访问和使用。然而,手动创建这些快捷方式不仅效率低下,而且容易出错。因此,我们需要一个自动化的解决方案来解决这个问题。
比如我司近期部署了nextcloud系统,现在需要在每一台电脑桌面创建一个快捷方式,以便员工可以快速的访问和使用。
三、解决方案
环境说明
终端管理平台:360天擎管理系统、域控制器
用户终端操作系统:win10
浏览器:Google
浏览器安装路径:有以下两个,一个是PROGRAMFILES目录下,另一个则是在用户目录下
set "chromePath1=%PROGRAMFILES%\Google\Chrome\Application\chrome.exe" ?
set "chromePath2=%LocalAppData%\Google\Chrome\Application\chrome.exe" ?
为了实现自动创建桌面快捷方式的需求,我做了两种尝试
方案一:
通过直接创建url快捷方式,然后通过天擎或者域控将url快捷方式分发至用户的桌面
这种方式直接明了,三下五除二就搞定,可是正如截图所示,我们采用的是SSL加密的方式访问nextcloud链接,但是因为自签名的SSL证书,不被浏览器信任访问的时候总是会提示以下内容
虽然点击高级-继续访问即可,但是对用户来说他就会觉得这个网站是不是有什么问题,甚至是不知道如何操作,每次遇到问题都会来找你,你也会觉得很烦
所以我就在想,有什么方式可以让自签名的ssl证书网站通过Google浏览器访问也不会有以上提示呢??于是有了以下的方案二。
方案二
经过查询相关资料后得知,在访问此类网站的时候可以增加忽略证书错误的参数(--test-type --ignore-certificate-errors),以跳过这个不安全提示,如下图所示
也就是你的快捷方式需要增加这个参数打开才会没有报错,但是这个快捷方式是link而不是上面说到的url类型的
目标地址为C:\Users\admin\AppData\Local\Google\Chrome\Application\chrome.exe --test-type --ignore-certificate-errors https://nextcloud.xxx.com
于是此时就出现了另一个问题,每个电脑的浏览器路径可能不一样,而且lnk类型的快捷方式不能直接通过天擎或者域控分发给计算机,而必须是在用户电脑上直接创建。
所以为了解决这个问题,我的思路是通过分发脚本然后在用户电脑上自动创建lnk类型的nextcloud快捷方式。
后来我们采用了批处理脚本(Batch Script)的方式进行处理(结合了VB)。我将脚本附在文末,具体步骤如下:
1、编写脚本:使用文本编辑器(如Notepad++)编写批处理脚本,其中包含创建快捷方式的命令。
说明:脚本大概就是通过bat将echo输出的内容写入到vbs文件,保存后执行成功则删除vbs文件本身,因为我的谷歌路径有多个,你也可以写个for循环让代码看起来比较优雅。
2、保存脚本:将编写好的脚本保存为“.bat”文件格式。
3、执行脚本:将“.bat”文件复制到需要创建快捷方式的员工电脑固定路径下,同时执行该脚本。(我司使用360天擎管理系统统一分发脚本文件,如果你们公司没有类似的终端管理系统,当然也可以通过配置域控的策略统一分发脚本文件至员工电脑)
4、配置定时任务执行脚本:如果你担心哪天被员工删除,那么你可以通过设置计划任务(Task Scheduler),定期自动运行该脚本,以便为员工自动创建桌面快捷方式。
5、效果,在用户桌面上会生成nextcloud云盘.lnk 的快捷方式,双击运行即可。
四、总结
通过使用批处理脚本的方式,我们成功实现了自动创建桌面快捷方式的需求。这不仅提高了工作效率,减少了人工操作的错误率,而且为员工提供了更加便捷的工作体验。在未来的工作中,我们可以继续探索和应用更多的自动化技术,以提高工作效率和降低工作成本。
原文链接
五、脚本附件
脚本附件:
@echo off ?
set "deskpath=%USERPROFILE%\Desktop\NextCloud云盘.lnk"
set "chromePath1=%PROGRAMFILES%\Google\Chrome\Application\chrome.exe" ?
set "chromePath2=%LocalAppData%\Google\Chrome\Application\chrome.exe" ?
if exist "%chromePath1%" ( ?
????type nul > CreateShortcut.vbs ?
????echo Set oWS = WScript.CreateObject^("WScript.Shell"^)>>CreateShortcut.vbs ?
????echo sLinkFile = "%deskpath%">>CreateShortcut.vbs ?
????echo Set oLink = oWS.CreateShortcut^(sLinkFile^)>>CreateShortcut.vbs ?
????echo oLink.TargetPath = "%chromePath1%">>CreateShortcut.vbs ?
????echo oLink.Arguments = "--test-type --ignore-certificate-errors https://nextcloud.xxx.com">>CreateShortcut.vbs ?
????echo oLink.Save>>CreateShortcut.vbs ?
????cscript //nologo CreateShortcut.vbs >nul ?
????del CreateShortcut.vbs ?
del "%USERPROFILE%\Desktop\NextCloud云盘.url"
) ?
if exist "%chromePath2%" ( ?
????type nul > CreateShortcut.vbs ?
????echo Set oWS = WScript.CreateObject^("WScript.Shell"^)>>CreateShortcut.vbs ?
????echo sLinkFile = "%deskpath%">>CreateShortcut.vbs ?
????echo Set oLink = oWS.CreateShortcut^(sLinkFile^)>>CreateShortcut.vbs ?
????echo oLink.TargetPath = "%chromePath2%">>CreateShortcut.vbs ?
????echo oLink.Arguments = "--test-type --ignore-certificate-errors https://nextcloud.xxx.com">>CreateShortcut.vbs ?
????echo oLink.Save>>CreateShortcut.vbs ?
????cscript //nologo CreateShortcut.vbs >nul ?
????del CreateShortcut.vbs ?
del "%USERPROFILE%\Desktop\NextCloud云盘.url"
)else ( ?
????echo Chrome browser not found. ?
) ?