ForEach Schleife für Drucker funktioniert nicht
Hi,
ich wollte bei einer Migration die Druckernamen auslesen lassen, diese dann speichern und auf den neuen System wieder verbinden.
Habt Ihr eine Ahnung warum meine ForEachschleife nicht funktioniert ?
Versuche auf der Inhalt der in der Variable drauf zu zugreifen damit er alle vier Drucker anlegt.
Das hier steht in der Variablen...
ich wollte bei einer Migration die Druckernamen auslesen lassen, diese dann speichern und auf den neuen System wieder verbinden.
Habt Ihr eine Ahnung warum meine ForEachschleife nicht funktioniert ?
Versuche auf der Inhalt der in der Variable drauf zu zugreifen damit er alle vier Drucker anlegt.
$Drucker = Get-WmiObject -Class Win32_Printer | Select-Object -Property ShareName, SystemName | Where-Object -Like -Property SystemName -Value \\CONTOSO-PRINT1 |Select-Object -Property ShareName
$WindowsVersion = [System.Environment]::OSVersion.Version
if ($WindowsVersion.Build -ge 7601) {
$Drucker | ForEach-Object {
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$_.ShareName")
}}
Das hier steht in der Variablen...
ShareName
---------
HPLJ_PRO_400M400
KONICAMINOLTA_1
KYOCERA_TASKALFA_01
KYOCERA_TASKALFA_02
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217852
Url: https://administrator.de/forum/foreach-schleife-fuer-drucker-funktioniert-nicht-217852.html
Ausgedruckt am: 21.12.2024 um 05:12 Uhr
8 Kommentare
Neuester Kommentar
Wenn du das Script auf dem gleichen Rechner ausführst wo die Verbindungen noch existieren kann das erneute Hinzufügen ja nicht klappen. Speichere die Daten pro Client z.B. in einer Textdatei wie in diesem Beispiel: http://social.technet.microsoft.com/Forums/windowsserver/de-DE/1da4e996 ...
Grüße Uwe
Grüße Uwe
öhm ja deswegen habe ich Zeile Eins auskommentiert
Stand leider nirgendwo in deinem Thread bzw. Script.Hiermit hatte ich bei einem Test keine Probleme:
$Drucker = .......
$objPrint = [wmiclass] "Win32_Printer"
$Drucker | %{$objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)")}
Wäre auch nett wenn du zumindest mal die Ausgabe deines Scriptes posten würdest dann hätten wir mehr Ansätze
noch was, das auslesen deiner Drucker mit deiner ersten Zeile ginge auch einfacher:
$Drucker = Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName
Grüße Uwe
Das kann so auch nicht gehen .... dein Script ist voller Fehler
machs so ...
Und die Ausgabe ist nicht wirres Zeug sondern sagt zum Beispiel aus das der Fehler 1801 aufgetreten ist und das bedeutet: Invalid Printer Name (http://msdn.microsoft.com/en-us/library/aa384769%28v=vs.85%29.aspx)
Wenn dort ReturnValue = 0 ist wurde die Verbindung erfolgreich hinzugefügt.
machs so ...
Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName | Out-File C:\Temp\Printer.txt
$Drucker = Get-Content "C:\Temp\printer.txt"
$WindowsVersion = [System.Environment]::OSVersion.Version
if ($WindowsVersion.Build -ge 7601) {
$objPrint = [wmiclass] "Win32_Printer"
foreach ($d in $Drucker){
$objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$d")}
}
}
Und die Ausgabe ist nicht wirres Zeug sondern sagt zum Beispiel aus das der Fehler 1801 aufgetreten ist und das bedeutet: Invalid Printer Name (http://msdn.microsoft.com/en-us/library/aa384769%28v=vs.85%29.aspx)
Wenn dort ReturnValue = 0 ist wurde die Verbindung erfolgreich hinzugefügt.