mesaou
Goto Top

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:
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
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^^

Content-ID: 289298

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

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

114757
Lösung 114757 25.11.2015 aktualisiert um 10:58:29 Uhr
Goto Top
Nutze doppelte Anführungszeichen um den Pfad für das Skript ...
Dim procAs Process
proc = Process.Start("powershell.exe", "-File ""C:\Users\Administrator\Documents\testskript.ps1""")  
proc.WaitForExit()
MsgBox("Fertig")  
Gruß jodel32
colinardo
Lösung colinardo 25.11.2015 aktualisiert um 10:58:31 Uhr
Goto Top
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
und die Parameter hängst du in den Argumenten in deinem VB.Net Code einfach mit Leerzeichen voneinander getrennt hinten dran.
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
Mesaou
Mesaou 25.11.2015 um 11:00:17 Uhr
Goto Top
ok ... das war zu einfach ... Die Übernahem im Skript hatte ich schon nur im Programm hab ich es mit "-param# <Parameter#>" und "-<Parameter#>" probiert. Danke euch beiden.