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.创建效果:

image

image


四、批量创建

##---------------------------------------------------------------
##  功能:
##      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

image



免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://blog.csdn.net/xf555er/article/details/132147601
https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/admin-development/create-desktop-shortcut-with-wsh



posted @ 2024-01-30 14:45  悟透  阅读(308)  评论(0编辑  收藏  举报