gpt4 book ai didi

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

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

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

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

$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 认为我正在尝试创建标准快捷方式,并认为我在输入路径时犯了错误。

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

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

    最佳答案

    您需要向 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

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

    关于powershell - 从列表生成打印机快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252863/

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