Last active
April 7, 2021 23:49
-
-
Save numbnet/983df0198a405476d92d4983b14f91a1 to your computer and use it in GitHub Desktop.
OpenSSH for PC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
##************************************************* | |
New-Item -Path $env:SYSTEMDRIVE\ -Name 'PS\OpenSSH' -ItemType Directory | |
##==================================================== | |
### ARH OS and Download OpenSSH x64 or x86 | |
echo "******** Start Download OpenSSH v8.1.0.0p1-Beta .......... *********"; | |
echo " " | |
if ((Get-WmiObject win32_operatingsystem | select osarchitecture).osarchitecture -like "64*") | |
{ | |
Write '... for Windows x64'; | |
Invoke-WebRequest -Uri 'https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.1.0.0p1-Beta/OpenSSH-Win64.zip' -OutFile $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win64.zip | |
pause | |
##===================================== | |
## Unzip the files | |
Expand-Archive -Path $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win64.Zip -DestinationPath $env:ProgramFiles\OpenSSH | |
pause | |
##================= ≠≠≠ ================= | |
echo '## Copy \OpenSSH\OpenSSH-Win64\ \OpenSSH' | |
copy $env:ProgramFiles\OpenSSH\OpenSSH-Win64\* $env:ProgramFiles\OpenSSH | |
} else { | |
Write "... for Windows x86" | |
Invoke-WebRequest -Uri 'https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.1.0.0p1-Beta/OpenSSH-Win32.zip' -OutFile $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win32.zip | |
pause | |
echo '## Unzip the files' | |
Expand-Archive -Path $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win32.Zip -DestinationPath $env:ProgramFiles\OpenSSH | |
echo '## Copy \OpenSSH\OpenSSH-Win64\ \OpenSSH' | |
copy $env:ProgramFiles\OpenSSH\OpenSSH-Win32\* $env:ProgramFiles\OpenSSH | |
} | |
##================= ≠≠≠ ================= | |
echo '## Install service' | |
. $env:ProgramFiles\OpenSSH\install-sshd.ps1 | |
##================= ≠≠≠ ================= | |
echo '## Set firewall permissions' | |
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22; | |
##================= ≠≠≠ ================= | |
echo '## Set service startup END' | |
Set-Service sshd -StartupType Automatic; | |
Start-Service sshd; | |
##================= ≠≠≠ ================= | |
echo '## Set Authentication to public key' | |
((Get-Content -path $env:ProgramData\ssh\sshd_config -Raw) ` -replace '#PubkeyAuthentication yes','PubkeyAuthentication yes' ` -replace '#PasswordAuthentication yes','PasswordAuthentication yes' ` -replace 'Match Group administrators','#Match Group administrators' ` -replace 'AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys','#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys') | Set-Content -Path $env:ProgramData\ssh\sshd_config; | |
##================= ≠≠≠ ================= | |
echo '## Restart after changes' | |
Restart-Service sshd; | |
##================= ≠≠≠ ================= | |
echo '## force file creation' | |
New-item -Path "$env:USERPROFILE" -Name .ssh -ItemType Directory -force; | |
##================= ≠≠≠ ================= | |
echo '## Gen SSH-KEY:' | |
#ssh-keygen -t ed25519 -C "$env:USERNAME" -f $env:USERPROFILE\.ssh\$env:COMPUTERNAME.$(Get-Random).ed25519.key | Out-File $env:USERPROFILE\.ssh\file.log -Encoding ascii; | |
#ssh-keygen -t ed25519 -C "$env:USERNAME" -f "$env:USERPROFILE\.ssh\$env:COMPUTERNAME.$env:USERNAME.ed25519.key" | Out-File $env:USERPROFILE\.ssh\file.log -Encoding ascii; | |
##================= ≠≠≠ ================= | |
echo '## Copy SSH-KEY V1:' | |
echo 'ssh-ed25519 AAAAC*************************************************************************************YyHsv zusyurec@gmail.com' |Out-File $env:USERPROFILE\.ssh\authorized_keys -Encoding ascii; cat $env:USERPROFILE\.ssh\authorized_keys | |
## Copy SSH-KEY V2: | |
#cat $env:USERPROFILE\.ssh\*$env:COMPUTERNAME.$env:USERNAME.ed25519.key.pub | Out-File $env:USERPROFILE\.ssh\authorized_keys -Encoding ascii; | |
##================= ≠≠≠ ================= | |
## Cleaning Dir | |
echo 'Clean dir' | |
if ((Get-WmiObject win32_operatingsystem | select osarchitecture).osarchitecture -like "64*") | |
{ | |
Write 'Remove for Windows x64'; | |
Remove-Item -Path "$env:ProgramFiles\OpenSSH\OpenSSH-Win64" -Recurse; | |
Remove-Item -Path $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win64.Zip -Recurse; | |
} else { | |
Write 'Remove for Windows x86'; | |
Remove-Item -Path $env:ProgramFiles\OpenSSH\OpenSSH-Win32 -Recurse; | |
Remove-Item -Path $env:SYSTEMDRIVE\PS\OpenSSH\OpenSSH-Win32.zip -Recurse; | |
} | |
##================= ≠≠≠ ================= | |
echo 'OpenSSH for windows is installed' | |
exit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Dism /Get-WimInfo /WimFile:F:\sources\install.esd (где F:, буква виртуального диска с файлами Windows 10, папкой sources и файлом install.esd). | |
Нам нужна Windows 10 Профессиональная (индекс образа 1). | |
Следующей командой я разворачиваю файл install.esd на виртуальный диск VHD (раздел G:) | |
Dism /apply-image /imagefile:C:\offline\sources\install.wim /index:1 /ApplyDir:V:\ | |
где H:\sources\ - адрес расположения файла install.esd, | |
index:1 - индекс Windows 10 Профессиональная, | |
G: - виртуальный диск VHD (раздел G:). | |
Файл install.esd развёрнут на виртуальный диск VHD (раздел G:). | |
Следующим этапом мы произведём удаление встроенных в Windows 10 приложений из установочного дистрибутива при помощи Windows PowerShell | |
Открываем Windows PowerShell | |
и первым делом с помощью команды: | |
Get-AppxProvisionedPackage -Path V:\ | |
(где V:\ буква диска с развёрнутой Windows 10) получаем информацию о пакетах приложений, встроенных в операционную систему. | |
Приложения можно удалять по одному или все вместе. Чтобы удалить одно приложение, нужно его выбрать. Выберем к примеру Microsoft 3D Viewer. Для начала скопируем полностью его описание. | |
и введём команду: | |
Remove-AppxProvisionedPackage -path V:\ -PackageName Microsoft.Microsoft3DViewer_1.1702.21039.0_neutral_~_8wekyb3d8bbwe (где V:\ буква диска с развёрнутой Windows 10). | |
Приложение Microsoft 3D Viewer удалено. | |
Проверить это можно опять же командой Get-AppxProvisionedPackage -Path V:\ | |
Если вы хотите избавится от всех встроенных в Windows 10 приложений сразу, введите команду: | |
Get-AppxProvisionedPackage -path V:\ | Remove-AppxProvisionedPackage -path V:\ | |
Все встроенные пакеты приложений удалены из дистрибутива. | |
Теперь настало время сжать распакованную на раздел (G:) Windows 10 в файл-образ install.wim | |
Установочный ISO-образ Windows 10 подсоединён у нас к виртуальному дисководу (H:). Копируем всё его содержимое | |
и вставляем скопированное в созданную, в произвольном месте, папку с именем 1. | |
Я создал папку 1 на диске (E:). Заходим в папку 1. | |
Здесь нам нужно войти в папку sources. | |
В папке sources удаляем файл-образ install.esd, который является файлом образом Win 10. Создаём вместо него файл-образ install.esd, который не будет содержать встроенных приложений Win 10. | |
Открываем командную строку администратора и вводим команду: | |
Dism /capture-image /imagefile:E:\1\sources\install.wim /CaptureDir:V:\ /Name:Pro | |
данная команда архивирует Windows 10 в файл-образ install.wim, | |
который будет расположен вместо удалённого нами файла install.esd по адресу E:\1\sources\. | |
Теперь ещё больше сжимаем файл install.wim в файл install.esd командой: | |
Dism /Export-Image /SourceImageFile:E:\1\sources\install.wim /SourceIndex:1 /DestinationImageFile:E:\1\sources\install.esd /Compress:recovery | |
В результате в папке E:\1\sources\ находятся теперь два файла: install.wim и install.esd. | |
install.wim удаляем. | |
Вот практически и всё. Осталось только превратить папку 10 с файлами Windows 10 в установочный ISO-дистрибутив | |
Установите "Комплект средств для развертывания Windows (Windows ADK)". | |
Для Windows 10, скачать можно здесь: | |
https://developer.microsoft.com/ru-ru/windows/hardware/windows-assessment-deployment-kit | |
для Windows 8.1 здесь | |
https://www.microsoft.com/ru-ru/download/details.aspx?id=39982 | |
После установки запускаем среду средств развёртывания и работы с образами. | |
вводим команду: | |
Oscdimg /u2 /m /bootdаta:2#p0,e,bE:\1\boot\Etfsboot.com#pef,e,bE:\1\efi\microsoft\boot\Efisys.bin E:\1 E:\Windows10.iso | |
где: | |
u2, это файловая система UDF, а m - размер образа без ограничений. | |
b - загрузочный сектор записать etfsboot.com, путь к файлу etfsboot.com при указании b(boot) пишется без пробела: bE:\1\boot\etfsboot.com | |
bE: - где E: - буква диска. | |
E:\1 - создать ISO-образ из файлов и папок, находящихся на разделе E: в папке 1. | |
E:\Windows10.iso - созданный образ разместить на разделе E: | |
присвоить имя образу - Windows10 (без пробела). | |
Дистрибутив Windows10.iso на диске (E:) готов и не содержит встроенных приложений. | |
Если с помощью данного ISO-образа создать загрузочную флешку и установить Windows 10, то |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
. .\try_execute_function.ps1 | |
write-host "Попытка выполнить внешнюю функцию." | |
write-host "Пожалуйста, введите значение, которое вы хотите узнать:" | |
write-host "1. Результат выполнения функции" | |
write-host "2. Дату время и погоду" | |
write-host "3. Дату и время" | |
$ex=read-host | |
if ($ex -eq "1" -or $ex -eq "2" -or $ex -eq "3") { | |
write-host "Выполняю функцию:" | |
} | |
elseif ([string]::IsNullOrEmpty($ex)) { | |
write-host "Вы указали неверный параметр." | |
break; | |
} | |
switch ($ex){ | |
"1"{ | |
Execute-Function | |
} | |
"2"{ | |
Get-DateOne | |
} | |
"3"{ | |
Get-DateTwo | |
} | |
Default | |
{ | |
write-host "Такой функции не существует." | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment