繁体   English   中英

使用 PHP powershell 脚本更改默认打印机纸张尺寸

[英]Change Default Printer paper size with PHP powershell script

我正在尝试从 PHP 更改默认打印机纸张大小

索引.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 运行它拒绝使用打印机名称或错过双引号,如何解决此问题。

为什么不把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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM