Измените размер бумаги принтера по умолчанию с помощью PHP сценария powershell - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь изменить размер бумаги принтера по умолчанию с PHP

Index. php

<?php
$printer = Shell_Exec ('powershell.exe -executionpolicy bypass -NoProfile -Command "(Get-WmiObject win32_printer | Where-Object Default -eq $True).Name"');

$printer = substr($printer, 0, -1);
$printer = '"' . $printer . '"';
$cmd = ('powershell.exe -executionpolicy bypass -NoProfile -Command ../A5.ps1 ' .$printer);
echo shell_exec($cmd);
?>

A5.ps1

$printer=$args[0]
Set-PrintConfiguration -PrinterName $printer -PaperSize A5

Ошибка

Set-PrintConfiguration : The specified printer was not found. At C:\Users\t4taa\Desktop\phpdesktop\A5.ps1:2 char:1 + Set-PrintConfiguration -PrinterName $printer -PaperSize A5 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (MSFT_PrinterConfiguration:ROOT/StandardCi...erConfiguration) [Set-PrintCo nfiguration], CimException + FullyQualifiedErrorId : HRESULT 0x80070709,Set-PrintConfiguration

Когда я запускаю файл сценария из PowerShell, работает нормально, но из PHP он отказывается принимать имя принтера или пропускает двойные кавычки , как решить эту проблему.

1 Ответ

1 голос
/ 03 августа 2020

Почему бы не изменить A5.ps1 на

$printer = (Get-WmiObject win32_Printer | Where-Object { $_.Default -eq $true }).Name
Set-PrintConfiguration -PrinterName $printer -PaperSize A5

, чтобы PowerShell определил имя принтера по умолчанию и установил размер бумаги.

Таким образом вы можете сделать это в index.php :

<?php
$cmd = ('powershell.exe -ExecutionPolicy Bypass -NoProfile -File ../A5.ps1');
echo shell_exec($cmd);
?>

Используйте -File вместо -Command

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...