Windows PowerShell批量创建.lnk快捷方式(不是软连接、硬链接)
前言全局说明
Windows 批量创建.lnk快捷方式(不是软连接、硬链接)
快捷方式、软连接、硬链接,介绍:https://www.cnblogs.com/wutou/p/17996851
一、介绍
在使用 Anydesk 时发现,可以使用快捷方式指定ID,接收参数,来远程连接某台机器, 而不用打开界面,再输入ID来远程机器,很方便。 但因为ID多,或者是内网指定IP,而IP又总是在变,手动输入麻烦。 之前查询过是否能用命令行生成.lnk 文件,但这种快捷方式,不是url类的文本,可以用 echo 生成。文本打开后是乱码。并不能直接编辑。 cmd.exe命令提示符里有个mklink 命令,也可以生成 快捷方式,但和 Anydesk 生成的 并不是一样类型的快捷方式。 经过网上查资料,有人用 python 和 PowerShell 生成。 当然,用C/C++/python语言写个程序,也能生成.lnk文件,但是还要装各种环境, 属实有些小题大做,首选当然考虑用脚本语音来编写。
二、python 编写生成.lnk文件
这里不是主要讲用 python 的创建方法。
有兴趣可以看原文连接《Windows 如何打开和编辑.lnk文件》
原文连接:https://blog.csdn.net/B11050729/article/details/131538291
import pylnk3 # 准备lnk文件内容数据 args = "A B C" desc = "a lnk to test.bat" icon_f = "%SystemRoot%\\System32\\SHELL32.dll" icon_idx = 320 work_dir = "F:\\test" window_m = pylnk3.WINDOW_NORMAL target_f = "F:\\test\\test.bat" lnk_name = "F:\\test\\test.lnk" # 创建lnk文件 pylnk3.for_file(target_file=target_f,lnk_name=lnk_name, arguments=args,description=desc,icon_file=icon_f, icon_index=icon_idx,work_dir=work_dir,window_mode=window_m) # 解析生成的lnk文件 with open(lnk_name,"rb") as fdata: lnk = pylnk3.parse(fdata) print(lnk)
三、用PowerShell创建.lnk 文件
因为cmd 相关创建lnk功能,没有满足要求,本文主要用PowerShell创建 lnk 文件.
和使用右键里的“创建快捷方式一样”
1.代码
##------------------------------------- ## 功能: ## PowerShell 创建 .lnk 快捷方式 ## Date: ## 2024年1月30日 ##------------------------------------- ## 创建对象 $WshShell = New-Object -comObject WScript.Shell ## 设置生成的文件名 $Shortcut = $WshShell.CreateShortcut("192.168.1.111_7070.lnk") ## 设置源程序路径 $Shortcut.TargetPath = "D:\temp\AnyDesk.exe" ## 设置启动程序的参数 $Shortcut.Arguments = ''+ '192.168.1.111:7070' ## 保存到文件 $Shortcut.Save()
其他常用选项:
设置ico图标:$Shortcut.IconLocation = "%SystemRoot%\System32\Shell32.dll,1" (如果不设置,默认用exe的)
设置样式:$Shortcut.IWindowStyle = 3 &&Maximized 7=Minimized 4=Normal
设置快捷键:$Shortcut.Hotkey = "ALT+CTRL+F"
2.创建效果:
四、批量创建
##--------------------------------------------------------------- ## 功能: ## PowerShell 批量创建 AnyDesk.lnk 内网快捷方式 ## 来源: ## https://www.cnblogs.com/wutou/p/17996996 ## Date: ## 2024年1月31日 ##--------------------------------------------------------------- #********* 用户修改区 ************** ## IP前缀 & 端口 $IP_add = "192.168.18." $port = 7070 ## 起始、结束,产生IP数量 $num_begin = 2 $num_end = 30 ## 生成lnk文件路径 $lnk_PATH = "D:\temp\" ## AnyDesk.exe 路径 #$AnyDesk_exe_PATH = "D:\temp\AnyDesk.exe" $AnyDesk_exe_PATH = "D:\ProgramFiles\AnyDesk.exe" #********* 用户修改区 结束 ********** ## 启动提示信息 echo "" echo "[INFO] PowerShell 批量创建 AnyDesk.lnk 内网快捷方式" echo "" ## 创建对象 $WshShell = New-Object -comObject WScript.Shell For( $i=$num_begin; $i -lt $num_end; $i++ ) { $IP_name="$($IP_add)$($i)_$($port)" $IP_A="$($IP_add)$($i):$($port)" $lnk_name = "$($lnk_PATH)$($IP_name).lnk" #echo $IP_name #echo $IP_A echo "[ OK ] 创建lnk文件: $($lnk_name)" ## 设置生成的文件名 $Shortcut = $WshShell.CreateShortcut($lnk_name) ## 设置源程序路径 $Shortcut.TargetPath = "D:\temp\AnyDesk.exe" ## 设置启动程序的参数 $Shortcut.Arguments = ''+ $IP_A ## 描述 $Shortcut.Description = "通过AnyDesk连接 $($IP_name)" ## 设置图标 #$Shortcut.IconLocation = "%SystemRoot%\System32\Shell32.dll,1" ## 保存到文件 $Shortcut.Save() } echo "" echo "[ OK ] 完成." echo ""
五、问题
1.无法加载文件 E:MyScript.ps1,因为在此系统中禁止执行脚本
参照一些两篇文章解决:
https://blog.csdn.net/m0_53673930/article/details/126812907
https://zhuanlan.zhihu.com/p/76708298?utm_id=0
http://www.taodudu.cc/news/show-6407384.html?action=onClick
以管理员身份启动PowerShell:
查看现在策略状态
get-executionpolicy
修改策略状态:
set-ExecutionPolicy RemoteSigned 或 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.csdn.net/xf555er/article/details/132147601
https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/admin-development/create-desktop-shortcut-with-wsh
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
2022-01-30 Python 50条有趣的Python一行代码