Я изо всех сил пытался заставить этот скрипт работать через Intune в течение нескольких дней. Ниже приведен скрипт, который проверяет, установлен ли принтер, если нет, драйвер загружается из нашего хранилища BLOB-объектов, извлекается, добавляется в хранилище драйверов, а затем добавляется принтер.

Сценарий отлично работает при локальном запуске, однако, когда я отправляю его через Intune на наши устройства Windows 10, принтер не добавляется, и Intune сообщает мне, что скрипт не удалось запустить на целевых устройствах, но я не уверен, почему.

Сценарий завершается с ошибкой в строке, начинающейся с $pnpOutput , все до тех пор, пока эта строка не будет завершена. После этой строки add-printerport успешно (порт принтера добавляется на компьютер), но больше ничего не происходит, потому что все остальные команды требуют установки драйвера, а это не так. Проверка C:\Windows\INF на целевом компьютере подтверждает, что драйвер не был добавлен в хранилище драйверов.

Я полагаю, что проблема связана с тем, как я pnputil.exe с powershell. Я попытался сформулировать команду несколькими способами без результата. Я довольно новичок в powershell, но знаю достаточно, чтобы объединить несколько сценариев и выполнить некоторые базовые действия по устранению неполадок.

Я попытался добавить некоторые сообщения об ошибках, но безуспешно. Я пытался out-file $pnpoutput линии , но результирующий файл был пуст. Я попытался добавить попытку / перехватить весь последний блок, но мой файл журнала даже не был создан (даже локально, даже когда я специально сломал скрипт, чтобы вызвать ошибку).

# This script installs the US Bizhub C368 printer
# This checks to see if the printer has already been added
$CheckPrinter = Get-printer | where {$_.Name -like "US Bizhub C368"}
If ($CheckPrinter -eq $null) {

# Make IT folder for driver download
$ITFolder = "C:\IT"
New-Item -Path $ITFolder -ItemType Directory

# Download the driver from Azure Blob repository
$source = "OurAzureBlobURL.com"
$zipdestination = "$ITFolder\USBizhubC368Driver.zip"
Invoke-WebRequest $source -OutFile $zipdestination

# Extract the zip archive and delete the zip
$unzippeddestination = "$ITFolder\USBizhubC368Driver"
Expand-Archive -Path $zipdestination -DestinationPath $unzippeddestination
Remove-Item -Path $zipdestination

$pnpOutput = pnputil -a "$unzippeddestination\KOAXWJ__.INF" | Select-String "Published name"
$null = $pnpOutput -match "Published name :\s*(?<name>.*\.inf)"
$driverINF = Get-ChildItem -Path C:\Windows\INF\$($matches.Name)
Add-PrinterDriver -Name "KONICA MINOLTA C368SeriesPCL" -InfPath $driverINF.FullName
Add-PrinterPort -Name "US Bizhub C368" -PrinterHostAddress "192.168.121.20"
Add-Printer -Name "US Bizhub C368" -DriverName "KONICA MINOLTA C368SeriesPCL" -PortName "US Bizhub C368"

}

У кого-нибудь есть какие-либо идеи? Я готов к пробам и ошибкам, поэтому, если вы знаете, как правильно вести запись, я с удовольствием настрою это, отправлю через Intune и сообщу об ошибке. Powershell - не мой родной язык (пока), поэтому, возможно, мне понадобятся ответы, которые немного ошарашены, если это возможно :)

Спасибо!

1 ответ1

0

Я полностью пересмотрел свой ответ после просмотра других сценариев, которые делают то же, что вы хотите достичь, принимая во внимание intune.

Пожалуйста, попробуйте ниже:

# This script installs the US Bizhub C368 printer
# This checks to see if the printer has already been added
$CheckPrinter = Get-printer | where {$_.Name -like "US Bizhub C368"}
If ($CheckPrinter -eq $null) {

# Make IT folder for driver download
$ITFolder = "C:\IT"
New-Item -Path $ITFolder -ItemType Directory

# Download the driver from Azure Blob repository
$source = "OurAzureBlobURL.com"
$zipdestination = "$ITFolder\USBizhubC368Driver.zip"
Invoke-WebRequest $source -OutFile $zipdestination

# Extract the zip archive and delete the zip
$unzippeddestination = "$ITFolder\USBizhubC368Driver"
Expand-Archive -Path $zipdestination -DestinationPath $unzippeddestination
Remove-Item -Path $zipdestination

if($env:PROCESSOR_ARCHITECTURE -eq "x86"){
    Start-Process "$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -WorkingDirectory $ITFolder -ArgumentList "pnputil /add-driver *.inf /subdirs /install | Out-File -FilePath (Join-Path $ITFolder '\Install-Drivers.txt')" -NoNewWindow -Wait
}
elseif($env:PROCESSOR_ARCHITECTURE -eq "AMD64"){
    Start-Process "powershell.exe" -WorkingDirectory $ITFolder -ArgumentList "pnputil /add-driver *.inf /subdirs /install | Out-File -FilePath (Join-Path $ITFolder '\Install-Drivers.txt')" -NoNewWindow -Wait
}

[String]$pnpOutput = Get-Content "$ITFolder\Install-Drivers.txt" | Select-String "Published Name"
$pnpOutput -match "Published name:\s*(?<name>.*\.inf)"
$driverINF = Get-ChildItem -Path C:\Windows\INF\$($matches.Name)
Add-PrinterDriver -Name "KONICA MINOLTA C368SeriesPCL" -InfPath $driverINF.FullName
Add-PrinterPort -Name "US Bizhub C368" -PrinterHostAddress "192.168.121.20"
Add-Printer -Name "US Bizhub C368" -DriverName "KONICA MINOLTA C368SeriesPCL" -PortName "US Bizhub C368"

}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .