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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135586
Url: https://administrator.de/contentid/135586
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
11 Kommentare
Neuester Kommentar
Ähm...wie jetzt?
http://msdn.microsoft.com/en-us/library/system.io.file.aspx
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.
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
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
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
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
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.
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.
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
Damit solltest du die notwendige Session zum Kopieren haben.
(Das
lpLocalName
Attribut des NETRESOURCE Structs muss leer sein).
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
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