gpt4 book ai didi

powershell - 尝试使用 PowerShell 使用 URL 变量在桌面上创建 URL 快捷方式

转载 作者:行者123 更新时间:2023-12-05 05:35:14 25 4
gpt4 key购买 nike

我在高等教育机构工作,我们需要 100 多间教室的每台计算机在桌面上都有一个指向室内摄像机 IP 地址的 URL 快捷方式。我正在尝试使用 PowerShell 脚本自动执行此操作。我创建了一个脚本,它有一个表,查找计算机名称,在表中查找关联的 IP 地址,并在桌面上创建一个 URL 快捷方式。不幸的是,每当我尝试将 $IP 变量传递给 $urlShortcut.TargetPath 时,我都会收到错误消息。我希望这是一个简单的解决方法?提前致谢!

这是我的脚本的通用版本。例如,如果我将 $urlShortcut.TargetPath = $IP 替换为 $urlShortcut.TargetPath = "https://www.google.com",它会创建快捷方式谷歌。

#Create table
$table = @{}
$table.Add('Room 1,'1.1.1.1')
$table.Add('Room 2','1.1.1.2')

#Determine computer name
$CPUName = $env:computername

#Determine IP address based on room
$IP = $table[$CPUName]

#Display IP Address
write-output $IP

#Create shortcut on desktop
$wshShell = New-Object -ComObject "WScript.Shell"
$urlShortcut = $wshShell.CreateShortcut(
(Join-Path $wshShell.SpecialFolders.Item("AllUsersDesktop") "Camera Control.url")
)
$urlShortcut.TargetPath = $IP
$urlShortcut.Save()

最佳答案

Mathias R. Jessen提供了关键指针:

  • 在分配给 $urlShortcut.TargetPath 时使用 "http://$IP/" 而不仅仅是 $IP,假设您想打开一个URL

快捷方式文件在其.TargetPath 属性中支持的命令形式是由ShellExecuteEx 识别的。 WinAPI 函数,这两个 PowerShell 的 Start-Process cmdlet 和 cmd.exe 的内部 start 命令包装。

因此,您可以使用Start-Process测试快捷方式文件的命令;例如:

# !! WRONG 
# Without a protocol specifier such as http:, the URL isn't recognized.
Start-Process example.org

# OK
Start-Process https://example.org

但是,Start-Process 做的[1] - 不像快捷方式文件和cmd.exestart 命令 - 用于扩展 cmd.exe 样式的环境变量引用,例如 %windir%

因此,从 PowerShell 中完整模拟快捷方式文件命令行将执行的操作需要调用 cmd.exe 的内部 通过cmd/c启动命令;例如,测试命令行 notepad.exe %windir%\win.ini:

cmd /c 'start "" notepad.exe %windir%\win.ini'

注意:命令行前面的 "" 参数绑定(bind)到 start 的参数,用于为新进程指定窗口标题 (仅适用于调用控制台 应用程序)。绑定(bind)此参数允许您使用 "..." 封闭的可执行路径作为命令行的一部分进行测试。


[1] 由于其构建的 .NET API 的行为,System.Diagnostics.Process .

关于powershell - 尝试使用 PowerShell 使用 URL 变量在桌面上创建 URL 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73546076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com