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