WinFuture-Forum.de: Powershellscript zu AddWindowsPrinterConnection - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Powershellscript zu AddWindowsPrinterConnection


#1 Mitglied ist offline   bob_ruhny 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 04. Januar 12
  • Reputation: 0

geschrieben 04. Januar 2012 - 06:59

Hallo,

Problem ist folgendes, dass wir mehrere hundert clients haben, wobei jeder einzelne mit verschiedenen druckern verbunden ist. jeder drucker ist an ein bestimmten druckserver gebunden, der standortspezifisch zu dem client ist. Jetzt werden die einzelnen druckserver geändert und die entsprechenden drucker zu den clients müssen auch neu verbunden verden. Bei mehreren hundert pc ist das sehr vielr arbeit. Mein script sieht folgendermaßen aus.

Die drucker werden ausgelesen, in eine datei geschrieben, die datei wird ausgelesen und die drucker werden enternt, dann werden die die entsprechenden pararmeter für den neuen server gesetz und die drucker unter dem selber namen aus der datei wieder neu verbunden. jedenfalls geht es nicht und es kommen immer fehlermeldungen:


\\server\printer
Ausnahme beim Aufrufen von "RemovePrinterConnection" mit 1 Argument(en): "Diese Netzwerkverbindung ist nicht vorhanden.
"
Bei C:-path\v03.ps1:28 Zeichen:52
+ $AddNetwork.RemovePrinterConnection <<<< ($contentName[$i])
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation


bzw beim verbinden :

\\server\printer

Ausnahme beim Aufrufen von "AddWindowsPrinterConnection" mit 1 Argument(en): "Der Druckername ist unzulässig. (Ausnahme von HRESULT: 0x80070709)"
Bei path\v03.ps1:48 Zeichen:48
+ $AddNetwork.AddWindowsPrinterConnection <<<< ($PrinterName)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation


das script sieht so aus:





#ermittlen der neuen serveradresse anhand des computernamens
[string]$computer =gc env:computername #auslesen des computernamens
$snr= $computer[2]+$computer[3] #nutzen der stellen zwei und drei für server nummer
$server= "z32"+ $snr +"123" #zusammensetzen des servernamens

Get-WmiObject -Class Win32_Printer |Format-Table ShareName -HideTableHeaders |Out-File .\TmpPrinterShareName.txt #auslesen der aktuellen druckernamen und schreiben in datei TmpPrinterShareName.txt
Get-WmiObject -Class Win32_Printer |Format-Table Name -HideTableHeaders |Out-File .\TmpPrinterPath.txt #auslesen der druckerverbindungen und schreiben in datei TmpPrinterPath.txt

#auslesen der Daten aus TmpPrinterShareName.txt und TmpPrinterPath.txt
$contentSName=get-Content -Path .\TmpPrinterShareName.txt
$contentName=Get-Content -Path .\TmpPrinterPath.txt


$AddNetwork=(New-Object -ComObject WScript.Network)
$PrinterNum = ($AddNetwork.EnumPrinterConnections()) #zählen der verbunden drucker

'Netzwerkdrucker entfernen'
[int32]$counts=$PrinterNum.Count()/2 #teilung durch zwei, da zu jeder verbindung ip und name angegeben wird.

for($i=0;$i -le $counts;$i++) #schleife zum löschen der druckerverbindungen
{
if($contentName[$i] -eq "Microsoft XPS Document Writer")
{$i++}

else{

$contentName[$i]
$AddNetwork.RemovePrinterConnection($contentName[$i])
}
}

'Netzwerkdrucker hinzufügen'

for($i=0;$i -le $ContentSName.Count;$i++) #erstellt neue verbindung zu den druckern

{

if($contentname[$i] -eq "")
{$i++}
elseif($contentName[$i] -eq"Microsoft XPS Document Writer")
{$i++}


else{

$PrinterName="\\$server\"+$ContentSName[$i]
$PrinterName
$AddNetwork.AddWindowsPrinterConnection($PrinterName)
}
}

rm ".\TmpPrinterShareName.txt"
rm ".\TmpPrinterPath.txt"




Danke für die Hilfe !
0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0