【问题标题】:Remotely Set-Printer Options远程设置打印机选项
【发布时间】:2021-05-24 16:19:19
【问题描述】:

我正在编写一个脚本来使用 PowerShell 设置不同的打印机设置(共享、发布、双面打印等)。在我的环境中,我的服务器访问帐户与我的工作站不同。所以我试图将这些提升的权限传递给服务器以创建打印机并选择所有不同的选项,以及设置权限。

使用凭据管理器,并在调用中创建一个新的 CimSession 来创建打印机,它可以在我的工作站上正常工作。但是在设置打印机选项时,它不会将服务器或打印机名称传递给调用。

因此,以下是创建新打印机端口和打印机的调用:

Add-PrinterPort -Name $IP -ComputerName $Server -PrinterHostAddress $IP -CimSession $Remote -ErrorAction SilentlyContinue
Add-Printer -ComputerName $Server -Name $Printer -PortName $IP -Driver $Driver -Location $Loc -Comment $Comment -CimSession $Remote

这一切都按预期工作。这是我用来设置选项的内容(由于访问被拒绝而失败):

Set-Printer -ComputerName "$Server" "$Printer" -Shared:$true -ShareName "$Printer" -Published:$true -PermissionSDDL 'G:SYD:(A;;SWRC;;;AC)(A;OIIO;RPWPSDRCWDWO;;;AC)(A;;SWRC;;;S-1-15-3-1024-155201139-2658482041-3127973164-329287231-3865880861-1938685643-461067658-1087000218)(A;OIIO;RPWPSDRCWDWO;;;S-1-15-3-1024-150205139-2658482041-3872973164-329287231-3865880861-1938685643-461067658-1087000218)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1425521274-6549912557-618529)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1276648271-1425521274-6549912557-618529)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1422146274-6549912557-485967)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1194558071-1425521274-6549912557-485967)(A;OIIO;GA;;;CO)(A;;SWRC;;;WD)(A;CIIO;GX;;;WD)(A;;LCSWSDRCWDWO;;;BA)(A;OICIIO;GA;;;BA)'

由于无法在 Set-Printer 命令中指定凭据,因此我开始使用 Invoke-Command。仅供参考,我真的不了解 Invoke-Command 的细节,这可能是我的麻烦。如:

$Para = @{
    ComputerName = $Server
    ScriptBlock = {
        Set-Printer -ComputerName $Args[1] $Args[0] $Args[2] $Args[3] $Args[4] -PermissionSDDL 'G:SYD:(A;;SWRC;;;AC)(A;OIIO;RPWPSDRCWDWO;;;AC)(A;;SWRC;;;S-1-15-3-1024-4044835139-2658482041-3127973164-329287231-3865880861-1938685643-461067658-1087000422)(A;OIIO;RPWPSDRCWDWO;;;S-1-15-3-1024-4044835139-2658482041-3127973164-329287231-3865880861-1938685643-461067658-1087000422)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-348522)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-348522)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-285055)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-285055)(A;OIIO;GA;;;CO)(A;;SWRC;;;WD)(A;CIIO;GX;;;WD)(A;;LCSWSDRCWDWO;;;BA)(A;OICIIO;GA;;;BA)'
        }#End ScriptBlock
    ArgumentList = "$Printer", "$Server", "-Shared:$true", "-ShareName $Printer", "-Published:$true"
}
Invoke-Command @Para

这很糟糕。

有人可以帮我指出正确的方向吗?

【问题讨论】:

  • 您不应该在Invoke-Command 中进行计算机调用,因此不要为Set-Printer cmdlet 设置ComputerName 参数,因为您已经使用Invoke-Command 在这台计算机上。不要忘记双跳限制。
  • 你为什么同时使用ComputerNameCimSession 参数(你不使用Set-Printer 命令)。 CimSession 只能在不使用 Invoke-Command 的情况下工作。

标签: powershell invoke-command


【解决方案1】:

我认为您的问题是您如何设置远程呼叫。这些仍然是 cmdlet,您传递参数的方式没有任何意义。我认为这就是你想要完成的:

$icParms = @{
    ComputerName = $Server
    ScriptBlock  = {
        $spParms = @{
            Name           = $using:Printer
            ComputerName   = $using:Server
            Shared         = $true
            ShareName      = $using:Printer
            Published      = $true
            PermissionSDDL = 'G:SYD:(A;;SWRC;;;AC)(A;OIIO;RPWPSDRCWDWO;;;AC)(A;;SWRC;;;S-1-15-3-1024-4044835139-2658482041-3127973164-329287231-3865880861-1938685643-461067658-1087000422)(A;OIIO;RPWPSDRCWDWO;;;S-1-15-3-1024-4044835139-2658482041-3127973164-329287231-3865880861-1938685643-461067658-1087000422)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-348522)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-348522)(A;;LCSWSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-285055)(A;OIIO;RPWPSDRCWDWO;;;S-1-5-21-1275210071-1425521274-1177238915-285055)(A;OIIO;GA;;;CO)(A;;SWRC;;;WD)(A;CIIO;GX;;;WD)(A;;LCSWSDRCWDWO;;;BA)(A;OICIIO;GA;;;BA)'
        }
        Set-Printer @spParms
    }
}
Invoke-Command @icParms

请参阅about_Remote_Variables 主题。

【讨论】:

  • 抱歉回复晚了,我休息了几天。这对我来说是一个学术练习(因为我对这个话题完全一无所知)以及在商业中使用的东西。所以,Maximilian,您要说的是,您正在创建一个嵌套参数集 (spParms),其中包含要传递给打印服务器的信息,而 icParms 正在创建与打印服务器本身的连接。对吗?
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2019-05-10
  • 2014-02-23
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多