我正在尝试使用 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