pixel0815
Goto Top

Powershell Druckermapping via CSV - Erweiterung

Hallo zusammen,
ich hatte ein Skript gefunden für einen Client und habe so angepasst das es mir die SitzungsID ausliest und daraus dann den Clientnamen liest.
Wenn jetzt eine Übereinstimmung gefunden wird, dann wird der Drucker gemappt und als Standard gesetzt.
Ich möchte aber jetzt eventuell auch mehrere Drucker für einen Client zuweisen und entsprechend sollte dann ein true oder false beim Standarddrucker ausgewertet werden, da ich nur einen Standardrucker haben möchte.


$SessionID=((qwinsta /server:$ServerName | foreach { (($_.trim() -replace “\s+”,”,”))} | ConvertFrom-Csv)|Where-Object {$_.SITZUNGSNAME.StartsWith(">")}).id  
$client = Get-ItemProperty "HKCU:\Volatile Environment\$SessionID" | Select-Object -ExpandProperty CLIENTNAME  
$printers = Import-CSV "\\s113\AUDIT\drucker\Druckermapping.csv"  -Delimiter ";"  
$net = New-Object -COMObject WScript.Network
$printers | Where-Object {$_.'CLIENT' -eq $client} |  
ForEach{$net.AddWindowsPrinterConnection($_.'PrinterLocation');$net.SetDefaultPrinter($_.'PrinterLocation')}  


Die CSV soll so aussehen

CLIENT;PrinterLocation;Standard
R1234;\\server\freigabe;true

Kann mir da jemand helfen?

Gruß
Heiko

Content-Key: 274677

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

Printed on: April 27, 2024 at 02:04 o'clock

Mitglied: 114757
114757 Jun 21, 2015 updated at 08:42:28 (UTC)
Goto Top
Moin,
naja, wie wär's mit einer IF-Abfrage in Zeile 6 ...
%{
    $net.AddWindowsPrinterConnection($_.PrinterLocation)
    if($_.Standard -eq "true"){  
        $net.SetDefaultPrinter($_.PrinterLocation)
    }
}
immer diese Jäger und Scriptsammler ...

Gruß jodel32
Member: pixel0815
pixel0815 Jun 22, 2015 at 07:03:41 (UTC)
Goto Top
Moin Jodel32,

ja so ist das face-sad

$SessionID=((qwinsta /server:$ServerName | foreach { (($_.trim() -replace “\s+”,”,”))} | ConvertFrom-Csv)|Where-Object {$_.SITZUNGSNAME.StartsWith(">")}).id  
$client = Get-ItemProperty "HKCU:\Volatile Environment\$SessionID" | Select-Object -ExpandProperty CLIENTNAME  
$printers = Import-CSV "\\s113\AUDIT\drucker\Druckermapping.csv"  -Delimiter ";"  
$net = New-Object -COMObject WScript.Network
$printers | Where-Object {$_.'CLIENT' -eq $client} |  
ForEach{ %{
    $net.AddWindowsPrinterConnection($_.PrinterLocation)
    if($_.Standard -eq "true"){  
        $net.SetDefaultPrinter($_.PrinterLocation)
    }
}}

Der Drucker ist zwar da aber kein Standard. Die Variable $printers ist gefüllt mit dem Wert.
Schade :o(

Gruß
Heiko