Я уже писал про нативное управление Mac OS X через Configuration Manager без дополнительных плагинов. И появилась идея добавить в консоль пункты для быстрого подключения через SSH и VNC к устройству. На самом деле вы можете использовать это и для Linux, т.к. схема абсолютно такая же, за одним исключением, что необходимо будет дополнительно скопировать RemoteSshVnc.xml в каталоги с консолью SCCM 2012 R2 ed9dee86-eadd-4ac8-82a1-7234a4646e62 и 3fd01cd1-9e01-461e-92cd-94866b8d1f39
Давайте обо всем по порядку.
Скачать расширение Mac OS X Tools из Microsoft Gallery Technet.
В архиве 5 файлов:
Install-SshVncV2.ps1 — скрипт для установки расширения, просто копирует необходимые файлы, запускать с повышенными правами;
putty.exe — клиент SSH версии 0.64.0.0;
RemoteSshVnc.xml — XML, который добавляет необходимые пункты в консоль SCCM 2012 R2;
sshvnc.ps1 — powershell скрипт с формой для подключения и вызова клиентов putty и tightvnc;
tvnviewer.exe — клиент tightvnc версии 2.7.10.
Предварительные требования для Mac OS X
В системе Mac OS X в разделе «Системные настройки — Общий доступ» должны быть включены две настройки: Удаленный вход и Удаленное управление.
Удаленный вход включает доступ по SSH.
Удаленное управление включает доступ к рабочему столу.
Установка
1. Из архива запускаем Install-SshVncV2.ps1 и он копирует необходимые файлы в каталоги с консолью SCCM 2012 R2 %Program Files%\Microsoft Configuration Manager\AdminConsole\XmlStorage\Extensions\Actions\ в 331037bb-97e6-4c9b-9c3c-d11e85b51fef и dbb02e2a-3aa6-4e27-82e9-840924d73527
331037bb-97e6-4c9b-9c3c-d11e85b51fef это GUID раздела Devices в консоли SCCM 2012 R2 для устройств со свойством Client Type — Mobile, а dbb02e2a-3aa6-4e27-82e9-840924d73527 GUID, если вы развернули коллекцию с устройствами.
На выходе должно получиться следующее:
2. Если путь установки вашей консоли SCCM 2012 R2 отличается от C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\, тогда необходимо в файле RemoteSshVnc.xml исправить тэги <Parameters></Parameters>.
3. Запускаем консоль SCCM 2012 R2 и видим новый пункт в меню Mac OS X Tools
Подключение к Mac OS X через SSH
В меню выбираем Connect via SSH, в появившемся окне видим IP адрес устройства и нажимаем Connect
Вводим пароль администратора системы. Профит. Дальше уже творим, что хотим. )
Подключение к удаленному столу Mac OS X через TightVNC
В меню выбираем Connect via VNC и IP адрес устройства
Вводим пароль для доступа к рабочему столу
Подключаемся.
Install-SshVncV2.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
######################################################################## # Install Mac OS X Remote Control Extension - VNC (TightVNC) and SSH (putty) # Version: 1 # Author: Anton Masyan - anton@masyan.ru # Date: 11/10/2015 # # masyan.ru ######################################################################## $ExtensionsFolder = $env:SMS_ADMIN_UI_PATH.Replace("bin\i386","XmlStorage\Extensions\Actions") $ConsoleDevice = $ExtensionsFolder + '\331037bb-97e6-4c9b-9c3c-d11e85b51fef' $ConsileDeviceColl = $ExtensionsFolder + '\dbb02e2a-3aa6-4e27-82e9-840924d73527' if(!(Test-Path -Path $ConsoleDevice )){ # SCCM Console - Devices New-Item -ItemType directory -Path $ConsoleDevice Copy-Item sshvnc.ps1 $ConsoleDevice Copy-Item putty.exe $ConsoleDevice Copy-Item tvnviewer.exe $ConsoleDevice Copy-Item RemoteSshVnc.xml $ConsoleDevice #SCCM Console - Device Collections New-Item -ItemType directory -Path $ConsileDeviceColl Copy-Item RemoteSshVnc.xml $ConsileDeviceColl } |
sshvnc.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
######################################################################## # Mac OS X Remote Control - VNC (TightVNC) and SSH (putty) # Version: 1 # Author: Anton Masyan - anton@masyan.ru # Date: 11/10/2015 # # masyan.ru ######################################################################## param( [parameter(Mandatory=$true)] $ResourceID, [parameter(Mandatory=$true)] $SiteServer, [parameter(Mandatory=$true)] $ConnectionType ) function Load-Form { $Form.Controls.Add($ComboBox) $Form.Controls.Add($Button) $Form.Add_Shown({$Form.Activate()}) $Form.Add_Shown({Get-IPAddresses}) [void]$Form.ShowDialog() } function Get-SCCMSiteCode { $SCCMSiteCode = Get-WmiObject -Namespace "root\SMS" -Class SMS_ProviderLocation -ComputerName $SiteServer | Select-Object -ExpandProperty SiteCode return $SCCMSiteCode } function Get-IPAddresses { $IPAddresses = Get-WmiObject -Namespace "root\SMS\site_$(Get-SCCMSiteCode)" -Class SMS_R_System -ComputerName $SiteServer -Filter "ResourceID like '$($ResourceID)'" | Select-Object -ExpandProperty IPAddresses $IPAddresses | ForEach-Object { $ComboBox.Items.Add("$($_)") Write-Output $_ } } function Start-RemoteConnection { $ExtensionsFolder = $env:SMS_ADMIN_UI_PATH.Replace("bin\i386","XmlStorage\Extensions\Actions\") + '\331037bb-97e6-4c9b-9c3c-d11e85b51fef' if ($ConnectionType -contains 'ssh') { & "$ExtensionsFolder\putty.exe" -ssh $ComboBox.SelectedItem $Form.Close() } else { & "$ExtensionsFolder\tvnviewer.exe" $ComboBox.SelectedItem $Form.Close() } } ######################################################################## # # ######################################################################## [void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") # Form $Form = New-Object System.Windows.Forms.Form $Form.Size = New-Object System.Drawing.Size(390,100) $Form.MinimumSize = New-Object System.Drawing.Size(390,100) $Form.MaximumSize = New-Object System.Drawing.Size(390,100) $Form.SizeGripStyle = "Hide" $Form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($PSHome + "\powershell.exe") $Form.Text = "Connect via $ConnectionType" $Form.ControlBox = $true $Form.TopMost = $true # Box $ComboBox = New-Object System.Windows.Forms.ComboBox $ComboBox.Location = New-Object System.Drawing.Size(10,20) $ComboBox.Size = New-Object System.Drawing.Size(220,30) $ComboBox.DropDownStyle = "DropDownList" $ComboBox.Add_SelectedValueChanged({$Button.Enabled = $true}) # Button $Button = New-Object System.Windows.Forms.Button $Button.Location = New-Object System.Drawing.Size(240,18) $Button.Size = New-Object System.Drawing.Size(120,25) $Button.Text = "Connect" $Button.Enabled = $false $Button.Add_Click({Start-RemoteConnection}) # Load Form Load-Form |
RemoteSshVnc.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<ActionDescription Class="Group" DisplayName="Mac OS X Tools" MnemonicDisplayName="Mac OS X Tools" Description="Mac OS X Tools" SqmDataPoint="53"> <ShowOn> <string>ContextMenu</string> </ShowOn> <ActionGroups> <ActionDescription Class="Executable" DisplayName="Connect via SSH" MnemonicDisplayName="Connect via SSH" Description="Connect via SSH"> <ShowOn> <string>ContextMenu</string> </ShowOn> <Executable> <FilePath>"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"</FilePath> <Parameters>-windowstyle hidden -executionpolicy bypass -file "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\XmlStorage\Extensions\Actions\331037bb-97e6-4c9b-9c3c-d11e85b51fef\sshvnc.ps1" -SiteServer "##SUB:__Server##" -ResourceID "##SUB:ResourceID##" -ConnectionType "SSH"</Parameters> </Executable> </ActionDescription> <ActionDescription Class="Executable" DisplayName="Connect via VNC" MnemonicDisplayName="Connect via VNC" Description="Connect via VNC"> <ShowOn> <string>ContextMenu</string> </ShowOn> <Executable> <FilePath>"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"</FilePath> <Parameters>-windowstyle hidden -executionpolicy bypass -file "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\XmlStorage\Extensions\Actions\331037bb-97e6-4c9b-9c3c-d11e85b51fef\sshvnc.ps1" -SiteServer "##SUB:__Server##" -ResourceID "##SUB:ResourceID##" -ConnectionType "VNC"</Parameters> </Executable> </ActionDescription> </ActionGroups> </ActionDescription> |