Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PowerShell GUI Skript ausführen durch "Start" Knopf

Mitglied: 135531

135531 (Level 1)

12.03.2018 um 14:43 Uhr, 365 Aufrufe, 2 Kommentare

Hi @all,

ich bin absoluter Neuling im Thema PowerShell. Ich versuche derzeit eine GUI für DDA (Discrete Device Assignment) zu bauen, bin auch schon soweit, dass das Skript die VMs und PCI-Geräte ausliest. Der nächste Schritt wäre nun das DDA Skript in das "GUI Skript" einzubauen, sprich wenn ich auf "Start" drücke soll das DDA skript ausgeführt werden und die vorher ausgewählte VM und das PCI-Gerät übernehmen. Leider habe ich nicht mal einen Ansatz wie das funktionieren könnte.

Ich bin natürlich auch offen für andere Lösungsvorschläge, hauptsache durch das "Start" drücken wird das PCI-Gerät in die VM übernommen (Discrete Device Assignment).

Mein Skript sieht derzeit wie folgt aus:
01.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
02.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
03.
$objForm = New-Object System.Windows.Forms.Form
04.
$objForm.Backcolor="White"
05.
$objForm.StartPosition = "CenterScreen"
06.
$objForm.Size = New-Object System.Drawing.Size(400,400)
07.
$objForm.Text = "Discrete Device Assignment"
08.
 
09.
#VM Namen eingeben
10.
 
11.
$objForm.Add_Load({
12.
    $objComboBox1.Items.AddRange((Get-VM | select -Expand Name))
13.
})
14.
$objComboBox1.Add_SelectedIndexChanged({
15.
    [System.Windows.Forms.MessageBox]::Show((Get-VM -Name $objComboBox1.SelectedItem | fl * | out-string))
16.
})
17.
$objLabel = New-Object System.Windows.Forms.Label
18.
$objLabel.Location = New-Object System.Drawing.Size(50,50)
19.
$objLabel.Size = New-Object System.Drawing.Size(250,50)
20.
$objLabel.Text = "Bitte wählen sie eine VM aus:"
21.
$objForm.Controls.Add($objLabel)
22.
 
23.
$objComboBox1 = New-Object System.Windows.Forms.Combobox
24.
$objComboBox1.Location = New-Object System.Drawing.Size(50,100)
25.
$objComboBox1.Size = New-Object System.Drawing.Size(250,50)
26.
$objComboBox1.Height = 70
27.
$objForm.Controls.Add($objComboBox1)
28.
$objForm.TopMost = $True
29.
 
30.
 
31.
#PCI-Gerät Location Path angeben
32.
 
33.
$objForm.Add_Load({
34.
    $objComboBox2.Items.AddRange((gwmi cim_controller | select -Expand Name))
35.
})
36.
$objComboBox2.Add_SelectedIndexChanged({
37.
    [System.Windows.Forms.MessageBox]::Show((gwmi cim_controller | select -Expand Name))
38.
})
39.
 
40.
$objLabel = New-Object System.Windows.Forms.Label
41.
$objLabel.Location = New-Object System.Drawing.Size(50,150)
42.
$objLabel.Size = New-Object System.Drawing.Size(300,50)
43.
$objLabel.Text = "Wählen sie ein PCI-Gerät aus:"
44.
$objForm.Controls.Add($objLabel)
45.
 
46.
$objComboBox2 = New-Object System.Windows.Forms.Combobox
47.
$objComboBox2.Location = New-Object System.Drawing.Size(50,200)
48.
$objComboBox2.Size = New-Object System.Drawing.Size(300,50)
49.
$objComboBox2.Height = 70
50.
$objForm.Controls.Add($objComboBox2)
51.
$objForm.TopMost = $True
52.
 
53.
#Abbrechen-Button
54.
 
55.
$CancelButton = New-Object System.Windows.Forms.Button
56.
$CancelButton.Location = New-Object System.Drawing.Size(250,300)
57.
$CancelButton.Size = New-Object System.Drawing.Size(75,25)
58.
$CancelButton.Text = "Abbrechen"
59.
$CancelButton.Name = "Abbrechen"
60.
$CancelButton.DialogResult = "Cancel"
61.
$CancelButton.Add_Click({$objForm.Close()})
62.
$objForm.Controls.Add($CancelButton)
63.
 
64.
#Start-Button
65.
 
66.
$StartButton = New-Object System.Windows.Forms.Button
67.
$StartButton.Location = New-Object System.Drawing.Size(50,300)
68.
$StartButton.Size = New-Object System.Drawing.Size(75,25)
69.
$StartButton.Text = "Start"
70.
$StartButton.Add_Click(
71.
    {
72.
        $Script:x = $objComboBox1.selectedItems
73.
        $objComboBox1.Text = $Script:x | out-string
74.
    })
75.
 
76.
 
77.
$objForm.Controls.Add($StartButton)
78.
 
79.
#DDA Befehle ausführen
80.
#$DDACommands = New-Object System.Windows.SystemCommands
81.
 
82.
[void] $objForm.ShowDialog()
Mitglied: colinardo
LÖSUNG 12.03.2018, aktualisiert 15.03.2018
Servus,
alles was du brauchst findest du hier:
Passing through devices to Hyper-V VMs by using discrete device assignment

Im Eventhandler des Buttons dürftest du also hiermit klar kommen:
01.
$vm = Get-VM $objCombobox1.SelectedItem
02.
$device = $objCombobox2.SelectedItem
03.
$locationPath = Get-PnpDevice -PresentOnly | ?{$_.FriendlyName -eq $device} | Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths | select -Expand Data
04.
if ($locationPath){
05.
    Dismount-VMHostAssignableDevice -LocationPath $locationPath -Force -Verbose
06.
    Add-VMAssignableDevice -VM $vm -LocationPath $locationPath -Verbose
07.
}else{
08.
    [System.Windows.Forms.MessageBox]::Show("Device not found.")
09.
}
Grüße Uwe
Bitte warten ..
Mitglied: 135531
13.03.2018 um 16:20 Uhr
Der Link war Goldwert, Danke dir !
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

PowerShell GUI "Start" Knopf, Befehl richtig zuweisen

gelöst Frage von 135531Batch & Shell3 Kommentare

Hi all, ich bin momentan dabei eine PowerShell GUI zu bauen um den Standardrucker zu ändern (Die Idee ist ...

Windows 10

Powershell GUI Skript Filehash

gelöst Frage von BaphometWindows 104 Kommentare

Hallo Community, da ich mich erst sehr kurzzeitig mit der PS befasse tauchen immer wieder Fragen auf. > Ich ...

Batch & Shell

PowerShell GUI WPF

gelöst Frage von derhoeppiBatch & Shell18 Kommentare

Hallo, heute habe ich hoffentlich wieder ein einfaches Thema. Und zwar besitzt meiner GUI (WPF) einige Checkboxen und auch ...

Batch & Shell

Powershell Neustart GUI

gelöst Frage von 136430Batch & Shell9 Kommentare

Hallo ich möchte in einer GUI einem User einen Neustart eines Remotecomputers zur Verfügung stellen, der user führt das ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 3 TagenHumor (lol)6 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 4 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 7 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows Server
Kleine Umfrage: Windows Server Desktop oder Core?
Frage von doomfreakWindows Server18 Kommentare

Hey :) Ich wollte mal eine kleine Umfrage hier starten. Ich bin schon etwas länger auf dieser Seite hier ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript17 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...

Microsoft
Lizenzplausibilisierung oder Spam?
Frage von lordimacMicrosoft14 Kommentare

Liebe Forengemeinde, uns erreichte die Tage eine Mail bezüglich einer Lizenzplausibilisierung durch einen Microsoft SAM Partner. Die Meldung im ...