776 lines
35 KiB
PowerShell
776 lines
35 KiB
PowerShell
$Script:Version = "FS Admin Panel v0.8 (extern)"
|
|
#Ersteller: Florian Späth
|
|
#Diese Software soll helfen die verschiedensten Anwendungen und Scripte der FG HDS zu administrieren.
|
|
|
|
Add-Type -AssemblyName PresentationFramework
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null
|
|
|
|
### Variablen Definition ###
|
|
# array = Settings ,
|
|
$script:array=@($false,$true)
|
|
|
|
|
|
function getValues($formTitle, $textTitle){
|
|
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
|
|
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
|
|
|
|
$objForm = New-Object System.Windows.Forms.Form
|
|
$objForm.Text = $formTitle
|
|
$objForm.Size = New-Object System.Drawing.Size(300,200)
|
|
$objForm.StartPosition = "CenterScreen"
|
|
|
|
$objForm.KeyPreview = $True
|
|
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") {$x=$objTextBox.Text;$objForm.Close()}})
|
|
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") {$objForm.Close()}})
|
|
|
|
$OKButton = New-Object System.Windows.Forms.Button
|
|
$OKButton.Location = New-Object System.Drawing.Size(75,120)
|
|
$OKButton.Size = New-Object System.Drawing.Size(75,23)
|
|
$OKButton.Text = "OK"
|
|
$OKButton.Add_Click({$Script:userInput=$objTextBox.Text;$objForm.Close()})
|
|
$objForm.Controls.Add($OKButton)
|
|
|
|
$CANCELButton = New-Object System.Windows.Forms.Button
|
|
$CANCELButton.Location = New-Object System.Drawing.Size(150,120)
|
|
$CANCELButton.Size = New-Object System.Drawing.Size(75,23)
|
|
$CANCELButton.Text = "CANCEL"
|
|
$CANCELButton.Add_Click({$objForm.Close()})
|
|
$objForm.Controls.Add($CANCELButton)
|
|
|
|
$objLabel = New-Object System.Windows.Forms.Label
|
|
$objLabel.Location = New-Object System.Drawing.Size(10,20)
|
|
$objLabel.Size = New-Object System.Drawing.Size(280,30)
|
|
$objLabel.Text = $textTitle
|
|
$objForm.Controls.Add($objLabel)
|
|
|
|
$objTextBox = New-Object System.Windows.Forms.TextBox
|
|
$objTextBox.Location = New-Object System.Drawing.Size(10,50)
|
|
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
|
|
$objForm.Controls.Add($objTextBox)
|
|
|
|
$objForm.Topmost = $True
|
|
|
|
$objForm.Add_Shown({$objForm.Activate()})
|
|
|
|
[void] $objForm.ShowDialog()
|
|
|
|
return $userInput
|
|
}
|
|
|
|
Function Select-FolderDialog{
|
|
param([string]$Description="RACADM Speicherort wählen",[string]$RootFolder="Desktop")
|
|
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null
|
|
$objForm = New-Object System.Windows.Forms.FolderBrowserDialog
|
|
$objForm.Rootfolder = $RootFolder
|
|
$objForm.Description = $Description
|
|
$Show = $objForm.ShowDialog()
|
|
If ($Show -eq "OK"){
|
|
Return $objForm.SelectedPath
|
|
}else{
|
|
Return $false
|
|
}
|
|
}
|
|
|
|
### $schema = getValues "Database Schema" "Enter database schema"
|
|
|
|
|
|
#### Lädt Scripte ####
|
|
|
|
|
|
function Load_info {
|
|
[XML]$Form = @"
|
|
<?xaml encoding="utf-8"?>
|
|
<Window
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
|
|
xmlns:winForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
|
|
Name="Window" Title="Cleaner - Information" Height="440" Width="624" Icon="{Binding Icon}" ResizeMode="NoResize" WindowStyle="None">
|
|
<Grid Background="#00344E">
|
|
<TextBlock Name="text" Text="" HorizontalAlignment="Left" Margin="34,44,0,0" TextWrapping="Wrap" Foreground="White" Width="554" TextAlignment="Center" Height="360" VerticalAlignment="Top" FontSize="16"></TextBlock>
|
|
<Button Name="btnok" Content="OK" HorizontalAlignment="Left" Margin="264,390,0,0" VerticalAlignment="Top" Width="100" Height="36" BorderThickness="0" Background="#00b8d4" Foreground="White">
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="2"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="Red"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Label Content="Information" HorizontalAlignment="Left" VerticalAlignment="Top" Width="624" HorizontalContentAlignment="Center" Foreground="White" FontSize="20" FontWeight="Bold"/>
|
|
</Grid>
|
|
</Window>
|
|
"@
|
|
|
|
# Lädt das Fenster
|
|
$window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form))
|
|
$NR=(New-Object System.Xml.XmlNodeReader $Form)
|
|
$window=[Windows.Markup.XamlReader]::Load($NR)
|
|
|
|
# Objekt - Variablen Verknüpfung
|
|
|
|
$text = $window.FindName("text")
|
|
$Script:infook = $window.findName("btnok")
|
|
|
|
# Verknüpft feste Elemente
|
|
$window.Title = $Script:Version
|
|
$window.icon="C:\FSAP/Source/Logo.png"
|
|
$text.Text = "Das Admin Panel wurde geschaffen um Skripte welche von dem einzig waren Florian Spaeth entwickelt wurden in einer grafischen Oberfläche zu steuern.
|
|
Die Anwendung wurde so entworfen das diese maximale Wartungsfreundlichkeit bietet und auch Usern mit wenig Powershell Erfahrung die Möglichkeit gibt, neue Fenster hinzu zu fügen.
|
|
Im GitLab unter `"AllgemeineSkripte/examples`" kann Beispiel Code entnommen werden, wenn man sind in den BR hacken kann (: `n`nBugs in der GUI werden nicht aktiv verfolgt!`n`n$Script:Version `nCopyright bei Leiter (2024)`nAutor: Florian Spaeth `nDSGVO-Konform"
|
|
return $window
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function Load_confirm {
|
|
[XML]$Form = @"
|
|
<?xaml encoding="utf-8"?>
|
|
<Window
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Name="Window" Title="HDS Admin Panel - Confirm" Height="276" Width="509" Icon="{Binding Icon}" ResizeMode="NoResize" WindowStyle="None">
|
|
<Grid Background="#00344E">
|
|
<Button Name="btnstop" Content="BACK" HorizontalAlignment="Left" Margin="122,215,0,0" VerticalAlignment="Top" Width="100" Height="36" BorderThickness="0" Background="DarkGreen" Foreground="White">
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="2"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="Red"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Label Content="Confirm" HorizontalAlignment="Left" VerticalAlignment="Top" Width="509" HorizontalContentAlignment="Center" Foreground="White" FontSize="20" FontWeight="Bold"/>
|
|
<Label Name="choosen3" Content="Confirm the action and press the button again" HorizontalAlignment="Center" Margin="0,42,0,0" VerticalAlignment="Top" Width="270" Height="34" FontSize="12" FontWeight="Bold" Foreground="White"/>
|
|
<TextBox Name="text" Text="TEXT" BorderThickness="0" HorizontalAlignment="Center" Height="113" TextWrapping="Wrap" VerticalAlignment="Center" Width="412" Background="#013C5A" HorizontalContentAlignment="Center" Foreground="White" FontSize="14" IsTabStop="False"/>
|
|
<Button Name="btngo" Content="GO!" HorizontalAlignment="Left" Margin="286,215,0,0" VerticalAlignment="Top" Width="100" Height="36" BorderThickness="0" Background="DarkRed" Foreground="White">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="2"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Button.Style>
|
|
<Style TargetType="{x:Type Button}">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="Red"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
</Grid>
|
|
</Window>
|
|
"@
|
|
|
|
# Lädt das Fenster
|
|
$window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form))
|
|
$NR=(New-Object System.Xml.XmlNodeReader $Form)
|
|
$window=[Windows.Markup.XamlReader]::Load($NR)
|
|
|
|
# Objekt - Variablen Verknüpfung
|
|
|
|
$Script:confirmtext = $window.FindName("text")
|
|
$Script:confirmok = $window.findName("btngo")
|
|
$Script:confirmstop = $window.findName("btnstop")
|
|
|
|
# Verknüpft feste Elemente
|
|
$window.Title = $Script:Version
|
|
$window.icon="C:\FSAP/Source/Logo.png"
|
|
return $window
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Load_main {
|
|
[XML]$Form = @"
|
|
<?xaml encoding="utf-8"?>
|
|
<Window
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:local="clr-namespace:WpfApp1"
|
|
Title="MainWindow" Height="770" Width="932" Background="#1a1a1a" ResizeMode="NoResize">
|
|
<Grid>
|
|
<Label HorizontalAlignment="Left" VerticalAlignment="Top" Width="108" Height="731" FontSize="12" BorderBrush="Gray" Background="#0a0a0a" Foreground="White" Margin="1,10,0,0"/>
|
|
<Label HorizontalAlignment="Center" VerticalAlignment="Top" Width="1442" Height="76" FontSize="12" BorderBrush="Gray" Background="#0a0a0a" Foreground="White"/>
|
|
<Button TabIndex="1" Name="menu1" BorderThickness="0" HorizontalAlignment="Left" Margin="20,101,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img1" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="menu2" BorderThickness="0" HorizontalAlignment="Left" Margin="20,191,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img2" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="menu3" BorderThickness="0" HorizontalAlignment="Left" Margin="20,281,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img3" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="menu4" BorderThickness="0" HorizontalAlignment="Left" Margin="20,374,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img4" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="menu5" BorderThickness="0" HorizontalAlignment="Left" Margin="20,467,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img5" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="menu6" BorderThickness="0" HorizontalAlignment="Left" Margin="20,559,0,0" VerticalAlignment="Top" Width="70" Height="70" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="img6" Source="{Binding}"/>
|
|
</Button>
|
|
<Button Name="btninfo" HorizontalAlignment="Left" Margin="31,664,0,0" VerticalAlignment="Top" Width="48" Height="48" BorderThickness="0" Background="#292929" FontSize="40" Foreground="White">
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="2"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="imginfo" Source="{Binding}"/>
|
|
</Button>
|
|
<Button TabIndex="4" x:Name="btnsettings" BorderThickness="0" HorizontalAlignment="Left" Margin="834,653,0,0" VerticalAlignment="Top" Width="67" Height="70" FontSize="40" Background="#292929" Foreground="White" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="2"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
<Image x:Name="imgsettings" Source="{Binding}"/>
|
|
</Button>
|
|
<TextBox Name="log" Text="" BorderThickness="0" HorizontalAlignment="Left" Height="465" Margin="505,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="396" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="14" IsTabStop="False"/>
|
|
<Label Name="l1" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" Width="599" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" FontSize="22" FontWeight="Medium" Margin="152,37,0,0" Height="44"/>
|
|
<TextBlock Name="work" Text="" HorizontalAlignment="Left" Margin="1314,10,0,0" TextWrapping="Wrap" Foreground="White" Background="Darkgreen" IsEnabled="false" Width="44" TextAlignment="Center" Height="52" VerticalAlignment="Top" FontSize="16"/>
|
|
|
|
<Button TabIndex="1" x:Name="btn_settings" Content="Settings" BorderThickness="0" HorizontalAlignment="Left" Margin="738,478,0,0" Visibility = "Hidden" VerticalAlignment="Top" Width="163" Height="35" FontSize="13" Foreground="LightGray" Background="#292929" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_standby" Content="Standby" BorderThickness="0" HorizontalAlignment="Left" Margin="738,519,0,0" Visibility = "Hidden" VerticalAlignment="Top" Width="163" Height="35" FontSize="13" Foreground="LightGray" Background="#292929" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_shutdown" Content="Shutdown" BorderThickness="0" HorizontalAlignment="Left" Margin="738,561,0,0" Visibility = "Hidden" VerticalAlignment="Top" Width="163" Height="35" FontSize="13" Foreground="LightGray" Background="#292929" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_close" Content="Close" BorderThickness="0" HorizontalAlignment="Left" Margin="738,602,0,0" Visibility = "Hidden" VerticalAlignment="Top" Width="163" Height="35" FontSize="13" Foreground="LightGray" Background="#292929" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
|
|
|
|
|
|
<Button TabIndex="1" x:Name="btn_r710_stop" BorderThickness="0" HorizontalAlignment="Left" Margin="268,316,0,0" VerticalAlignment="Top" Width="100" Height="100" FontSize="13" Background="DarkRed" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_r710_m2" BorderThickness="0" HorizontalAlignment="Left" Margin="268,431,0,0" VerticalAlignment="Top" Width="99" Height="100" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_r710_m1" BorderThickness="0" HorizontalAlignment="Left" Margin="379,431,0,0" VerticalAlignment="Top" Width="99" Height="100" FontSize="13" Background="Gray" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" x:Name="btn_r710_info" BorderThickness="0" HorizontalAlignment="Left" Margin="137,316,0,0" VerticalAlignment="Top" Width="100" Height="100" FontSize="13" Background="DarkOrange" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button TabIndex="1" Name="btn_r710_start" BorderThickness="0" HorizontalAlignment="Left" Margin="379,316,0,0" VerticalAlignment="Top" Width="99" Height="100" FontSize="13" Background="DarkGreen" FontWeight="Medium">
|
|
<Button.Resources>
|
|
<Style TargetType="{x:Type Border}">
|
|
<Setter Property="CornerRadius" Value="0"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Label Name="l1_R710" HorizontalAlignment="Left" Content="Power:" VerticalAlignment="Top" Visibility="Visible" Width="128" Height="34" FontSize="18" BorderBrush="Gray" Foreground="White" Margin="124,100,0,0"/>
|
|
<TextBox x:Name="tb_r710_power" Text="" BorderThickness="0" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="34" Margin="260,100,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="16" IsTabStop="False"/>
|
|
<Label Name="l2_R710" HorizontalAlignment="Left" Content="MAC:" VerticalAlignment="Top" Visibility="Visible" Width="128" Height="34" FontSize="18" BorderBrush="Gray" Foreground="White" Margin="124,139,0,0"/>
|
|
<TextBox x:Name="tb_r710_mac" Text="" BorderThickness="0" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="34" Margin="260,139,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="16" IsTabStop="False"/>
|
|
<Label Name="l3_R710" HorizontalAlignment="Left" Content="IP:" VerticalAlignment="Top" Visibility="Visible" Width="128" Height="34" FontSize="18" BorderBrush="Gray" Foreground="White" Margin="124,178,0,0"/>
|
|
<TextBox x:Name="tb_r710_ip" Text="" BorderThickness="0" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="34" Margin="260,178,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="16" IsTabStop="False"/>
|
|
<Label Name="l4_R710" HorizontalAlignment="Left" Content="BIOS:" VerticalAlignment="Top" Visibility="Visible" Width="128" Height="34" FontSize="18" BorderBrush="Gray" Foreground="White" Margin="124,217,0,0"/>
|
|
<TextBox x:Name="tb_r710_bios" Text="" BorderThickness="0" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="34" Margin="260,217,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="16" IsTabStop="False"/>
|
|
<Label Name="l5_R710" HorizontalAlignment="Left" Content="RAC Name:" VerticalAlignment="Top" Visibility="Visible" Width="128" Height="34" FontSize="18" BorderBrush="Gray" Foreground="White" Margin="124,256,0,0"/>
|
|
<TextBox x:Name="tb_r710_name" Text="" BorderThickness="0" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="34" Margin="260,256,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="220" IsEnabled="false" HorizontalContentAlignment="Center" Background="#292929" Foreground="White" FontSize="16" IsTabStop="False"/>
|
|
|
|
</Grid>
|
|
</Window>
|
|
"@
|
|
|
|
# Lädt das Fenster
|
|
$window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form))
|
|
|
|
# Objekt - Variablen Verknüpfung
|
|
#Main
|
|
$Script:menu1 = $window.findName("menu1")
|
|
$Script:menu2 = $window.findName("menu2")
|
|
$Script:menu3 = $window.findName("menu3")
|
|
$Script:menu4 = $window.findName("menu4")
|
|
$Script:menu5 = $window.findName("menu5")
|
|
$Script:menu6 = $window.findName("menu6")
|
|
$Script:img1 = $window.findName("img1")
|
|
$Script:img2 = $window.findName("img2")
|
|
$Script:img3 = $window.findName("img3")
|
|
$Script:img4 = $window.findName("img4")
|
|
$Script:img5 = $window.findName("img5")
|
|
$Script:img6 = $window.findName("img6")
|
|
$Script:btn_info = $window.findName("btninfo")
|
|
$Script:settings = $window.findName("btnsettings")
|
|
$Script:imginfo = $window.findName("imginfo")
|
|
$Script:imgsettings = $window.findName("imgsettings")
|
|
$Script:l1 = $window.findName("l1")
|
|
$Script:log = $window.findName("log")
|
|
$Script:work = $window.findName("work")
|
|
$Script:btn_standby = $window.findName("btn_standby")
|
|
$Script:btn_shutdown = $window.findName("btn_shutdown")
|
|
$Script:btn_settings = $window.findName("btn_settings")
|
|
$Script:btn_close = $window.findName("btn_close")
|
|
|
|
#Dashboard
|
|
$Script:Dashboard = $window.findName("Dashboard")
|
|
|
|
#R710
|
|
$Script:btn_r710_stop = $window.findName("btn_r710_stop")
|
|
$Script:btn_r710_start = $window.findName("btn_r710_start")
|
|
$Script:btn_r710_info = $window.findName("btn_r710_info")
|
|
$Script:btn_r710_m1 = $window.findname("btn_r710_m1")
|
|
$Script:btn_r710_m2 = $window.findname("btn_r710_m2")
|
|
|
|
$Script:tb_r710_power = $window.findname("tb_r710_power")
|
|
$Script:tb_r710_mac = $window.findname("tb_r710_mac")
|
|
$Script:tb_r710_ip = $window.findname("tb_r710_ip")
|
|
$Script:tb_r710_bios = $window.findname("tb_r710_bios")
|
|
$Script:tb_r710_name = $window.findname("tb_r710_name")
|
|
|
|
$Script:l1_r710 = $window.findname("l1_R710")
|
|
$Script:l2_r710 = $window.findname("l2_R710")
|
|
$Script:l3_r710 = $window.findname("l3_R710")
|
|
$Script:l4_r710 = $window.findname("l4_R710")
|
|
$Script:l5_r710 = $window.findname("l5_R710")
|
|
|
|
# Fensterwahl
|
|
#if (condition) {
|
|
#$window.Height="912"
|
|
#$window.Width="1370"
|
|
#$window.WindowStyle="None"
|
|
#$window.WindowState="Maximized"
|
|
|
|
#$window.Height="912"
|
|
#$window.Width="1370"
|
|
#$window.WindowStyle="SingleBorderWindow"
|
|
#$window.WindowState="Normal"
|
|
#}
|
|
|
|
# Verknüpft feste Elemente
|
|
$window.Title = $Script:Version
|
|
$window.icon="C:\FSAP\Source\Logo.png"
|
|
$imginfo.Source = "C:\FSAP\Source\info.png"
|
|
$imgsettings.Source = "C:\FSAP/Source/Konfig.png"
|
|
$img1.Source = "C:\FSAP/Source/Dash.png"
|
|
$img2.Source = "C:\FSAP/Source/Server.png"
|
|
$img3.Source = "C:\FSAP/Source/center.png"
|
|
return $window
|
|
}
|
|
|
|
$Script:main = Load_main # Variable: $main
|
|
$Script:confirm = Load_confirm # Variable: $confirm
|
|
$Script:info = Load_info # Variable: $info
|
|
|
|
|
|
#### Definition globaler Variablen ####
|
|
|
|
## Die GO variable kann nach aufruf der confirm funktion abgefragt werden, um eine 2. Bestätigung der eingabe zu erhalten. (Aufruf: confirm $text)
|
|
[boolean]$Script:GO = $false
|
|
|
|
$Script:ScriptRoot = "C:\FSAP"
|
|
$Script:iconpath = "C:\FSAP\icons"
|
|
$Script:config = Import-CSV -Path "C:\FSAP\config.csv"
|
|
$Script:RACpath = ($config | where{$_.ID -eq "racadm_path"}).value
|
|
$Script:plinkpath = ($config | where{$_.ID -eq "plink_path"}).value
|
|
$Script:idracuser = ($config | where{$_.ID -eq "idracuser"}).value
|
|
$Script:idracpass = ($config | where{$_.ID -eq "idracpass"}).value
|
|
$Script:remoteuser = ($config | where{$_.ID -eq "remoteuser"}).value
|
|
$Script:remotepass = ($config | where{$_.ID -eq "remotepass"}).value
|
|
$idracpassenc = "$Script:idracpass"|ConvertTo-SecureString
|
|
$Script:idracpass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($idracpassenc))
|
|
$remotepassenc = "$Script:remotepass"|ConvertTo-SecureString
|
|
$Script:remotepass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($remotepassenc))
|
|
|
|
|
|
|
|
#$Script:cert_path = ($config | where{$_.ID -eq "some"}).value
|
|
#$Script:defudbu_path = ($config | where{$_.ID -eq "some"}).value
|
|
$logfile = "C:\FSAP\log.txt"
|
|
|
|
### Farb Variablen ###
|
|
|
|
$Script:Standardbtncolor = "#00b8d4"
|
|
$Script:Delcolor = "#d50000"
|
|
$Script:BackgroundMovecolor = "#FFFFEB9C"
|
|
$Script:ForegroundMovecolor = "#FF9C6500"
|
|
$Script:Foregroundgrey = "#FF7A7A7A"
|
|
$Script:Backgroundgrey = "#FFC5C5C5"
|
|
|
|
#### Funktionen ####
|
|
### Global ###
|
|
|
|
function Write-Admin-Log{
|
|
Param($text)
|
|
"$(get-date -format "yyyy-MM-dd HH:mm:ss"): $($text)" | out-file $logfile -Append
|
|
$Script:log.text += "$text `n"
|
|
}
|
|
|
|
function Resolve-DnsName {
|
|
param (
|
|
[Parameter(Mandatory)][string]$ComputerName
|
|
)
|
|
try {
|
|
[System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString
|
|
return ([System.Net.Dns]::GetHostAddresses($ComputerName).IPAddressToString)
|
|
}
|
|
catch {
|
|
Write-Log "IP not found for $ComputerName!"
|
|
}
|
|
}
|
|
|
|
function working {
|
|
param (
|
|
$status
|
|
)
|
|
if ($status) {
|
|
$Script:work.Background="Darkred"
|
|
}else {
|
|
$Script:work.Background="Darkgreen"
|
|
}
|
|
}
|
|
|
|
function confirm {
|
|
param (
|
|
[String]$text
|
|
)
|
|
Write-Admin-Log "Confirm funkction triggered"
|
|
if ($null -ne $text) {
|
|
$Script:Confirmtext.text = $text
|
|
$confirm.ShowDialog() | Out-Null
|
|
if ($Script:GO) {
|
|
return $true
|
|
}
|
|
}
|
|
}
|
|
|
|
$confirmok.Add_Click({
|
|
Write-Admin-Log "Confirm success"
|
|
$Script:GO = $true
|
|
$confirm.Hide()
|
|
})
|
|
|
|
$confirm.Add_MouseLeftButtonDown({
|
|
$confirm.DragMove()
|
|
})
|
|
|
|
$confirmstop.Add_Click({
|
|
Write-Admin-Log "Confirm denial"
|
|
$Script:GO = $false
|
|
$confirm.Hide()
|
|
})
|
|
|
|
|
|
#### Startet die Anwendung ####
|
|
|
|
### Initialisieren ###
|
|
|
|
$Script:btn_info.Add_Click({
|
|
$Script:info.ShowDialog()
|
|
})
|
|
|
|
### Settings ###
|
|
|
|
$settings.Add_Click({
|
|
if ($Script:array[0]) {
|
|
$Script:btn_settings.Visibility = "Hidden"
|
|
$Script:btn_standby.Visibility = "Hidden"
|
|
$Script:btn_shutdown.Visibility = "Hidden"
|
|
$Script:btn_close.Visibility = "Hidden"
|
|
$Script:array[0]=$false
|
|
}else {
|
|
$Script:btn_settings.Visibility = "Visible"
|
|
$Script:btn_standby.Visibility = "Visible"
|
|
$Script:btn_shutdown.Visibility = "Visible"
|
|
$Script:btn_close.Visibility = "Visible"
|
|
$Script:array[0]=$true
|
|
}
|
|
})
|
|
|
|
$Script:btn_settings.Add_Click({
|
|
$return = Select-FolderDialog
|
|
if($return){
|
|
$Script:racpath = $return
|
|
$NewLine = "racadm_path, $racpath" -f
|
|
$NewLine | add-content -path "C:\FSAP\config.csv"
|
|
}
|
|
$Script:idracuser = getValues "IDRAC Configurator" "Enter idrac user"
|
|
$Script:idracpass = getValues "IDRAC Configurator" "Enter idrac password"
|
|
|
|
$Script:remoteuser = getValues "IDRAC Configurator" "Enter remote user"
|
|
$Script:remotepass = getValues "IDRAC Configurator" "Enter remote password"
|
|
|
|
$NewLine = "idracuser, $idracuser" -f
|
|
$NewLine | add-content -path "C:\FSAP\config.csv"
|
|
$secidracpass = "$idracpass" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString
|
|
$NewLine = "idracpass, $secidracpass" -f
|
|
$NewLine | add-content -path "C:\FSAP\config.csv"
|
|
|
|
|
|
$NewLine = "remoteuser, $remoteuser" -f
|
|
$NewLine | add-content -path "C:\FSAP\config.csv"
|
|
$secremotepass = "$remotepass" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString
|
|
$NewLine = "remotepass, $secremotepass" -f
|
|
$NewLine | add-content -path "C:\FSAP\config.csv"
|
|
write-host $Script:remoteuser
|
|
Write-host $Script:remotepass
|
|
})
|
|
$Script:btn_standby.Add_Click({
|
|
if (confirm "Wanna SUSPEND the System?") {
|
|
$PowerState = [System.Windows.Forms.PowerState]::Suspend
|
|
$Force = $false
|
|
$DisableWake = $false
|
|
[System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake)
|
|
}
|
|
})
|
|
$Script:btn_shutdown.Add_Click({
|
|
if (confirm "Wanna SHUTDOWN the System?") {
|
|
$PowerState = [System.Windows.Forms.PowerState]::Shutdown
|
|
$Force = $false
|
|
$DisableWake = $false
|
|
[System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake)
|
|
}
|
|
})
|
|
$Script:btn_close.Add_Click({
|
|
$main.Hide()
|
|
})
|
|
|
|
$info.Add_MouseLeftButtonDown({
|
|
$info.DragMove()
|
|
})
|
|
|
|
$infook.Add_Click({
|
|
$Script:info.Hide()
|
|
})
|
|
|
|
### Menu ###
|
|
|
|
function clearGUI {
|
|
|
|
#R710
|
|
|
|
$Script:btn_r710_stop.Visibility = "Hidden"
|
|
$Script:btn_r710_start.Visibility = "Hidden"
|
|
$Script:btn_r710_info.Visibility = "Hidden"
|
|
$Script:btn_r710_m1.Visibility = "Hidden"
|
|
$Script:btn_r710_m2.Visibility = "Hidden"
|
|
|
|
$Script:tb_r710_power.Visibility = "Hidden"
|
|
$Script:tb_r710_mac.Visibility = "Hidden"
|
|
$Script:tb_r710_ip.Visibility = "Hidden"
|
|
$Script:tb_r710_bios.Visibility = "Hidden"
|
|
$Script:tb_r710_name.Visibility = "Hidden"
|
|
|
|
$Script:l1_r710.Visibility = "Hidden"
|
|
$Script:l2_r710.Visibility = "Hidden"
|
|
$Script:l3_r710.Visibility = "Hidden"
|
|
$Script:l4_r710.Visibility = "Hidden"
|
|
$Script:l5_r710.Visibility = "Hidden"
|
|
}
|
|
|
|
function SwitchGUI {
|
|
param (
|
|
$menu
|
|
)
|
|
if ($menu -match "m1") {
|
|
clearGUI
|
|
}elseif ($menu -match "m2") {
|
|
clearGUI
|
|
$Script:btn_r710_stop.Visibility = "Visible"
|
|
$Script:btn_r710_start.Visibility = "Visible"
|
|
$Script:btn_r710_info.Visibility = "Visible"
|
|
$Script:btn_r710_m1.Visibility = "Visible"
|
|
$Script:btn_r710_m2.Visibility = "Visible"
|
|
|
|
$Script:tb_r710_power.Visibility = "Visible"
|
|
$Script:tb_r710_mac.Visibility = "Visible"
|
|
$Script:tb_r710_ip.Visibility = "Visible"
|
|
$Script:tb_r710_bios.Visibility = "Visible"
|
|
$Script:tb_r710_name.Visibility = "Visible"
|
|
|
|
$Script:l1_r710.Visibility = "Visible"
|
|
$Script:l2_r710.Visibility = "Visible"
|
|
$Script:l3_r710.Visibility = "Visible"
|
|
$Script:l4_r710.Visibility = "Visible"
|
|
$Script:l5_r710.Visibility = "Visible"
|
|
}elseif ($menu -match "m3") {
|
|
clearGUI
|
|
}elseif ($menu -match "m4") {
|
|
clearGUI
|
|
}elseif ($menu -match "m5") {
|
|
clearGUI
|
|
}elseif ($menu -match "m6") {
|
|
clearGUI
|
|
}
|
|
}
|
|
|
|
$Script:menu1.Add_Click({
|
|
switchGUI -menu "m1"
|
|
$Script:l1.Content = "Dashboard"
|
|
})
|
|
$Script:menu2.Add_Click({
|
|
switchGUI -menu "m2"
|
|
$Script:l1.Content = "R710 Control"
|
|
})
|
|
$Script:menu3.Add_Click({
|
|
switchGUI -menu "m3"
|
|
$Script:l1.Content = "Gaming Control"
|
|
})
|
|
$Script:menu4.Add_Click({
|
|
switchGUI -menu "m4"
|
|
})
|
|
$Script:menu5.Add_Click({
|
|
switchGUI -menu "m5"
|
|
})
|
|
$Script:menu6.Add_Click({
|
|
switchGUI -menu "m6"
|
|
})
|
|
|
|
### R710 ###
|
|
|
|
function get_r710_stats {
|
|
working $true
|
|
cd $Script:racpath
|
|
$collection = $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass getsysinfo)
|
|
foreach ($item in $collection) {
|
|
if ($null -ne $item) {
|
|
$log.Text += "$item`n"
|
|
if($item -match "DNS RAC Name"){
|
|
$index = ($item.IndexOf("="))
|
|
$Script:tb_r710_name.Text = $item.Substring($index+1)
|
|
}
|
|
if($item -match "Firmware Version"){
|
|
$index = ($item.IndexOf("="))
|
|
$Script:tb_r710_bios.Text = $item.Substring($index+1)
|
|
}
|
|
if($item -match "Power Status"){
|
|
$index = ($item.IndexOf("="))
|
|
$Script:tb_r710_power.Text = $item.Substring($index+1)
|
|
}
|
|
if($item -match "MAC Address"){
|
|
$index = ($item.IndexOf("="))
|
|
$Script:tb_r710_mac.Text = $item.Substring($index+1)
|
|
}
|
|
if($item -match "Power Status"){
|
|
$index = ($item.IndexOf("="))
|
|
$Script:tb_r710_power.Text = $item.Substring($index+1)
|
|
}
|
|
}
|
|
}
|
|
cd C:\FSAP
|
|
working $false
|
|
}
|
|
|
|
$btn_r710_start.Add_Click({
|
|
Write-Admin-Log "BTN r710 start pressed"
|
|
if (confirm "Server R710 wird durch erneute betätigung gestartet") {
|
|
cd $racpath
|
|
$r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass serveraction powerup)
|
|
}
|
|
})
|
|
|
|
$btn_r710_stop.Add_Click({
|
|
Write-Admin-Log "BTN r710 stop pressed"
|
|
if (confirm "Server R710 wird durch erneute betätigung gestopt`n`nIST DER SERVER HERUNTERGEFAHREN (/STOP IN DIE MINECRAFT CONSOLE)?") {
|
|
$command = './stop_proxmox.sh'
|
|
#Execute SSH command
|
|
echo y | &($plinkpath + "\plink.exe") -pw "$Script:remotepass" "$Script:remoteuser@spaeth-bayern.de" $command
|
|
#cd $Script:racpath
|
|
#$r710_log.Text += $(.\racadm.exe -r spaeth-bayern.de:5005 -u $Script:idracuser -p $Script:idracpass serveraction powerdown)
|
|
}
|
|
})
|
|
|
|
$btn_r710_info.Add_Click({
|
|
Write-Admin-Log "BTN r710 inspect pressed"
|
|
if (confirm "Server R710 wird nach grundlegenden Infromationen abgefragt.`n`nDie Abfrage kann bis zu 2 min. dauern.") {
|
|
get_r710_stats
|
|
}
|
|
})
|
|
|
|
### Öffnet erstes Fenster ###
|
|
Write-Admin-Log "##### OPEN MAIN WINDOW #####"
|
|
clearGUI
|
|
switchGUI "m1"
|
|
Write-Host $remotepass
|
|
$main.ShowDialog() | Out-Null |