Visual Basic: Powershell-Kommando ausführen lassen?
Hey
Ich möchte in VB einen Powershell-Command ausführen lassen.
Leider funktioniert es mit: Shell(".....") nicht.
Weiß hier jemand wie das funktioniert?
Ich habe schon eine Extension installiert, aber es wird mir irgendwie in VBCode angezeigt (was ich mir auch dafür herunterladen musste) und ich weiß überhaupt nicht wie man damit umgeht und ob es überhaupt etwas mit VB zu tun hat...
Vielen Dank im Voraus!
Btw ich schreibe ein Programm mit dem man die Zeitstempel von Dateien ändern kann (zB Erstellt: 2030). Aber ich glaube das spielt hier keine Rolle...
2 Antworten
Hier ein VB6 (VBA) Code. Etwas analoges sollte auch VB; VB.net haben.
Es gibt wohl auch ne 64bit Variante dazu.
Public Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory _
As String, ByVal nShowCmd As Long) As Long
Aufruf:
Call ShellExecute(0&, "Open", "C:\test.txt", "", "", 1)
a) PowerShell ist eine eigene Anwendung. die Shell-Methode greift auf den alten Befehlsprozessor cmd.exe zu.
b) PowerShell beruht ebenfalls auf dem .NET-Framework, kann also auch nicht mehr und nicht weniger als Visual Basic. Von daher würde ich über File- bzw. Directory-Objekte auf Dateien und ihre Eigenschaften (wie Erstellungsdatum) zugreifen - oder worauf auch immer PowerShell zugreifen soll. Spart zum Einen Wechsel der Programmiersprache und zum Andern einen Prozesswechsel.
var d1 = new System.DateTime(2012, 1, 1, 19, 11, 0);
System.IO.File.SetCreationTime(@"C:\Users\Admin\Documents\Liste.pdf", d1);
Das war jetzt hilfreich, allerdings weiß ich nicht so genau wie ich das umsetzen kann.
Ich habe die Codes:
$d1 = get-date 1.1.2012-19:11
(Zum definieren des Datums)
und
[System.IO.File]::SetCreationTime("C:\Users\Admin\Documents\Liste.pdf", $d1)
(Ersetzen der Einstellung am Speicherort der Datei).
In Powershell also nur 2 lines.
Wie würde das aussehen in VB?
Danke vielmals für die Hilfe schonmal!!