Ekrdp.psm1

function Ekrdp
 {
   param(
   
   [Parameter(Mandatory=$true)]
   [string]$path)
   $csv = Import-Csv $path

foreach($cs in $csv){

$server = $cs.Server
$ip = $cs.'Server IP'
$user = $cs.Username



$title    = 'PASSWORD'
$question = "Do yo want to connect $($server):$($ip)"
$choices  = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)

if ($decision -eq 0) {

#Add-Type -AssemblyName System.Windows.Forms
#Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Enter Password'
$form.Size = New-Object System.Drawing.Size(510,350)
$form.StartPosition = 'CenterScreen'

$Image = [system.drawing.image]::FromFile("D:\Ek-rdp\black.jpg")

$form.BackgroundImage = $Image

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(150,100)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(250,100)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$label = New-Object System.Windows.Forms.Label
$label.ForeColor = "White"
$label.Location = New-Object System.Drawing.Point(150,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.BackColor = [System.Drawing.Color]::FromName("Transparent")
$delaylabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10, [System.Drawing.FontStyle]::Bold)
$label.Text = 'Please enter the Password below:'
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(100,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$textBox.PasswordChar = "*"
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text |  ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString |  Set-Content -Path D:\Ek-rdp\p.txt
    $secret = Get-Content  -Path D:\Ek-rdp\p.txt | ConvertTo-SecureString

    #OLD .NET TECHNIQUE
    #[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((($secretStuff))))

    #NEW .NET TECHNIQUE
$passwordplain =     [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi([System.Security.SecureStringMarshal]::SecureStringToCoTaskMemAnsi((ConvertTo-SecureString -String $($secret | ConvertFrom-SecureString) -Force)))


cmdkey /generic:TERMSRV/$ip /user:$User /pass:$passwordplain
mstsc /v:$ip


#Add-Type -AssemblyName System.Windows.Forms
#Add-Type -AssemblyName System.Drawing

$delay = 10
$delayform = New-Object System.Windows.Forms.Form
$delayform.Text = 'Please Wait'
$delayform.Size = New-Object System.Drawing.Size(518,220)
$delayform.StartPosition = 'CenterScreen'

$delayImage = [system.drawing.image]::FromFile("D:\Ek-rdp\white.jpg")

$delayform.BackgroundImage = $delayImage

$delaylabel = New-Object System.Windows.Forms.Label
$delaylabel.Location = New-Object System.Drawing.Point(10,20)
$delaylabel.Size = New-Object System.Drawing.Size(280,20)
$delaylabel.BackColor = [System.Drawing.Color]::FromName("Transparent")
$delaylabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 12, [System.Drawing.FontStyle]::Bold)
$delayform.Controls.Add($delaylabel)

while ($delay -ge 0)
{
  $delayform.Show()
  $delaylabel.Text = "Please wait for $($delay) Seconds"
  <#if ($delay -lt 5)
  {
     $delaylabel.ForeColor = "Red"
     $fontsize = 20-$delay
     $warningfont = New-Object System.Drawing.Font("Times New Roman",$fontsize,[System.Drawing.FontStyle]([System.Drawing.FontStyle]::Bold -bor [System.Drawing.FontStyle]::Underline))
     $delaylabel.Font = $warningfont
  } #>

 start-sleep 1
 $delay -= 1
}
$delayform.Close()



cmdkey /delete:TERMSRV/$ip

cmdkey /list:TERMSRV/$ip 


}


   
}


}
 }