Назад | Перейти на главную страницу

Как я могу получить общий доступ к принтеру на сервере печати с помощью Powershell?

Я пытаюсь использовать 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 \), я могу видеть все общие ресурсы печати в порядке.

Любые идеи?

Спасибо.

Бен

Да, вы можете увидеть их в проводнике 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)

Попробуйте передать учетные данные с помощью Get-WmiObject следующим образом.

$Credential = Get-Credential

(Вы получите запрос на ввод учетных данных)

Get-WmiObject Win32_Share -ComputerName 'PRINT-SERVER' -Credential $Credential