从列表中生成打印机快捷方式

Posted

技术标签:

【中文标题】从列表中生成打印机快捷方式【英文标题】:Generating printer shortcuts from list 【发布时间】:2012-11-06 14:15:04 【问题描述】:

我正在尝试为打印服务器上的每台打印机生成一个快捷方式。这个想法是能够通过电子邮件将这些快捷方式发送给人们,当他们点击它们时,它会自动为他们安装该打印机。

我从打印服务器导出的打印机名称列表中填充了一个数组:

$list = @((get-contnet $home\dekstop\plist.txt))

然后我创建了一个创建快捷方式的方法:

function Make-Shortcut

param ([string]$dest, [string]$source)
$WshShell = New-Object -comObject Wscript.Shell
$Shortcut = $WshShell.CreateShortcut($dest)
$Shortcut.TargetPath = $Source
$Shortcut.Save()

该功能运行良好。我能够毫无问题地创建标准快捷方式。

下一部分是我卡住的地方:

foreach ($i in $list)

Make-Shortcut "C:\pshort\$i.lnk" "C:\Windows\System32\rundll32.exe 
printui.dll,PrintUIEntry /in /q /n\\printserver\$i"

运行时,它会为列表中的每台打印机生成一个与打印机同名的快捷方式。但是,问题出现在目标路径上。而不是

C:\Windows\System32\rundll32.exe printui.dll,PrintUIEntry /in /q /n\\printserver\printername

将其更改为:

C:\Windows\System32\rundll32.exe printui.dll,PrintUIEntry \in \q \n\printserver\printername

这样做的三个问题是:

    它正在反转参数的正斜杠 它正在删除服务器名称前面的反斜杠之一 它正在向两边添加引号。我需要去掉引号才能使快捷方式正常工作。

我认为这是因为 Powershell 认为我正在尝试创建标准快捷方式,并认为我在输入路径时犯了错误。

我尝试在每个正斜杠前放置一个 `,希望转义字符能阻止它反转它,但没有运气。我也尝试为每个参数使用连字符,但这也不起作用。

有没有办法阻止这种情况发生?或者有没有更好的方法来尝试完成我想做的事情?

【问题讨论】:

【参考方案1】:

你需要给com object添加参数

尝试将新参数 $arguments 添加到您的 Make-Shortcut 函数并执行以下操作:

Make-Shortcut "C:\pshort\$i.lnk" "C:\Windows\System32\rundll32.exe" 
"printui.dll,PrintUIEntry /in /q /n\\printserver\$i"

在你的函数中添加这个:

$Shortcut.Arguments = $arguments

所以链接创建成功......但我不知道它是否有效:)

【讨论】:

我可以通过 1 次小调整来实现这一点。在调用 Make-Shortcut 时,我必须在第二个参数中添加一个 + " " 以获取要附加的参数。否则,快捷方式在 rundll32.exe 处停止。非常感谢您的帮助! @JohnLarlen Gald 来帮忙!很高兴知道空格字符!【参考方案2】:

完全不同的答案,但在标准 Windows 环境中,只需单击指向 \printserver\printer 的超链接即可将共享打印机添加到某人的系统中?

所以一封简单列出的电子邮件:

\\PrintServer\Printer01 \\PrintServer\Printer02 \\PrintServer\Printer03

可能也能胜任这项工作。

【讨论】:

很遗憾,我们使用的电子邮件客户端不允许这样做。

以上是关于从列表中生成打印机快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

maven项目右键快捷方式,然后点击Run As

Android 应用程序未从快捷方式启动

text 在JavaScript中生成随机字符串简短快捷!

qq快捷方式怎么设置 设置快捷方式的步骤

如何让 siri 说出列表中的项目?

将 Windows 桌面快捷方式拖放到 listView