рдкреЙрд╡рд░рд╢реЗрд▓ рдФрд░ рдЬреАрдпреВрдЖрдИред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдХрдВрдкрдиреА рдиреЗ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдлрд╛рд░реНрдо рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреАрд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреАрд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдорд░реНрдерди рд╡рд┐рднрд╛рдЧ рдиреЗ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдХреЛ рдЦреЗрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИ XaocCPS рдиреЗ рдореБрдЭреЗ WPF рдХреА рдУрд░ рдЦреЗрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреАред рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдХрд╛рдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдерд╛:
1. рдмрд╛рд╣рд░реА рдШрдЯрдХ PowerShellPack рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
2. рдлрд╛рд░реНрдо рд╕рд░реНрд╡рд░ (x64) рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рдШрдЯрдХ рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
3. рдХреНтАНрд▓реЙрдЬ 1 рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред

Xaegr рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ WPF рдкрд░рдд рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╣рд╛рдВ рднреА рд╣реЛрддреА рд╣реИ, рд╡рд╣рд╛рдВ рдЪрд▓рддреА рд╣реИ .рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ - рдПрдХреНрд╕рдкреА, рд╡рд┐рди 7 рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ x64 рдлрд╛рд░реНрдо рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ - рдХрдЯреМрддреА рдХреЗ рддрд╣рддред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ UPD рд╕реНрдХрд╛рдИрдбреНрд░рд╛рдЗрд╡ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ

рдФрд░ рдЗрд╕рд▓рд┐рдП - рд╕рдорд░реНрдерди рд╡рд┐рднрд╛рдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЯреАрдХреЗ "рдЯрд░реНрдорд┐рдирд▓ рдлрд╛рд░реНрдо рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣рд╛ рдерд╛"ред
рдореИрдВрдиреЗ TK рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ:
1. рд╕рд░реНрд╡рд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред
2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд╕рдВрджред
3. рд╕рдВрджреЗрд╢ рдкрд╛рда рджрд░реНрдЬ рдХрд░реЗрдВред
4. рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ - рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ - рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдореИрдВрдиреЗ рдХрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред
5. рдЕрдирдЬрд╛рдиреЗ рдкреНрд░реЗрд╖рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрд░рдХреНрд╖рдгред

рдкрд╣рд▓реЗ, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ Win7 рдФрд░ 2008 рдореЗрдВ * рдПрдХ рд╕рдВрджреЗрд╢ рдХрдорд╛рдВрдб рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рд╕рдВрджреЗрд╢ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдПрдХ рд╕рд░рд▓ regedit рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"AllowRemoteRPC"=dword:00000001


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрджрд┐ рд╕реВрдЪреА рд╕реЗ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдФрд░ рдХрд╕рдо рдЦрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рддрдХ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЕрдзрд┐рдХрддрдо рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИред
~ 15kb

 #  ,        Add-Type -assembly System.Windows.Forms #  ,    ,  ,    -      . $Server = @("rdp1-1, rdp1-2, rdp1-3, rdp1-4", "rdp2-1, rdp2-2, rdp2-3, rdp2-4") $User = @("*", "1c-admin1, 1c-admin2") $Message = " " #  ,    ,            ,    . #        ,         #  $Sign = @(" ,  1", " ,  ") # ,       . #   .  , ,    (    ),       ,     ,                ( : "1, 2, 3"    ),   msg               . Function SendMessage { param ($Server, $User, $Message, $Sign) # Write-Host $Server, $User, $Message, $Sign If ($TestRunCheckBox.Checked -eq 1 ) { Write-Host $TestRunCheckBox.Checked; $Server="localhost"; $User = "Console" } ForEach ($Item in $Server) { ForEach ($UserX in $User) { $UserTrim = $UserX.Trim() $ServerTrim = $Item.Trim() $MsgTrim = $Message.Trim() $SignTrim = $SignX.Trim() #  ,    . # Write-Host "User: $UserTrim; Server: $ServerTrim; Message: $MsgTrim; Signature: $SignTrim" c:\windows\system32\msg.exe $UserTrim /Server:$ServerTrim $MsgTrim $SignTrim } } Confirm } #     Function Confirm { $ConfirmWin = New-Object System.Windows.Forms.Form $ConfirmWin.StartPosition = "CenterScreen" $ConfirmWin.Text = " " $ConfirmWin.Width = 200 $ConfirmWin.Height = 120 $ConfirmWin.ControlBox = 0 $ConfirmWinOKButton = New-Object System.Windows.Forms.Button $ConfirmWinOKButton.add_click({ $MainSendWindow.Close(); $ConfirmWin.Close() }) $ConfirmWinOKButton.Text = "" $ConfirmWinOKButton.AutoSize = 1 $ConfirmWinOKButton.Location = New-Object System.Drawing.Point(50,50) $ConfirmLabel = New-Object System.Windows.Forms.Label $ConfirmLabel.Text = "  " $ConfirmLabel.AutoSize = 1 $ConfirmLabel.Location = New-Object System.Drawing.Point(10,10) $ConfirmWin.Controls.Add($ConfirmLabel) $ConfirmWin.Controls.Add($ConfirmWinOKButton) $ConfirmWin.ShowDialog() | Out-Null } #  ,          $MainSendWindow = New-Object System.Windows.Forms.Form $ToolTip = New-Object System.Windows.Forms.ToolTip $ToolTip.BackColor = [System.Drawing.Color]::LightGoldenrodYellow $ToolTip.IsBalloon = $true # $ToolTip.InitialDelay = 500 # $ToolTip.ReshowDelay = 500 #    #    $SendButton = New-Object System.Windows.Forms.Button $CloseButton = New-Object System.Windows.Forms.Button $TestRunCheckBox = New-Object System.Windows.Forms.CheckBox #     $ServerTextBox = New-Object System.Windows.Forms.ComboBox $UserTextBox = New-Object System.Windows.Forms.ComboBox $MessageTextBox = New-Object System.Windows.Forms.TextBox $SignTextBox = New-Object System.Windows.Forms.ComboBox #  $ServerTextBoxLabel = New-Object System.Windows.Forms.Label $UserTextBoxLabel = New-Object System.Windows.Forms.Label $MessageTextBoxLabel = New-Object System.Windows.Forms.Label $SignTextBoxLabel = New-Object System.Windows.Forms.Label #   (      #           ;)) #   $MainSendWindow.StartPosition = "CenterScreen" $MainSendWindow.Text = "  " $MainSendWindow.Width = 470 $MainSendWindow.Height = 220 #      #$Win.ControlBox = 0 #   ,   . # $Win.ShowIcon = 0 # $Win.ShowInTaskbar = 0 # $Win.HelpButton = 1 #       -     " " # $Win.Autosize = 1 # $Win.AutoSizeMode = "GrowAndShrink" #    . # $Win.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D # $Win.Font = New-Object System.Drawing.Font("Verdana",32) #     $ServerTextBoxLabel.Location = New-Object System.Drawing.Point(10,12) $ServerTextBoxLabel.Text = " " $ServerTextBoxLabel.Autosize = 1 $UserTextBoxLabel.Location = New-Object System.Drawing.Point(10,42) $UserTextBoxLabel.Text = " " $UserTextBoxLabel.Autosize = 1 $MessageTextBoxLabel.Location = New-Object System.Drawing.Point(10,73) $MessageTextBoxLabel.Text = "" $MessageTextBoxLabel.Autosize = 1 #     ,    ,       ,   . $ToolTip.SetToolTip($MessageTextBoxLabel, " ,         ") $SignTextBoxLabel.Location = New-Object System.Drawing.Point(10,103) $SignTextBoxLabel.Text = "" $SignTextBoxLabel.Autosize = 1 $ToolTip.SetToolTip($SignTextBoxLabel, " ,         ") #   #  $ServerTextBox.Location = New-Object System.Drawing.Point(140,10) #   $ServerTextBox.DataSource = $Server #  $ServerTextBox.Width = 300 #   -     ,     . $ServerTextBox.add_TextChanged({ $Server = $ServerTextBox.Text }) #     Tab $ServerTextBox.TabIndex = 1 $ToolTip.SetToolTip($ServerTextBox, "  ") $UserTextBox.Location = New-Object System.Drawing.Point(140,40) $UserTextBox.DataSource = $User #     $UserTextBox.Text = $User[1] $UserTextBox.add_TextChanged({ $User = $UserTextBox.Text }) $UserTextBox.Width = 300 $UserTextBox.TabIndex = 2 $ToolTip.SetToolTip($UserTextBox, "  ? (*  ** ,  )") #   $MessageTextBox.Location = New-Object System.Drawing.Point(140,70) $MessageTextBox.Text = $Message #      -    ,     #   $MessageTextBox.add_click({ $MessageTextBox.SelectAll() }) $MessageTextBox.add_TextChanged( { $Message = $MessageTextBox.Text }) $MessageTextBox.Width = 300 $MessageTextBox.TabIndex = 3 $ToolTip.SetToolTip($MessageTextBox, "     ?") #   -     $SignTextBox.Location = New-Object System.Drawing.Point(140,103) #     $SignTextBox.DataSource = $Sign #   ,   ?:) $SignTextBox.Text = $Sign[1] $SignTextBox.add_TextChanged({ $SignX = $SignTextBox.Text }) $SignTextBox.Width = 300 $SignTextBox.TabIndex = 4 $ToolTip.SetToolTip($SignTextBox, "    ") #  . $SendButton.Location = New-Object System.Drawing.Point(10,150) $SendButton.Text = " " #        ,     $SendButton.add_click({ $User = $UserTextBox.Text.Split(","); $Server = $ServerTextBox.Text.Split(","); $SignX = $SignTextBox.Text; SendMessage $Server $User $Message $SignX} ) $SendButton.Autosize = 1 $SendButton.TabIndex = 5 $ToolTip.SetToolTip($SendButton, " ") #    $TestRunCheckBox.Location = New-Object System.Drawing.Point(200,150) $TestRunCheckBox.Text = "" $TestRunCheckBox.Checked = 1 $TestRunCheckBox.AutoSize = 1 $TestRunCheckBox.TabIndex = 6 $ToolTip.SetToolTip($TestRunCheckBox, " ,     ") #  ,      $CloseButton.Location = New-Object System.Drawing.Point(315,150) $CloseButton.Text = "  " $CloseButton.add_click({ $MainSendWindow.Close() }) $CloseButton.Autosize = 1 $CloseButton.TabIndex = 7 $ToolTip.SetToolTip($CloseButton, "  ") #         $MainSendWindow.Controls.Add($SendButton) $MainSendWindow.Controls.Add($TestRunCheckBox) $MainSendWindow.Controls.Add($CloseButton) $MainSendWindow.Controls.Add($ServerTextBox) $MainSendWindow.Controls.Add($UserTextBox) $MainSendWindow.Controls.Add($MessageTextBox) $MainSendWindow.Controls.Add($SignTextBox) $MainSendWindow.Controls.Add($ServerTextBoxLabel) $MainSendWindow.Controls.Add($UserTextBoxLabel) $MainSendWindow.Controls.Add($MessageTextBoxLabel) $MainSendWindow.Controls.Add($SignTextBoxLabel) $MainSendWindow.ShowDialog() | Out-Null 


рдкрд░рд┐рдгрд╛рдо рдРрд╕реА рд╣реА рдПрдХ рдкреВрд░реНрд╡рдзрд╛рд░рдгрд╛ рд╣реИ
рдЫрд╡рд┐

рдкрд╛рдардХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣реАрдВ рд░рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд░реНрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛

рдЧрд┐рдЯрд╣рдм рд▓рд┐рдкрд┐ рд╕реНрд░реЛрдд

Source: https://habr.com/ru/post/In138008/


All Articles