isarc01
Goto Top

Powershell Script funktioniert plötzlich nicht mehr!

Hallo

ich habe hier kleines Script, welches vor kurzen noch funktioniert hat.
Jetzt funktioniert es nicht mehr. (Fehler beim Lesen der Datei)

Wenn ich allerdings den PDF Filname direkt angebe, funktioniert es!
Weiß jemand, ob es von Seiten Microsoft eine Update gabe, das verhindert beliebige PDFs zu drucken ??


Funktioniert nicht:


#params from OD

param (
    [string]$file = "C:\Scans\Urkunden\*.pdf",  
    $number_of_copies = 1
)



for ($i = 1; $i -le $number_of_copies; $i++) {

    cmd /C "lpr -S 10.39.30.204 -P drucker $file"  

 }

Start-Sleep -s 1


Funktioniert:

#params from OD

param (
    [string]$file = "C:\Scans\Urkunden\test.pdf",  
    $number_of_copies = 1
)



for ($i = 1; $i -le $number_of_copies; $i++) {

    cmd /C "lpr -S 10.39.30.204 -P drucker $file"  

 }

Start-Sleep -s 1

Content-Key: 1388870319

Url: https://administrator.de/contentid/1388870319

Printed on: April 25, 2024 at 00:04 o'clock

Member: Cloudrakete
Cloudrakete Oct 14, 2021 updated at 13:26:32 (UTC)
Goto Top
Hi ,

wer führt das Skript aus? Ein User on-demand, ein scheduled Task?
Wenn zweiteres: Wo läuft der Task? Auf dem selben System wo auch die Files liegen? Welcher User startet das Skript?
Wie ist der letzte Status des Tasks?
Member: Coreknabe
Coreknabe Oct 14, 2021 at 14:08:52 (UTC)
Goto Top
Moin,

ich tippe auf Ordnerberechtigungen (Ordnerinhalt auflisten) im Benutzerkontext?

Gruß
Member: isarc01
isarc01 Oct 14, 2021 at 14:49:17 (UTC)
Goto Top
Hallo,

also das Script starte ich manuell bzw. später auch unter Task.
(Ich bin Administrator mit Adminrechten)

Wie gesagt, wenn ich im Script diese PDF direkt benenne und das Script starte, funktioniert es.

Wenn ich *.pdf im Script ändere, dann funktioniert es nicht.


(Damals hat es so auch funktioniert)

Problem ist halt, dass unterschiedliche Dateiname im Verzeichnis liegen.
Oder gibt seit neuestem Problem mit dem Sternchen * = für beliebige PDFs?

Im Ereignisprotokoll konnte ich nichts dazu finden.
Member: erikro
erikro Oct 14, 2021 at 14:58:58 (UTC)
Goto Top
Moin,

warum nimmst Du in der Powershell nicht die Befehle der PS?
PDF via Powershell drucken - Reader nach druck schließen

hth

Erik
Member: isarc01
isarc01 Oct 15, 2021 at 08:15:14 (UTC)
Goto Top
Hallo,

danke für euer Feedback.

Das Problem ist, dass ich hier die Anzahl der Prints am Gerät eintrage und diese der Drucker dann ausgibt:

Könnte ich dieses auch in das empfohlene Script von Erik integrieren?


param (
[string]$file = "C:\Scans\Urkunden\*.pdf" | %{ ,
$number_of_copies = 1
)


for ($i = 1; $i -le $number_of_copies; $i++) {

cmd /C "lpr -S 10.39.39.204 -P HPDrucker $file"

}
Member: LeeX01
LeeX01 Oct 19, 2021 at 07:42:38 (UTC)
Goto Top
Dein Script weiß schlichtweg nicht was es machen soll bzw. welche Datei gemeint ist wenn da mehrere im Ordner liegen.

Versuch es mal so

param (
    [string]$files = "C:\Scans\Urkunden\*.pdf",  
    [int]$number_of_copies = 1
)

foreach ($file in (gci $files)){ (1..$number_of_copies).ForEach({cmd /C "lpr -S 10.39.39.204 -P HPDrucker $($file.FullName)"}) }  

Grüße
Member: isarc01
isarc01 Nov 26, 2021 at 09:40:56 (UTC)
Goto Top
Hallo,

ich möchte nochmals kurz Feedback geben:
Wenn man das Script manuel startet, dann funktioniert es.

Aber wenn ich es vom verknüpften Programm aus starte, funktioniert es nicht, außer ich lösche das Argument [number_of_copies]

Aber dieses Argument ist mir wichtig, da der User Anzahl der Kopien festlegen kann.
Siehe Anlage..

Wie gesagt, es klappt irgendwie mit der Übergabe des [number_of_copies] nicht. ;-(

param (
    [string]$file = "\\10.11.15.5\usr_at\Scans\temp\*.pdf",  
	[int]$number_of_copies = 1
)


 
foreach ($onefile in (Get-ChildItem $file -File)) {
    for ($i = 1; $i -le $number_of_copies; $i++) {
        cmd /C "lpr -S 10.39.35.204 -P printer ""$($onefile.FullName)"""  
    }
   }




Start-Sleep -s 1

foreach($item in (Get-ChildItem -Recurse -Path "\\10.11.15.5\usr_at\Scans\temp" | Where-Object {$_.Name -like "*.pdf*"}))  
{
    Copy-Item -Path $item.FullName -Destination "\\10.11.15.5\usr_at\Scans\Urkunden"   
}

foreach($item in (Get-ChildItem -Recurse -Path "\\10.11.15.5\usr_at\Scans\Urkunden" | Where-Object {$_.Name -like "*true*.pdf*"}))  
{
    Copy-Item -Path $item.FullName -Destination "\\10.11.15.5\usr_at\Scans\ElrV"   
}

get-childitem -Path \\10.11.10.5\usr_at\Scans\Urkunden *.pdf |  Rename-Item -NewName { $_.Name  -replace "\d{2}\.\d{2}\.", ''-replace "true" }  

Start-Sleep -s 5

Remove-Item -Path "\\10.11.15.5\usr_at\Scans\temp\*.pdf" -Recurse   
2021-11-26 10_33_52-print - remotedesktopverbindung
error