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

lokales Batch Skript einmalig ausführen

Frage Entwicklung Batch & Shell

Mitglied: 84075

84075 (Level 2)

26.10.2009 um 10:58 Uhr, 9074 Aufrufe, 20 Kommentare

hallo,

habe ein Frage. Ich habe ein Batch Skript das beim ausliefern eines Rechners ausgeführt werden soll aber nur einmalig und vom User selber. Es verbindet einen Netzwerkdrucker mit dem Rechner.

Per Logon Skript auf dem Netlogon Server würde ich es nicht machen da ich so für jeden User ein Startup Skript einrichten müsste. Hatte mir zuerst gedacht das ich es unter Documetns an Settings unter All Users im Startmenü ablegen soll?!?!? Dann sollte das Skript aber nur beim Erststart des Users ausgeführt werden, danach nicht mehr.
Mitglied: 60730
26.10.2009 um 11:06 Uhr
Servus,

dazu gibt es (wie immer) viele Möglichkeiten.

Einer wäre - das script im Run Once abzulegen.

Ein anderer wäre - ein Flag in einer Datei zu hinterlegen - wenn Flag da - dann nix machen -wenn nicht ausführen.

Das hätte den Vorteil - wird der Netzwerkdrucker geändert / ein zweiter kommt dazu - würde wieder alles automatisch laufen.

btw: Startupscript brauchts beim Netzwerkdrucker nicht. Das "kann" das normale Loginscript.

Und wenn dir das nicht weiterhilft - poste dein Script und wir können dir gezielt weiterhelfen.
Gruß
Bitte warten ..
Mitglied: 84075
26.10.2009 um 11:13 Uhr
also das mit dem FLAG hört sich gut an. Wie mache ich das? Wenn ein User sich anmeldet wird folgendes kommando in einer batch ausgeführt:

rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\DRUCKER
Bitte warten ..
Mitglied: 60730
26.10.2009 um 11:23 Uhr
Servus,

01.
find /i "%username%,Drucker" "\\server\freigabe\drucker.log" && goto end 
02.
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\DRUCKER 
03.
echo Drucker wird auf %computername% installiert 
04.
echo %username%,Drucker>>"\\server\freigabe\drucker.log"  
05.
:end
Wobei Du am besten "Drucker" gegen einen Sinnigen Namen tauschst und \\server\freigabe - eh klar ist.

Gruß
Bitte warten ..
Mitglied: 84075
26.10.2009 um 11:37 Uhr
eine drucker.log besteht nicht auf dem server und ich kann da auch keine anlegen...
kannst mir die erste und 4. zeile erklären?
Bitte warten ..
Mitglied: Larz
26.10.2009 um 11:41 Uhr
Hallo ,

Zeile eins sucht in einer (als vorhanden angenommenen) Log-Datei, ob der User diesen Drucker bereits verbunden hat. Wenn ja, wird das Script beendet.
Zeile vier Trägt eben in diese Log-Datei ein, wenn der Drucker installiert/verbunden wurde. So wird Zeile eins beim nächsten Durchlauf den Drucker finden und nicht erneut versuchen zu verbinden.
Also eigentlich nur der Versuch, das ganze zentral abzuprüfen. Theoretisch wäre es auch möglich, diese Log-Datei lokal anzulegen.

Gruß
Lars
Bitte warten ..
Mitglied: 84075
26.10.2009 um 12:10 Uhr
also das ist ja genau das was ich benötige nur ist eben das Problem das wir auf dem Druckerserver keine Berechtigung haben Kann ich denn die Log-Datei auf meinen Admin-PC ablegen? Dieser ist auch i.d.R immer online und somit immer für die Clients erreichbar?
Wie kann ich denn das Skript so umbauen damit er auf meinem Server nach der LogDAtei sucht und abprüft?
Bitte warten ..
Mitglied: bennib22
26.10.2009 um 12:26 Uhr
Hi,
erstell doch einfach einen geplanten Task und gib denn an "einmalig ausführen".

Gruß
bennib22
Bitte warten ..
Mitglied: 84075
26.10.2009 um 12:41 Uhr
mensch wieso komm ich nicht selber auf diese idee))
Bitte warten ..
Mitglied: Larz
26.10.2009 um 12:50 Uhr
Die andere Variante ist aber eleganter, die Batch kannst Du so dann jederzeit erweitern/umbauen wie Du sie evtl. in der Zukunft brauchst. Den Geplanten Task müsstest Du JEDES MAL NEU anlegen. Umbauen auf deinen Admin-PC sollte kein Problem sein, so lange Du eine Freigabe hast, wo die Benutzer lesen & schreiben dürfen, also z.B.:

01.
find "%username%,Drucker" "\\DeinComputer\Freigabename\drucker.log" && goto end 
02.
rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\DRUCKER 
03.
echo Drucker wird auf %computername% installiert 
04.
echo %username%,Drucker>>"\\DeinComputer\Freigabename\drucker.log"  
05.
:end
Gruß
Larz
Bitte warten ..
Mitglied: 84075
26.10.2009 um 13:26 Uhr
hallo!

vielen Dank....das funktioniert insoweit recht gut. Nur habe ich das Problem wenn ich mich dann vom Client wieder abmelde und beim nächsten mal anmelde der Drucker weg ist.....Erst wenn ich den Eintrag aus der log entferne und nochmals neu starte ist er wieder drin....
Bitte warten ..
Mitglied: bennib22
26.10.2009 um 13:32 Uhr
Hi,
wenn ich das richtig verstanden habe könntest du auch die Batchdatei in den Autostart verlegen.

(ich hoff das hilft dir)

mfG
bennib22
Bitte warten ..
Mitglied: 84075
26.10.2009 um 13:35 Uhr
also das mit dem ausführen der batch ist geregelt. Hänge das Batch auf Dokumente und Einstellugnen\All Users\Startmenue\autostart. Wird also bei jedem User ausgeführt. Nur wenn ich das erstmalig mache fügt er auch den Netzwerkdrucker hinzu und trägt ihn auf den Admin Rechner in die log. Schön und gut bis hierher. Nur wenn ich den Rechner wo der Drucker installiert worden ist mit dem gleichen User nochmals neu starte ist der drucker aber wieder weg. ERst wenn ich den eintrag aus der log entferne und wieder neustarte fügt er ihn wieder hinzu
Bitte warten ..
Mitglied: 60730
26.10.2009 um 13:54 Uhr
Stop...

lege mal einen x beliebigen Link /textdatei auf den desktop
melde dich ab
melde dich an.

zu 99.9999% ist der "link/textdatei" auch weg?

Ihr habt ein Problem mit den Userprofilen - oder benutzt Mandatory profiles ?


Gruß
Bitte warten ..
Mitglied: 84075
26.10.2009 um 15:28 Uhr
natürlich hat es am Profil gelegen))))))) war wohl so voll das er das Profil nicht laden konnte und sich nur temporär angemeldet hat! Jetzt klappt es auch und die drucker bleiben installiert. Auch die log-datei sieht gut aus...Mal ne Frage. Was müsste gemacht werden wenn ich in einer csv Datei die usernamen drin stehen habe und mein skript diese csv zuerst ausliest überprüft wer sich angemeldet hat und anhand der liste dem user seine drucker installiert???

also...
1. User meldet sich mit xyz123 an
2. skript überprüft in der drucker.csv welche drucker der user xyz123 benötigt
3. skript installiert ihm diese

beispiel der drucker.csv datei:

USER---------DRUCKER
xyz123-------dr123, dr436, dr090
xyz456--------dr665, dr432, 998
xyz789-------dr509, dr421, dr555, dr780
Bitte warten ..
Mitglied: bastla
26.10.2009 um 22:19 Uhr
Hallo cyancy!

Wenn Du die Steuerdatei so gestaltest:
xyz123,dr123,dr436,dr090 
xyz456,dr665,dr432,998 
xyz789,dr509,dr421,dr555,dr780
könnte der Batch dazu so aussehen:
01.
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\DeinComputer\Freigabename\Drucker.csv"') do for %%a in (%%j) do findstr /i "%username%,%%a" "\\DeinComputer\Freigabename\drucker.log">nul || ( 
02.
    rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\%%a 
03.
    echo Drucker %%a wird auf %computername% installiert 
04.
    echo %username%,%%a >>"\\DeinComputer\Freigabename\drucker.log" 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: 84075
27.10.2009 um 10:02 Uhr
hey bastla!!!! SUUUPER vielen DANK, funktioniert natürlich einwandfrei!!!

was ich gemerkt habe ist, das wenn der User seinen Drucker manuell löschen sollte und beim nächsten neustart dann dies nicht bemerkt wird-es wird der drucker nicht nachinstalliert da in der log datei noch steht das er bereits installiert wurde. kann man hier bei der anmeldung einen vergleich zwischen log datei und den installierten drucker erstellen? und wenn drucker nicht mehr installiert sein sollte er trotzdem nochmal installiert wird?
Bitte warten ..
Mitglied: bastla
28.10.2009 um 08:48 Uhr
Hallo cyaency!

Mit einem kleinen (vom Batch selbst erzeugten) VBScript könntest Du die Drucker etwa so auflisten und bei Bedarf installieren lassen (der Eintrag in die "drucker.log" ist dann ja eigentlich überflüssig, aber zu Dokumentationszwecken kannst Du ihn trotzdem verwenden - dann aber vielleicht besser noch mit Angabe eines Timestamps):
01.
set L=%temp%\ListPrinters.vbs 
02.
>%L% echo Set Printers=WScript.CreateObject("WScript.Network").EnumPrinterConnections:For i=1 To Printers.Count Step 2:WScript.Echo Printers.Item(i):Next 
03.
 
04.
for /f "tokens=1* delims=," %%i in ('findstr /i /b "%username%" "\\DeinComputer\Freigabename\Drucker.csv"') do for %%a in (%%j) do cscript //nologo %L%|findstr /i "%%a">nul || ( 
05.
    rundll32 printui.dll,PrintUIEntry /q /in /n \\DRUCKERSERVER\%%a 
06.
    echo Drucker %%a wird auf %computername% installiert 
07.
    echo %date:~-4%-%date:~-7,2%-%date:~-10,2% %time:~,8% %username%,%%a >>"\\DeinComputer\Freigabename\drucker.log" 
08.
)
Grüße
bastla
Bitte warten ..
Mitglied: stweber
01.12.2009 um 19:00 Uhr
Hallo Bastla

Sehr tolles Script! Vielen Dank. Noch eine Frage, könnte man den Standarddrucker auch gleich setzten?

z. B. den 1 Drucker im CSV?

Gruss

Stephan
Bitte warten ..
Mitglied: Biber
01.12.2009 um 19:15 Uhr
<OT>
@bastla
Gib doch dem jungen Nachwuchstalent bitte ein paar Minuten, seine letzte gestellte Frage kurz nachhallen zu lassen.

Vielleicht kommt ja gleich noch ein "Hmmm, ich könnte ja einen weiteren Parameter in der CSV-Datei einführen.."
... oder ein "Ich mache mal was Verrücktes und benutze die Forumssuche..."
... oder ein "Dafür sollte ich einen neuen Beitrag aufmachen..."

Nur ein paar Minuten...

Grüße
Biber
P.S. @stweber
Hast du in letzter Zeit mal die Überschrift dieses Beitrags mit der jetzt aktuellen Fragestellung verglichen?
</OT>
Bitte warten ..
Mitglied: bastla
01.12.2009 um 21:04 Uhr
[OT]
@Biber
Gib doch dem jungen Nachwuchstalent bitte ein paar Minuten
Dir kann ich ja keinen Wunsch abschlagen ...

... und ich lege sogar noch ein paar Tage drauf.

Grüße
bastla
[/OT]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Batch & Shell
gelöst Batch-Skript für Druckerzuweisung auf Terminalserver - Variablenproblem (3)

Frage von BirdyB zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...