【问题标题】: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

这样做的三个问题是:

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

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

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

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

【问题讨论】:

    标签: powershell printers


    【解决方案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

    可能也能胜任这项工作。

    【讨论】:

    • 很遗憾,我们使用的电子邮件客户端不允许这样做。
    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多