![如何使用 Powershell 获取打印服务器上的打印机共享?](https://linux22.com/image/519146/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Powershell%20%E8%8E%B7%E5%8F%96%E6%89%93%E5%8D%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA%E5%85%B1%E4%BA%AB%EF%BC%9F.png)
我正在尝试使用 Powershell 从远程打印服务器获取打印共享。
我在用着:
Get-WmiObject Win32_Share -computerName "print-server"
我收到“访问被拒绝”错误:
Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
At line:1 char:14
+ Get-WmiObject <<<< Win32_Share -computerName "print-server"
+ CategoryInfo : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
我不明白为什么我看不到共享,但是,好像我通过我的电脑(例如\\print-server\)连接,我可以看到所有的打印共享。
有任何想法吗?
谢谢。
本
答案1
是的,您可以在 Windows 资源管理器中看到它们,但使用 Powershell 命令时访问被拒绝,因为您正尝试在远程计算机上执行 WMI 查询,而您需要有效的凭据。
如果您想存储凭据以便可以非交互地运行该命令,您可以转换密码并将其作为安全字符串存储在文件中,但这只是混淆,任何智能窥探者都能够对其进行解码。
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File secret.txt
$pass = Get-Content secret.txt | ConvertTo-Securestring
$creds = New-Object -Typename System.Management.Automation.PSCredential -Argumentlist "domain\admin",$pass
也许可以尝试完全放弃 WMI 查询路由。也许可以尝试一个好的旧 COM 对象,如下所示:
$network = New-Object -Com WScript.Network
$network.AddWindowsPrinterConnection($printerShare)
答案2
尝试按Get-WmiObject
如下方式传递凭据。
$Credential = Get-Credential
(您将收到输入凭证的提示)
Get-WmiObject Win32_Share -ComputerName 'PRINT-SERVER' -Credential $Credential