Powershellskript aus VB.Net starten
Hi,
ich stehe gerade auf dem Schlauch. Ich möchte aus einem VB.Net-Programm ein Powershellskript starten. Ich hab schon verschiedene Ansätze dazu gefunden und erfolgslos probiert. Der Aufruf in meinem Programm sieht aktuell folgendermaßen aus:
Das Skript liegt an dem angegebenen Ort und sollte den Usernamen in eine Datei schreiben, eine Messagebox anzeigen und dann bis 10 in der Konsole zählen. Führe ich das Skript direkt aus der 64bit-Powershell aus funktioniert es. Klicke ich auf den Button in meinem Programm kommt sofort die Messagebox mit "Fertig".
Ich vermute ich habe irgendwo etwas übersehen, komme aber leider gerade nicht drauf wo ...
Grüße,
Mesaou
PS.
OK das Skript wird jetzt ausgeführt ... war wirklich nur eine Kleinigkeit:
Der Filename war in den einfachen Anführungszeichen anstelle der doppelten ... das ist jetzt korrigiert. Das nächste ist die Übergabe von Parametern. Falls jemand da zufällig gerade nen Tipp für mich hat verkürzt sich meine Netzrecherche^^
ich stehe gerade auf dem Schlauch. Ich möchte aus einem VB.Net-Programm ein Powershellskript starten. Ich hab schon verschiedene Ansätze dazu gefunden und erfolgslos probiert. Der Aufruf in meinem Programm sieht aktuell folgendermaßen aus:
Private Sub btnScript_Click(sender As Object, e As EventArgs) Handles btnScript.Click
Dim Proc As Process
Proc = Process.Start("powershell", "-noexit -file 'C:\Users\Administrator\Documents\testskript.ps1'")
Proc.WaitForExit()
MessageBox.Show("Fertig")
End Sub
Das Skript liegt an dem angegebenen Ort und sollte den Usernamen in eine Datei schreiben, eine Messagebox anzeigen und dann bis 10 in der Konsole zählen. Führe ich das Skript direkt aus der 64bit-Powershell aus funktioniert es. Klicke ich auf den Button in meinem Programm kommt sofort die Messagebox mit "Fertig".
echo $env:Username | out-file "C:\powershell_user.txt"
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show('Nachricht','Titel',0)
for($i=1;$i -le 10; $i++){
start-sleep -s 1
write-host $i
}
Ich vermute ich habe irgendwo etwas übersehen, komme aber leider gerade nicht drauf wo ...
Grüße,
Mesaou
PS.
OK das Skript wird jetzt ausgeführt ... war wirklich nur eine Kleinigkeit:
Private Sub btnScript_Click(sender As Object, e As EventArgs) Handles btnScript.Click
Dim Proc As Process
Proc = Process.Start("powershell", "-noexit -file " & Chr(34) & "C:\Users\Administrator\Documents\testskript.ps1" & Chr(34))
Proc.WaitForExit()
MessageBox.Show("Fertig")
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 289298
Url: https://administrator.de/contentid/289298
Ausgedruckt am: 24.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Nutze doppelte Anführungszeichen um den Pfad für das Skript ...
Gruß jodel32
Dim procAs Process
proc = Process.Start("powershell.exe", "-File ""C:\Users\Administrator\Documents\testskript.ps1""")
proc.WaitForExit()
MsgBox("Fertig")
Das nächste ist die Übergabe von Parametern.
Moin,packe in dein Powershell-Skript in den Kopf deine Parameter welche du übergeben möchtest:
param(
[string]$parameter1,
[string]$parameter2
)
write-host $parameter1
write-host $parameter2
Fertig.
Alternativ kannst du auch ohne param() arbeiten und dann mit dem Array args arbeiten
$args = erster Parameter
$args[1] = zweiter Parameter
usw. Anhängen der Parameter in VB.Net wie oben geschrieben...
Grüße Uwe