Frage

Gibt es eine gute Möglichkeit, Netzwerkfreigaben zugreifen innerhalb eines VBS-Skript, mit alternativen Anmeldeinformationen (nicht die Anmeldeinformationen, mit denen der VBS-Skript ausgeführt wird)?

Die Absicht ist, zwei Aufgaben:

  1. navigieren programmatisch eine Remote-Freigabe Dateistruktur, um zu bestätigen, dass ein paar Remote-Dateien vorhanden sind, und kopieren Sie eine Datei über den anderen (beide remote)
  2. Kopieren von Dateien von einem lokalen Laufwerk (Zugriff mit lokaler Benutzername / Berechtigungen) zu einem Remote-Laufwerk (mit den alternativen Anmeldeinformationen zugegriffen wird)

Soweit ich kann FSO (Scripting.FileSystemObject) sage aus dem Bild ist, weil es immer mit den Anmeldeinformationen der Anwendung läuft mit ihm -. (?), Welche der lokalen Maschine Benutzer sein würde

Der einzig gangbarer anmutende Ansatz, den ich gefunden habe, während Googeln eine Batch-Datei (oder erweiterten Aufruf „cmd.exe“) herzustellen, die „net use“ bereitzustellen, um die Remote-Freigabe Anmeldeinformationen und kopiert dann die Dateien mit Robocopy verwendet oder dergleichen, aus der gleichen Befehl shell „Session“. Dies würde für das Kopieren OK arbeiten / Dateien aus dem lokalen Laufwerk auf die Remote-Freigabe bereitstellen, aber es wäre ve sehr kompliziert und spröde, jede Art von Dateisystem-Browsing zu tun (wie Sie mit FSO tun würden) auf diese Weise.

Eine andere Möglichkeit, die ich in Betracht gezogen haben, beinhaltet zwei Scripting-Sessions mit - das Skript aufrufen (die alternativen Anmeldeinformationen in der Befehlszeile bereitstellt) und es läuft eine cmd.exe Sitzung, die erste hat einen „net use“, um die Remote-Freigabe zur Karte in einem temporären lokalen Laufwerk, läuft selbst dann in einem „tatsächlich Dinge zu tun“ -Modus und FSO verwendet, dann, wenn es (wieder in der cmd.exe-Shell) trennt das temporäre Laufwerk mit „net use“ wieder getan hat. Dies ist klobig (mehr Fenster, temporäres Laufwerk ...) und ich bin nicht einmal sicher, ob es funktionieren würde.

Weiß jemand, so oder so, oder weiß von gangbarer Alternative? (Festhalten an VBScript / WScript auf einem Windows 2000-Rechner - keine Powershell)

War es hilfreich?

Lösung

OK, ich wurde unter einem Missverständnis arbeitend - das FSO nicht "Pick up", um die Netzwerkanmeldeinformationen eingerichtet mit "NET USE" (oder Wscript.Network "MapNetworkDrive")

.

Es stellt sich heraus, dass es funktioniert, und der folgende Beispielcode funktioniert sehr gut (ohne dass temporäre Netzlaufwerke einzurichten):

ServerShare = "\\192.168.3.56\d$"
UserName = "domain\username"
Password = "password"

Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")

NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password

Set Directory = FSO.GetFolder(ServerShare)
For Each FileName In Directory.Files
    WScript.Echo FileName.Name
Next

Set FileName = Nothing
Set Directory = Nothing
Set FSO = Nothing

NetworkObject.RemoveNetworkDrive ServerShare, True, False

Set ShellObject = Nothing
Set NetworkObject = Nothing
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top