Top-Themen

Aktuelle Themen (A bis Z)

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, 1791 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 ..
Ähnliche Inhalte
Batch & Shell
Powershell: Foreach-Schleife, feststellen ob aktuelles Element das letzte in der Schleife ist
gelöst Frage von MartinADBatch & Shell2 Kommentare

Hallo, ich habe eine Foreach-Schleife in Powershell. Ich möchte in der ForEach-Schleife feststellen, ob das aktuelle Element das letzte ...

Batch & Shell
Powershell If-Schleife funktioniert nicht
gelöst Frage von windelterroristBatch & Shell5 Kommentare

Hallo Admins Arbeite gerade an einem kleinen Script funktioniert aber nicht so, wie ich mir das vorstelle Mein Code: ...

Batch & Shell
Verwendung von "set" in For-Schleife funktioniert nicht
gelöst Frage von rkrausbyBatch & Shell2 Kommentare

Hallo zusammen. Ich habe ein kleines Problem beim erstellen einer Abfrage. Das Hauptproblem liegt darin dass ich innerhalb einer ...

Batch & Shell
Powershell Foreach Key in Section
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Ich will Skriptseitig die ausgelesenen Versionen mit Soll-Versionen aus einer Ini-Datei abgleichen, nur wie prüfe ich so viele unterschiedliche ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 13 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 14 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 21 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...