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-Key: 289298

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

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

Mitglied: 114757
Solution 114757 Nov 25, 2015 updated at 09:58:29 (UTC)
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
Member: colinardo
Solution colinardo Nov 25, 2015 updated at 09:58:31 (UTC)
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
Member: Mesaou
Mesaou Nov 25, 2015 at 10:00:17 (UTC)
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.