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-ID: 274677

Url: https://administrator.de/forum/powershell-druckermapping-via-csv-erweiterung-274677.html

Ausgedruckt am: 09.04.2025 um 05:04 Uhr

114757
114757 21.06.2015 aktualisiert um 10:42:28 Uhr
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
pixel0815
pixel0815 22.06.2015 um 09:03:41 Uhr
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