badfsaadkl
Goto Top

Datei übertragen auf anderen Server via Visual Studio

Datei übertragen auf anderen Server via Visual Studio

Hallo Zusammen,


ich suche eine Möglichkeit, um in einem Programm, welches ich in Visual Studio 2005 programmiere,
eine Datei aus dem Programm herraus (am Ende der Prozedur), auf einen anderen Windows 2003 Server in ein Verzeichniss zu kopieren.

Vorraussetzung ist jedoch, nicht die Verwendung von Netzlaufwerken...

Jedoch kann auf dem "Quell-PC" nicht weiter installiert werden, außer das Programm, welches ich programmiere...
auf den Ziel-Server, kein problem....

Gibts es hier eine Möglichkeit via z.B. FTP oder WMI ???

Danke

Content-Key: 135586

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

Printed on: April 19, 2024 at 04:04 o'clock

Member: dog
dog Feb 09, 2010 at 22:49:57 (UTC)
Goto Top
Ähm...wie jetzt?

http://msdn.microsoft.com/en-us/library/system.io.file.aspx

In members that accept a path, the path can refer to a file or just a directory. The specified path can also refer to a relative path or a Universal Naming Convention (UNC) path for a server and share name.
Member: mayho33
mayho33 Feb 09, 2010 at 23:04:26 (UTC)
Goto Top
Hi und Sorry?

Du willst in VB2005 eine Datei zwischen 2 Servern kopieren ohne, ich nehme an, gemappte, sprich, Netzlaufwerksbuchstaben?

WArum nicht VBS? da musst du garnix installieren. Alles schon da. Auch FTP braucht irgendeine Freigabe oder eine Share oder sonstwas damit du da was hincopieren kannst.

Versteh dich glaube ich nicht ganz. Kannst du das genauer erklären?

Grüße
Member: BadFsaadKl
BadFsaadKl Feb 10, 2010 at 09:26:54 (UTC)
Goto Top
Hallo Mayho33,


genau.
aber um genau zu sein, will ich diversen Workstation's eine Datei, in Ein Verzeichniss auf einen Server kopieren.
Jedoch, ohne auf jedem dieser Workstations eine Netzlaufwerk einrichten zu müssen.

Auf den Zielserver einen FTP-Client zu installieren, wäre ein Möglichkeit. welche ich aber erst als letztes in Erwägung ziehen möchte.

Wie würde ich denn die Dateien via VBS übermitteln können ?
Und wie kann ich das VBS - Script dann in das Programm integrieren ?

Danke
Member: mayho33
mayho33 Feb 10, 2010 at 19:12:38 (UTC)
Goto Top
Hi!

Etwa so:

Set oShell = WScript.CreateObject("WScript.Shell")
Set oFso = CreateObject("Scripting.FileSystemObject")

appPath = ofso.getparentfoldername(wscript.scriptfullname)

'########################
'# Variante 1
'Host = InputBox("IP oder Hostmane:")


CopyPath = "\\" + Host + "\c$\Windows\Dateiname"

If ofso.FileExists(copypath + ".txt") Then
ofso.CopyFile copypath + ".txt", apppath + "\", True
End If

'########################
'# Variante 2
RangeHost = InputBox("IP oder Hostmane getrennt durch ""|"" eingeben:")
arrRangeHost = Split(RangeHost, "|")
LenarrRangeHost = UBound(arrRangeHost)

x = 0

Do
copypath = "\c$\Windows\Dateiname"
FullCopyPath = "\\" + arrRangeHost(x) + CopyPath + ".txt"

If ofso.FileExists(FullCopyPath) Then
ofso.CopyFile FullCopyPath, apppath +"\", True
WScript.Sleep 1500
ofso.MoveFile apppath + "\dateiname.txt", apppath + "\dateiname" + "_" + arrRangeHost(x) + ".txt"
End If
x = x + 1
Loop Until x > LenarrRangeHost
Member: BadFsaadKl
BadFsaadKl Feb 11, 2010 at 08:41:38 (UTC)
Goto Top
Hallo Mayho33,


Danke für den Code.
Funktioniert Lokal wunderbar.

Jetzt bräucht nur noch die Info, wie, wo ich die Zugangsdaten für den Server eingebe.
Sprich Benutzername, Password.

Danke
Member: mayho33
mayho33 Feb 11, 2010 at 20:12:57 (UTC)
Goto Top
Hi!

Eigentlich wird das Script am Server ausgeführt und holt von den Clients die Datei die du haben möchtest. in den Script-Pfad Da am Server eh nur der Admin was zu suchen hat sollte im AD das Script eigentlich problemlos ohne Login funktionieren.

LOgon ginge z.B. über die WMI wenn du das unbedingt brauchst.
Member: BadFsaadKl
BadFsaadKl Feb 16, 2010 at 13:37:49 (UTC)
Goto Top
Hallo Mayho33,


Danke für den Code.
Kennst du auch eine Möglichkeit, das ganze nun doch via Visual Basic umzusetzen ?
Ausführen von Scripten auf dem Server ist leider nicht mehr möglich (Firmenpolitik face-sad )....

Würde das ganze gerne über die System.Management & Filesystem Klasse machen, falls das geht.

Habe bereits bissle rumgetüftelt, aber fehlt mir noch einiges face-sad...

Imports System
Imports System.Management

Dim Options As ConnectionOptions
Options = New ConnectionOptions
Options.Username = "###"
Options.Password = "###"

Dim Path As ManagementPath
Path = New ManagementPath("\\Server\root\CIMV2:Win32_LogicalDisk.DeviceID=""C:""")
Dim path2 = "C:\web.txt"

Hab bis jetzt nur mit dem ManagementScope und ObjectQuery mit paar Infos auslesen können...
Jedoch komme ich mit dem Filetransfer noch net so klar.

Kannst du mir da weiterhelfen ?

Danke
Member: dog
dog Feb 16, 2010 at 13:53:20 (UTC)
Goto Top
Vielleicht liest du dir einfach nochmal meinen ersten Kommentar genau durch face-wink
Member: BadFsaadKl
BadFsaadKl Feb 16, 2010 at 14:34:37 (UTC)
Goto Top
Hab ich mir schon durchgelesen.
Komme jedoch net mit zurecht, wie ich beim Zielpfad, die Zugangsdaten mitgebe.

Bei der Scope-Finktion siehts wie folgt aus:
'scope = New ManagementScope("\\Server\root\CIMV2", Options)
' Die Opteions sind die Zugangsdaten.

bei der ManagementPath Funktion klappt das aber irgendwie net so.
Member: dog
dog Feb 16, 2010 at 15:04:53 (UTC)
Goto Top
Sicher nicht schön (weil man über die C-API gehen muss) aber über WNetAddConnection2 kannst du dich mit einem Share verbinden: http://msdn.microsoft.com/en-us/library/aa385413%28VS.85%29.aspx
Damit solltest du die notwendige Session zum Kopieren haben.
(Das lpLocalName Attribut des NETRESOURCE Structs muss leer sein).
Member: mayho33
mayho33 Feb 18, 2010 at 22:11:09 (UTC)
Goto Top
Hi!

Hier ein Beispiel. Gefunden in der allgemeinen Hilfe

geschrieben in VB2008 musst du also eventuell ein wenig anpassen und ist ungetestet

Auf System.Management musst du explizit einen Verweis setzen


Imports System
Imports System.Management
Imports System.IO

Module Module1
Sub main()
'User/Passwort übergeben
Dim Anmelden() As String = {"USER", "PASSWORT"}

RemoteConnect.Main_(Anmelden)
End Sub


Public Class RemoteConnect

Public Overloads Shared Function Main_(ByVal args() As String) As Integer

'User/Passwort übernehmen
Dim options As ConnectionOptions
options = New ConnectionOptions
options.Username = args(0)
options.Password = args(1)

'VErbindung aufbauen
Dim scope As ManagementScope
scope = New ManagementScope("\\SERVERNAME:Win32_LogicalDisk.DeviceID=""C:""", options)
scope.Connect()

' Query system for Operating System information
Dim query As ObjectQuery
query = New ObjectQuery( _
"SELECT * FROM Win32_OperatingSystem")
Dim searcher As ManagementObjectSearcher
searcher = _
New ManagementObjectSearcher(scope, query)

Dim queryCollection As ManagementObjectCollection
queryCollection = searcher.Get()

Dim m As ManagementObject
For Each m In queryCollection
' Daten anzeigen
Console.WriteLine("Computer Name : {0}", _
m("csname"))
Console.WriteLine("Windows Directory : {0}", _
m("WindowsDirectory"))
Console.WriteLine("Operating System: {0}", _
m("Caption"))
Console.WriteLine("Version: {0}", m("Version"))
Console.WriteLine("Manufacturer : {0}", _
m("Manufacturer"))
Next

Return 0
End Function
End Class




Grüße!


Mayho