aerox1990
Goto Top

Befehlszeile um einen anderen PC im Netzwerk anzusteuern VBScript

Ich bin noch in den Anfängen von VBScript!!

Ich versuche über VBScript einen Netzwerkdrucker von einem anderen PC zu enfernen.
Lokal an meinem Rechner habe ich das schon geschafft mit:

Set objNetwork = CreateObject("Wscript.Network")
objNetwork.RemovePrinterConnection "\\Server\Drucker"

Jetzt ist meine Frage wie kann ich das selbe mit einem PC im Netzwerk machen??
Welche Befehlszeile benötige ich um einen anderen Client anzusprechen?

MfG
AeRoX1990

Danke schon mal!!

Content-ID: 120172

Url: https://administrator.de/contentid/120172

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

Andreas89
Andreas89 10.07.2009 um 11:00:36 Uhr
Goto Top
Hi,

ich glaube dir könnte der Link weiterhelfen:
Druckerreinrichtung für alle User

Wenn net guck ich heute nachmittag mal wie es genau ging (hab es schon einmal hinbekommen)
AeRoX1990
AeRoX1990 10.07.2009 um 11:08:29 Uhr
Goto Top
Mhh danke für deine antwort aber so wie ich es machen will bzw. muss hilft mir das nich weiter es wär eine große Hilfe, wenn ich eine Befehlszeile habe wo ich auf einen anderem Pc einen bestimmten Drucker entferne.

Set objNetwork = CreateObject("Wscript.Network")
objNetwork.RemovePrinterConnection "\\Server\Drucker"

Dieser Befehl löscht den auf meinem pc jetzt brauche ich nur noch was wie ich das selbe auf einem anderem mache.
Logan000
Logan000 10.07.2009 um 15:33:54 Uhr
Goto Top
Moin Moin

Also auf die schnelle würd ich sagen, mach es genau so, nur das du dein Skript per Loginskript oder GPO auf dem Client laufen läßt.

Ansonsten kannst du dein Skript auch per psexec auf dem Client ausführen lassen.

Es geht natürlich auch per WMI. Dazu soltest du hier fündig werden:
http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr= ...

Gruß L.
AndreasHoster
AndreasHoster 10.07.2009 um 16:38:58 Uhr
Goto Top
Nur so nebenbei bemerkt:
Netzwerkdrucker sind User und nicht PC spezifisch.
Daher wird das etwas aufwendiger, weil fast alle Varianten, die es erlauben remote auf einem PC etwas ausführen zu lassen, in einem eigenen Benutzerkontext laufen und damit nicht den Drucker des aktuell angemeldeten Users entfernen. Außerdem könnte es ja passieren, daß gar kein user angemeldet ist, was dann?
Es sei denn, Du meinst lokal installierte Drucker, aber die würde Dein Beispiel noch nicht einmal lokal löschen.
AeRoX1990
AeRoX1990 13.07.2009 um 11:10:13 Uhr
Goto Top
Doch das geht 100% nur wie ich brauche nur eine möglichkeit um mich sogesehen auf nen anderen Pc einzuwählen und dieser Befehl ist das einzige was mir fehlt.

Momentan bin ich soweit das ich alles schaffe bis auf das ich den auf einem anderen Pc löschen kann hier mein Script:

server = InputBox("Geben Sie den Namen ein")
Set wmi = GetObject("winmgmts:\\" & server)

Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName

WshNetwork.RemovePrinterConnection ("\\Server\Drucker")


MsgBox zaehler & "Drucker entfernt", vbInformations
AndreasHoster
AndreasHoster 13.07.2009 um 13:06:48 Uhr
Goto Top
Doch das geht 100%
Wo steht in meinem Posting das das nicht geht? Ich habe nur geschrieben das es aufwendiger ist bei Netzwerkdruckern. Und was lokale versus Netzwerkdrucker angeht, ist Dir der Unterschied überhaupt bewusst?

Aber mit WMI auf andere Rechner zuzugreifen und dort ein Programm starten ist jetzt nicht wirklich kompliziert. Vorausgesetzt der, der es startet, hat genügend Rechte.
Programm = "c:\windows\system32\wscript.exe Pfad_zu_VBSKRIPT"  

Set system = GetObject("winmgmts:" & Zielcomputer & "\root\cimv2:win32_process")  
status = system.create(Programm)
If Status = 0 then
	wscript.echo "Programm gestartet!"  
else
	wscript.echo "Fehler beim Start: " & status  
End If
Logan000
Logan000 13.07.2009 um 13:37:03 Uhr
Goto Top
Moin moin

Hier, schau dir mal diesen Codefetzen an:
strComputer = "PCname"  
strUser=""  
strPassword=""  
strDrucker =""  
set wmi = CreateObject("WBemScripting.SWbemLocator")  
Set cs = wmi.ConnectServer(strComputer,"root/cimv2",strUser,strPassword)  
set colInstalledPrinters = cs.ExecQuery("Select * from Win32_Printer")  
For Each objPrinter in colInstalledPrinters
    tmp = tmp & objPrinter.DeviceID & vbcrlf
Next
msgbox tmp ' Drucker Liste ausgeben  
Set colInstalledPrinters =  objWMIService.ExecQuery("Select * from Win32_Printer WHERE DeviceID = '" & strDrucker & "'")  
For Each objPrinter in colInstalledPrinters
    objPrinter.Delete_  ' Drucker löschen  
Next

Gruß L.
AeRoX1990
AeRoX1990 13.07.2009 um 15:25:47 Uhr
Goto Top
Also versteh ich das richtig das mein script wenn ich das ausführen will aufjedenfall auf dem zielrechner schon sein muss wenn ja wie kann ich da eine datei hinkopieren kann auch über psexec gemacht werden.
AndreasHoster
AndreasHoster 13.07.2009 um 15:35:25 Uhr
Goto Top
Also versteh ich das richtig das mein script wenn ich das ausführen will aufjedenfall auf dem zielrechner schon sein muss
Nein, man könnte das Skript auch von einem Netzlaufwerk ziehen.
AeRoX1990
AeRoX1990 13.07.2009 um 16:49:00 Uhr
Goto Top
wie meine Überschrift schon sagt bin ich absolut hilflos ich bin auf status 0.
Ich habe es momentan geschafft mein Script auf einem anderen Pc ans laufen zu kriegen mit psexec starte ich das Script. Jetzt ist mein letztes Problem Wie bekomme ich mein Script auf den anderes Rechner ohne nutzung von e-mail etc. Am besten wär ein Script was meine Datei dort hin kopiert in temp z.B damit ich Sie starten kann.
Tut mir Leid wenn es ein bissen nervt aber ich habe echt keine Ahnung
AndreasHoster
AndreasHoster 13.07.2009 um 17:13:16 Uhr
Goto Top
Den Begriff Netzlaufwerk sollte man schon kennen, wenn man im Netz was macht.
Auf Englisch auch Share genannt.

Ihr werdet doch wohl irgendeinen Fileserver haben und der freigegebene Ordner.
Dort das Skript ablegen und statt c:\temp\skript.vbs muß man \\SERVERNAME\SHARENAME\... verwenden (wie genau es heißt kommt darauf an, wo auf dem Server Du das Skript ablegst).
Wenn wir also davon ausgehen, daß der Server XXX heißt, die Freigabe YYY und das Skript test.vbs im Ordner ZZZ gespeichert ist würde es in meinem BeispielSkript so anfangen:
Programm = "c:\windows\system32\wscript.exe \\XXX\YYY\ZZZ\test.vbs"
Und falls man mögliche Leerzeichen in den Namen abfangen will:
Programm = "c:\windows\system32\wscript.exe ""\\XXX\YYY\ZZZ\test.vbs"""
AeRoX1990
AeRoX1990 14.07.2009 um 09:48:55 Uhr
Goto Top
Also ich habe die Datei jetzt auf einem Fileserver abgelegt nun versuche ich das skript von Ihnen zu starten:

Programm = "c:\windows\system32\wscript.exe \\Sever\Pfad\datei.vbs"

Zielcomputer = InputBox("Geben Sie hier den Namen des Zielcomputers ein")

Set system = GetObject("winmgmts:\\" & Zielcomputer & "\root\cimv2:win32_process")
status = system.create(Programm)
If Status = 0 then
wscript.echo "Programm gestartet!"
else
wscript.echo "Fehler beim Start: " & status
End If

So das Script funktioniert so nur das wenn ich es ausführe und den Zielcomputer eingebe er es nicht auf ihm ausführt.
Lokal auf meinem startet er es von dem Server nur auf dem anderem passiert nichts.
Logan000
Logan000 14.07.2009 um 13:01:55 Uhr
Goto Top
Moin Moin

Lokal auf meinem startet er es von dem Server nur auf dem anderem passiert nichts.
Schau mal im Taskmanager des Zielcomputers unter Prozesse nach der wscript.exe.

Gruß L.
AeRoX1990
AeRoX1990 14.07.2009 um 13:24:37 Uhr
Goto Top
Ja die wird als prozess über mich gestartet es funktioniert aber weiterhin nicht.
AndreasHoster
AndreasHoster 14.07.2009 um 15:35:42 Uhr
Goto Top
Was heist genau funktioniert nicht?
Wird das Skript nicht gestartet, gibt es Fehlermeldungen oder tut es nur nicht das was Du erwartest?

Ob es überhaupt funktioniert könnte man mit einem eingebauten net send Aufruf oder einem Logging in eine Datei feststellen.
Und wenn Du erwartest, daß Netzwerkdrucker gelöscht würden, verweise ich gern auf mein erstes Posting:
<quote>
Netzwerkdrucker sind User und nicht PC spezifisch.
Daher wird das etwas aufwendiger, weil fast alle Varianten, die es erlauben remote auf einem PC etwas ausführen zu lassen, in einem eigenen Benutzerkontext laufen und damit nicht den Drucker des aktuell angemeldeten Users entfernen. Außerdem könnte es ja passieren, daß gar kein User angemeldet ist, was dann?
</quote>
AeRoX1990
AeRoX1990 16.07.2009 um 09:59:44 Uhr
Goto Top
So ich habe es geschafft über PSexec mich mit dem anderen Pc zu verbinden und das Programm zu starten wenn es vorher auf dem Pc hinterlegt ist. Jetzt ist meine Frage wie kann ich die Datei von einem Server aus mit Psexec starten? Wenn das funktioniert wäre mein Problem gelöst.