Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

ForEach Schleife für Drucker funktioniert nicht

Frage Entwicklung Batch & Shell

Mitglied: mguenth83

mguenth83 (Level 1) - Jetzt verbinden

25.09.2013, aktualisiert 16:44 Uhr, 1734 Aufrufe, 8 Kommentare

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.

01.
$Drucker = Get-WmiObject -Class Win32_Printer | Select-Object -Property ShareName, SystemName | Where-Object -Like -Property SystemName -Value \\CONTOSO-PRINT1 |Select-Object -Property ShareName 
02.
$WindowsVersion = [System.Environment]::OSVersion.Version 
03.
if ($WindowsVersion.Build -ge 7601) { 
04.
$Drucker | ForEach-Object { 
05.
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$_.ShareName") 
06.
}}
Das hier steht in der Variablen...
01.
ShareName                                                                                                                    
02.
---------                                                                                                                    
03.
HPLJ_PRO_400M400                                                                                                          
04.
KONICAMINOLTA_1                                                                                                        
05.
KYOCERA_TASKALFA_01                                                                                                    
06.
KYOCERA_TASKALFA_02
Mitglied: colinardo
25.09.2013, aktualisiert um 23:23 Uhr
Hallo Matthias,
Versuchs mal in Zeile 5 hiermit (ungetestet)
01.
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)") 
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 07:44 Uhr
Hi Uwe,
danke für die Bemühungen aber leider hat es nicht funktioniert...schade eigentlich...

Gruß
Matze
Bitte warten ..
Mitglied: colinardo
26.09.2013 um 08:10 Uhr
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
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 08:32 Uhr
Hey Uwe,
öhm ja deswegen habe ich Zeile Eins auskommentiert und nur eine Textdatei als Input genommen. Somit kann ich noch nicht vorhandene Drucker per Hand in die TXT schreiben die dann eigentlich hätte funktionieren sollen.

Gruß
Matze
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 09:07 Uhr
öhm ja deswegen habe ich Zeile Eins auskommentiert
Stand leider nirgendwo in deinem Thread bzw. Script.
Hiermit hatte ich bei einem Test keine Probleme:
01.
$Drucker = ....... 
02.
$objPrint = [wmiclass] "Win32_Printer" 
03.
$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:
01.
$Drucker = Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 09:18 Uhr
Irgendwie bin ich glaub ich zu blöd für Powershell. Deine Variante von der Ersten Zeile gibt überhaupt nichts aus.

Das andere funktioniert auch nicht wirklich...

01.
Get-WmiObject -Class Win32_Printer|Select-Object -Property ShareName, SystemName|Where-Object -Like -Property SystemName -Value \\CONTOSO-PRINT1|Select-Object -Property ShareName|Format-Table ShareName -HideTableHeaders|Out-File C:\Temp\Printer.txt 
02.
Get-Content "C:\Temp\printer.txt" 
03.
$WindowsVersion = [System.Environment]::OSVersion.Version 
04.
if ($WindowsVersion.Build -ge 7601) { 
05.
    $File2=Get-Content "C:\Temp\printer.txt" 
06.
    $File2.Replace(" ",$null) | Out-File "C:\Temp\printer.txt" 
07.
    $Printer = Get-Content "C:\Temp\printer.txt" 
08.
 
09.
$objPrint = [wmiclass] "Win32_Printer"  
10.
$Printer | ForEach-Object { 
11.
$Printer | %{$objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$($_.ShareName)")} 
12.
}}
Bringt nur wirre Zeichen als ausgabe....
01.
KONICAMINOLTA_11                                                                                                        
02.
 
03.
 
04.
 
05.
 
06.
__GENUS          : 2 
07.
__CLASS          : __PARAMETERS 
08.
__SUPERCLASS     :  
09.
__DYNASTY        : __PARAMETERS 
10.
__RELPATH        :  
11.
__PROPERTY_COUNT : 1 
12.
__DERIVATION     : {} 
13.
__SERVER         :  
14.
__NAMESPACE      :  
15.
__PATH           :  
16.
ReturnValue      : 1801 
17.
PSComputerName   :  
18.
 
19.
__GENUS          : 2 
20.
__CLASS          : __PARAMETERS 
21.
__SUPERCLASS     :  
22.
__DYNASTY        : __PARAMETERS 
23.
__RELPATH        :  
24.
__PROPERTY_COUNT : 1 
25.
__DERIVATION     : {} 
26.
__SERVER         :  
27.
__NAMESPACE      :  
28.
__PATH           :  
29.
ReturnValue      : 1801 
30.
PSComputerName   : 
Bitte warten ..
Mitglied: colinardo
26.09.2013, aktualisiert um 09:33 Uhr
Das kann so auch nicht gehen .... dein Script ist voller Fehler
machs so ...
01.
Get-WmiObject -Class Win32_Printer |?{$_.SystemName -eq "\\CONTOSO-PRINT1" -and $_.ShareName -ne $null} | select -ExpandProperty ShareName | Out-File C:\Temp\Printer.txt 
02.
$Drucker = Get-Content "C:\Temp\printer.txt" 
03.
$WindowsVersion = [System.Environment]::OSVersion.Version 
04.
if ($WindowsVersion.Build -ge 7601) { 
05.
  $objPrint = [wmiclass] "Win32_Printer"  
06.
  foreach ($d in $Drucker){ 
07.
    $objPrint.AddPrinterConnection("\\CONTOSO-PRINT1\$d")} 
08.
09.
}
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.
Bitte warten ..
Mitglied: mguenth83
26.09.2013 um 12:00 Uhr
Funktioniert perfekt....vielleicht sollte ich mal nen Powershellkurs machen...jedenfalls wieder was dazu gelernt.
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Virtualisierung
Drucker aus einer VM heraus funktioniert nicht (5)

Frage von NCCTech zum Thema Virtualisierung ...

Peripheriegeräte
Drucker Samsung MultiXpress X4250LX Touchpanel funktioniert nicht mehr (1)

Frage von babylon05 zum Thema Peripheriegeräte ...

Linux
LTSP: PXE Boot funktioniert nicht (22)

Frage von Fenris14 zum Thema Linux ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...