Operating system: Windows Server 2016, Windows Server 2019
Software environment:
type |
Name |
Edition |
|
system function |
TelnetClien |
||
IIS |
Enable Asp.net 4.7 |
||
Hyper-V |
Enabling Management |
||
Common Software |
Winrar |
5.0 |
|
FireFox |
67 CHS |
||
SqlServer |
2016 |
Enabling TCP 1436 |
|
Microsoft SQL Server Management Studio |
14.0.17277.0 |
||
Redis |
3.2.1 |
||
Flame safety |
Personal Version 4.0 |
||
Operating environment |
DotnetFramework |
4.7.2 |
|
DotnetCoreSDK |
2.2.104 |
||
DotnetCore-IIS-hosting |
2.1.7 |
||
VC++ Runtime |
2017 |
||
firewall |
Close all firewalls |
PS script
@@@code$installSql = 1
$installSSMS = 1
$installIIS =1
$installHyperV =1
$installDotnet462 =1
$installDotcore220 = 1
$installVCRuntime = 1
$installSysdiag = 1
$installRedis =1
$mainDir ="d:\"
$mainUrl = "http://192.168.10.36/soft"
$tmpPath =$mainDir + "temp\system"
$normalPath = @()
$normalPath += $tmpPath
$normalPath += $mainDir + "data\sql"
$normalPath += $mainDir + "data\web"
$normalPath += $mainDir + "app\redis"
$normalPath += $mainDir + "app\dotnet"
$normalPath += $mainDir + "Hyper-V\Virtual Hard Disks"
$normalPath += $mainDir + "Hyper-V\vm"
$firefoxFile = "FireFox.exe"
$vcruntimeFile = "vc_redist.exe"
$winrarFile = "winrar.exe"
$winrarKeyFile = "rarreg.key"
$sqlFile = "sql2016_deve_sp2.iso"
$sqlServiceName = "SQL2016"
$ssmsFile ="ssms2017.exe"
$dotnetFile = "NDP472.exe"
$dotnetCHSFile = "NDP472CHS.exe"
$dotnetcoreFile ="dotnetcoresdk-2.2.104.exe"
$dotnetcoreHostFile ="dotnet-hosting-2.1.7-win.exe"
$sysdiagFile = "sysdiag.exe"
$redisFile = "Redis.msi"
# add path
Function CreateDir($arg)
{
if (![System.IO.Directory]::Exists($arg))
{
# [System.IO.Directory]::CreateDirectory($dir);
mkdir $arg | Out - Null
}
}
Function Down($url , $file, $force)
{
$needDown = 1;
if ($force - eq 1){
$needDown = 1;
}else{
if ([System.IO.File]::Exists($file))
{
Write - Host "Existing $file,In comparison..."
$1 = $url + ".md5.txt"
$2 = $file + ".md5.txt"
#Write-Host $1,$2
if (![System.IO.File]::Exists($2))
{
Invoke - WebRequest - uri $1 - OutFile $2
Unblock - File $2
}
$md5_2 = [System.IO.File]::ReadAllText($2);
$md5 = (Get - FileHash $file - Algorithm MD5).Hash
if ( $md5 - eq $md5_2){
$needDown = 0;
Write - Host "$file file hash Same, no download required"
}else{
Write - Host "$file hash by $md5,The requirements are as follows: $md5_2"
}
}
}
if ($needDown - eq 1){
Write - Host "Start downloading $url reach $file ..."
Invoke - WebRequest - uri $url - OutFile $file
Unblock - File $file
}
}
function DownloadAndInstall( $url, $file,$name,$para)
{
Down $url $file 0
Write - Host "Please wait $name Installation interface appears and completes interaction" - Foreground "Yellow"
Start - Process $file $para - Wait
Write - Host "$name installation is complete"
}
Function ChangeSqlServerTcpPort( $name , $port )
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null
$server_name = (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name
$Machine = new-object 'Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer' $server_name
$instance = $Machine.ServerInstances[ $name];
$ipAll = $instance.ServerProtocols['Tcp'].IPAddresses['IPAll'];
$ipAll.IPAddressProperties['TcpPort'].Value = "${port}"
$instance.ServerProtocols['Tcp'].Alter();
}
Function OpenFirewall( $name , $port , $tcp )
{
Remove - NetFirewallRule - DisplayName "$name" - ErrorAction SilentlyContinue
New - NetFirewallRule - DisplayName "$name" - Direction Inbound - LocalPort ${ port}
-Protocol ${ tcp}
-Action Allow | Out - Null
Write - Host "Open Services ${name}port ${port},${tcp}"
}
Function DisableAllFirewallRule( $port )
{
Set - NetFirewallProfile - Profile Public - Enabled false
Set - NetFirewallProfile - Profile Private - Enabled false
Get - NetFirewallRule | foreach{
$flag = $_.Enabled
if ( $flag - eq 1 ){
$name =$_.DisplayName
Set - NetfirewallRule - DisplayName $name - Enabled false - ErrorAction SilentlyContinue
Write - Host "Disable firewalls $name "
}
}
OpenFirewall "Operation and Maintenance Special Purpose" $port tcp
Set - NetFirewallProfile - Profile Public - Enabled true
Set - NetFirewallProfile - Profile Private - Enabled true
}
Function GetRegKey($key,$name)
{
$result = (Get - ItemProperty - Path "$key" - ErrorAction SilentlyContinue).$name
return $result
#Write-Host $result
}
Function HasDotnetVersion($iscore,$version)
{
if ($iscore - eq 0){
$dotVersion = GetRegKey "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Release"
if ( $dotVersion - ge $version)
{
return GetRegKey "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Version"
}
}
else{
$x = Get - Command dotnet - ErrorAction SilentlyContinue
if ($?){
return (dir(Get - Command dotnet).Path.Replace('dotnet.exe', 'sdk') - ErrorAction Ignore | Where - Object {$_.Name - eq "$version"} | Select Name ).Name
}
}
return "";
}
Write-Host "Folder Processing"
$normalPath | foreach {
CreateDir $_
}
$winrarVersion = GetRegKey "HKLM:\SOFTWARE\WinRAR" "exe64"
if ($winrarVersion.Length -gt 0){
Write-Host "Winrar already installed $winrarFile"
}
else{
DownloadAndInstall "$mainUrl/system/$winrarFile" "$tmpPath\$winrarFile" "Winrar" " /install /passive /norestart"
$winrarVersion = GetRegKey "HKLM:\SOFTWARE\WinRAR" "exe64"
Down "$mainUrl/system/$winrarKeyFile" "$tmpPath\$winrarKeyFile" 0
[System.IO.File]::Copy("$tmpPath\$winrarKeyFile", [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName("$winrarVersion") , $winrarKeyFile) , 1)
}
Write-Host "Install Firefox Browser"
$installFireFox = 1
$1 =Get-Item -Path "HKCU:\Software\Mozilla\Firefox\Launcher" -ErrorAction SilentlyContinue
if ($?)
{
$firefoxVersion=$1.GetValueNames()[0]
#= GetRegKey "HKCU:\Software\Mozilla\Mozilla Firefox" "CurrentVersion"
if ($firefoxVersion.Length -gt 0){
Write-Host "Winrar Installed $firefoxVersion"
$installFireFox = 0
}
}
if ($installFireFox -eq 1) {
DownloadAndInstall "$mainUrl/system/$firefoxFile" "$tmpPath\$firefoxFile" "FireFox" " /install /passive /norestart"
}
Write-Host "redis Handle"
if ($installRedis -eq 1){
$redisService = Get-Service Redis -ErrorAction SilentlyContinue
if($?){
Write-Host "Redis already installed"
$installRedis = 0
}else{
DownloadAndInstall "$mainUrl/system/$redisFile" "$tmpPath\$redisFile" "Redis" " "
}
}
Write-Host "Firewall Processing"
DisableAllFirewallRule 3389
OpenFirewall sqlServer 1436 tcp
OpenFirewall BandService 3410-3415 tcp
OpenFirewall logServerWeb 5881 tcp
OpenFirewall logServer 5880 udp
OpenFirewall Redis 6379 tcp
Write-Host ""TelnetClient Handle
$telnet = Get-WindowsFeature "telnet-client" | select InstallState
if($telnet.InstallState -eq "Installed"){
Write-Host "TelnetClient already installed"
}
else{
Install-WindowsFeature "telnet-client" | Out-Null
}
if ($installDotnet462 -eq 1){
Write-Host "dotnet Handle"
$dotVersion =HasDotnetVersion 0 461814 #394802
if( $dotVersion.Length -gt 0 )
{
Write-Host "already installed DotNet $dotVersion"
}else{
DownloadAndInstall "$mainUrl/system/$dotnetFile" "$tmpPath\$dotnetFile" "Dotnet" " /install /passive /norestart"
DownloadAndInstall "$mainUrl/system/$dotnetCHSFile" "$tmpPath\$dotnetCHSFile" "DotnetCHS" " /install /passive /norestart"
}
}
if( $installIIS -eq 1){
Write-Host "IIS Handle"
Install-WindowsFeature Web-Server -ErrorAction Continue
Add-WindowsFeature Web-Server,Web-WebServer,Web-Security,Web-Filtering,Web-Common-Http,Web-Http-Errors,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing
Add-WindowsFeature Web-Performance,Web-Stat-Compression,Web-Health,Web-Http-Logging,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Mgmt-Tools,Web-Mgmt-Console
Write-Host "Web The server(IIS) installation is complete"
}
if ($installDotcore220 -eq 1){
Write-Host "dotnetcore Handle"
$dotVersion =HasDotnetVersion 1 "2.2.104"
if( $dotVersion.Length -gt 0 )
{
Write-Host "already installed DotNetCore $dotVersion"
}else{
DownloadAndInstall "$mainUrl/system/$dotnetcoreFile" "$tmpPath\$dotnetcoreFile" "DotnetCoreSDK" " /install /passive /norestart"
DownloadAndInstall "$mainUrl/system/$dotnetcoreHostFile" "$tmpPath\$dotnetcoreHostFile" "DotnetCore IIS Hosting" " /install /passive /norestart"
}
}
Write-Host "Handle C++2017 Runtime"
if ($installVCRuntime -eq 1){
$vcruntimeVersion = GetRegKey "HKLM:\SOFTWARE\Microsoft\DevDiv\VC\Servicing\14.0\RuntimeMinimum" "Version"
if ($vcruntimeVersion.Length -gt 0){
if([System.Version]::Parse($vcruntimeVersion).Minor -ge 16){
$installVCRuntime = 0
Write-Host "Visual C++ Redistributable $vcruntimeVersion already installed" #14.12.25810 14.16.27024
}
}
if($installVCRuntime -eq 1){
DownloadAndInstall "$mainUrl/system/$vcruntimeFile" "$tmpPath\$vcruntimeFile" "Visual C++ Redistributable" " /install /passive /norestart"
}
}
Write-Host "The computer is about to reboot. Please continue to execute the script after reboot." -ForegroundColor Red
Restart-Computer
if ($installHyperV -eq 1){
Write-Host "HyperV Handle"
$1 = (Get-WindowsFeature Hyper-V).InstallState
if ($1 -eq "Installed"){
Write-Host "HyperV already installed"
Set-VMHost -ComputerName $env:COMPUTERNAME -VirtualHardDiskPath "d:\Hyper-V\Virtual Hard Disks" -VirtualMachinePath "d:\Hyper-V\VM"
}
else{
Install-WindowsFeature Hyper-V -IncludeManagementTools -Restart
}
}
if ($installSql -eq 1){
Write-Host "$sqlServiceName Handle"
$sqlService = Get-Service MSSQL`$${sqlServiceName} -ErrorAction SilentlyContinue
if($?){
Write-Host "$sqlServiceName already installed"
$installSql = 0
#ChangeSqlServerTcpPort $sqlServiceName 1436
#Restart-Service MSSQL`$${sqlServiceName} -Force
}
if ($installSql -eq 1){
Down "$mainUrl/system/$sqlFile" "$tmpPath\$sqlFile" 0
$sqlIni = "${tmpPath}\${sqlFile}.ini"
Down $mainUrl/system/${sqlFile}.ini $sqlIni 0
$sqlFile="$tmpPath\$sqlFile"
Write-Host "From the configuration file $sqlIni install SQLServer,The development version is installed silently, and the formal authorization serial number needs to be replaced later."
$1 = (Get-DiskImage -ImagePath $sqlFile).Attached
if (!$1){
Write-Host "Load $sqlFile "
Mount-DiskImage -ImagePath $sqlFile | Out-Null
}
$1 = (Get-DiskImage -ImagePath $sqlFile | Get-Volume ).DriveLetter
$exe = $1 + ":\setup.exe "
$para ="/ConfigurationFile=${sqlIni}"
# & $exe $para
Write-Host "Please wait SQLServer Installation interface appears and completes interaction"
Start-Process $exe $para -Wait
ChangeSqlServerTcpPort $sqlServiceName 1436
Restart-Service MSSQL`$${sqlServiceName} -Force
}
}
if ($installSSMS -eq 1){
Write-Host "SSMS Handle"
$ssmsKey = GetRegKey 'HKCU:\Software\Microsoft\SQL Server Management Studio\14.0_Config' 'InstallDir'
if( $ssmsKey ){
Write-Host "SSMS Installed $ssmsKey "
$installSSMS = 0
}else{
$ssmsKey = GetRegKey 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\AppEnv\14.0\Apps\ssms_14.0' 'StubExePath'
if ( $ssmsKey ){
Write-Host "SSMS Installed $ssmsKey "
$installSSMS = 0
}
}
if ($installSSMS -eq 1)
{
DownloadAndInstall "$mainUrl/system/$ssmsFile" "$tmpPath\$ssmsFile" "Microsoft SQL Server Management Studio" " /install /passive "
}
}
if ($installSysdiag -eq 1){
Write-Host "Safety treatment of flannel"
$Key = GetRegKey 'HKLM:\Software\Huorong\Sysdiag' 'InstallPath'
if( $Key.Length -gt 0 ){
Write-Host "Fur Safety Installed $Key "
$installSysdiag = 0
}
if ($installSysdiag -eq 1)
{
Write-Host "Please exit once after the safety installation of the flannel is completed" -ForegroundColor Red
DownloadAndInstall "$mainUrl/system/$sysdiagFile" "$tmpPath\$sysdiagFile" "Flame safety" " /install /passive "
}
}
@@#
Database Profile
@@@code;SQL Server 2016 Configuration File
[OPTIONS]
; Specify the workflow of the installer, such as INSTALL,UNINSTALL or UPGRADE. This is the necessary parameter.
ACTION="Install"
; Specifies that when run from the command line, SQL Server Setup should not display privacy statements.
SUPPRESSPRIVACYSTATEMENTNOTICE="True"
;License terms will be displayed in the installer user interface for your review and acceptance,Specify run time from the command line,Set to True Automatic acceptance of permits
IACCEPTSQLSERVERLICENSETERMS="True"
; Specify this parameter and accept it Microsoft R Open and Microsoft R Server Terms indicate that you confirm that you have read and understood the terms of use.
IACCEPTROPENLICENSETERMS="True"
; Use /ENU Parameters can be localized Windows Install the English version on the operating system SQL Server.
ENU="False"
; The installer will not display any user interface.
QUIET="False"
; The installer will only show progress without any user interaction.
QUIETSIMPLE="True"
; Parameters used to control user interface behavior. RMS for completeness UI by Normal,For simplified UI by AutoAdvance,by EnableUIOnServerCore Skip Server Core Erection sequence GUI Block.
;Used QUIETSIMPLE or QUIET Can not be used later UIMODE
;UIMODE="Normal"
; Appoint SQL Server Should the installer discover and include product updates? The effective value is True and False Or 1 and 0. By default, SQL Server The installer will include the updates found.
UpdateEnabled="0"
; If this parameter is provided, the computer will use it Microsoft Update check update.
USEMICROSOFTUPDATE="False"
; Specify functions to install, uninstall, or upgrade. Top-level feature lists include SQL,AS,RS,IS,MDS And tools. SQL Functions will install database engine, replication, full text and Data Quality Services (DQS)The server. Tool functions install shared components.
FEATURES=SQLENGINE,REPLICATION
; Appoint SQL Server The installer will get the location of the product update. Valid value "MU" (To search for product updates),Effective folder path and .\MyUpdates or UNC Relative paths such as shared directories. By default, SQL Server Installation will go through Window Server Update Services search Microsoft Update or Windows Update Service.
UpdateSource="MU"
; Display command line parameter usage
HELP="False"
; Specifies that the detailed installer log should be sent to the console.
INDICATEPROGRESS="False"
; Specify that the installer should be installed to WOW64 Medium. IA64 Or the 32-bit system does not support this command-line parameter.
X86="False"
; Specify the default instance or named instance. MSSQLSERVER Right or wrong Express The default instance of the version, SQLExpress then is Express Default instance of version. Installation SQL Server database engine(SQL),Analysis Services (AS)or Reporting Services (RS)This parameter is required.
INSTANCENAME="SQL2016"
; Specify the installation root directory for shared components. This directory remains unchanged after the shared components have been installed.
INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
; Appoint WOW64 Installation root directory for shared components. Installed WOW64 After sharing components, the directory remains unchanged.
INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"
; For what you have specified SQL Server Function specifying instance ID. SQL Server The directory structure, registry structure, and service name will include SQL Server Examples of examples ID.
INSTANCEID="SQL2016"
; TelemetryUserNameConfigDescription
SQLTELSVCACCT="NT Service\SQLTELEMETRY$SQL2016"
; TelemetryStartupConfigDescription
SQLTELSVCSTARTUPTYPE="Automatic"
; Specify the installation directory.
INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
; Agent account name
AGTSVCACCOUNT="NT Service\SQLAgent$SQL2016"
; Auto-start service after installation.
AGTSVCSTARTUPTYPE="Automatic"
; CM Program Block TCP Communication Port
COMMFABRICPORT="0"
; How to Use Private Network for Matrix
COMMFABRICNETWORKLEVEL="0"
; How to Protect Communication between Program Blocks
COMMFABRICENCRYPTION="0"
; CM Block usage TCP port
MATRIXCMBRICKCOMMPORT="0"
; SQL Server Startup type of service.
SQLSVCSTARTUPTYPE="Automatic"
; Enable FILESTREAM Level of functionality(0,1,2 Or 3).
FILESTREAMLEVEL="2"
; Must be FILESTREAM file I/O Created Windows The name of the share.
FILESTREAMSHARENAME="SQL2016"
; Set to "1" May be SQL Server Express Enable RANU.
ENABLERANU="False"
; Specifies what to use for the database engine Windows Ordering rules or SQL Sorting rules.
SQLCOLLATION="Chinese_PRC_CI_AS"
; SQL Server Accounts for Services: field\User or system account.
SQLSVCACCOUNT="NT Service\MSSQL$SQL2016"
; Set to "True" To enable SQL Server Instant file initialization of the service. If enabled, the installer will grant the database engine service SID"Perform volume maintenance tasks"Privileges. This can lead to information leakage, because it allows unauthorized subjects to access deleted content.
SQLSVCINSTANTFILEINIT="False"
; To set to SQL Server System Administrator's Windows Account.
SQLSYSADMINACCOUNTS=".\Administrator"
; The default value is Windows Authentication. Use "SQL" Represents authentication in mixed mode.
SECURITYMODE="SQL"
SAPWD="Pa4432^22"
; database engine TempDB Number of files.
SQLTEMPDBFILECOUNT="8"
; Specify the database engine TempDB Initial size of data file(MB).
SQLTEMPDBFILESIZE="8"
; Specify each database engine TempDB Automatic Incremental Growth of Data Files(MB).
SQLTEMPDBFILEGROWTH="64"
; Specify the database engine TempDB Initial size of log file(MB).
SQLTEMPDBLOGFILESIZE="8"
; Specify the database engine TempDB Automatic Increment Growth of Log Files(MB).
SQLTEMPDBLOGFILEGROWTH="64"
; The database engine root data directory.
INSTALLSQLDATADIR="D:\data\sql"
; Set the current user to %SQL_PRODUCT_SHORT_NAME% Express Database Engine System Administrator.
ADDCURRENTUSERASSQLADMIN="False"
; Specify 0 to disable TCP/IP Protocol, specify 1 to enable the protocol.
TCPENABLED="1"
; Specify 0 to disable Named Pipes Protocol, specify 1 to enable the protocol.
NPENABLED="0"
; Browser Startup type of service.
BROWSERSVCSTARTUPTYPE="Disabled"
@@#
output
Folder Processing
Start downloading http://192.168.10.36/system/winrar.exe to d: temp system winrar.exe...
Wait for the Winrar installation interface to appear and complete the interaction
Winrar Installation Completed
Start downloading http://192.168.10.36/system/rarreg.key to d: temp system rarreg.key...
Install Firefox Browser
Start downloading http://192.168.10.36/system/FireFox.exe to d: temp system FireFox.exe...
Wait for the FireFox installation interface to appear and complete the interaction
FireFox installation completed
redis processing
Start downloading http://192.168.10.36/system/Redis.msi to d: temp system Redis.msi...
Wait for the Redis installation interface to appear and complete the interaction
Redis installation completed
Firewall Processing
Disable Firewall Connected User Experiences and Telemetry
Disable Firewall Delivery Optimization (TCP-In)
Disable Firewall Delivery Optimization (UDP-In)
.....
Disable Firewall Network Discovery (UPnP-In)
Disable Firefox (C: Program Files (x86) Mozilla Firefox)
Disable Firefox (C: Program Files (x86) Mozilla Firefox)
Disable Firewall Redis
Open Service Operations and Maintenance Special Port 3389,tcp
Open service sqlServer port 1436,tcp
Open Service BandService Port 3410-3415,tcp
Open Service LogServer Web Port 5881,tcp
Open Service logServer Port 5880,udp
Open Service Redis Port 6379,tcp
TelnetClient Processing
dotnet processing
Start downloading http://192.168.10.36/system/NDP472.exe to d: temp system NDP472.exe...
Wait for the Dotnet installation interface to appear and complete the interaction
Dotnet installation completed
Start downloading http://192.168.10.36/system/NDP472CHS.exe to d: temp system NDP472CHS.exe...
Wait for the DotnetCHS installation interface to appear and complete the interaction
Dotnet CHS installation completed
IIS Processing
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True Yes SuccessRest... {Common HTTP functions, default documents, directory browsing, request filtering...}
Warning: This server must be restarted to complete the installation process.
True Yes NoChangeNeeded {}
True Yes SuccessRest... {ASP.NET 4.6, application development, ASP.NET 4.6, ISAPI extension...
Warning: This server must be restarted to complete the installation process.
Web Server (IIS) Installation Completed
dotnetcore processing
Start downloading http://192.168.10.36/system/dotnetcoresdk-2.2.104.exe to d: temp system dotnetcoresdk-2.2.104.exe...
Wait for the Dotnet Core SDK installation interface to appear and complete the interaction
DotNet Core 2.2.104 installed
Processing C++2017 runtime
Visual C++ Redistributable 14.16.27024 Installed
SQL2016 Processing
Existing d: temp system sql2016_deve_sp2. iso, in the comparison.
D: temp system sql2016_deve_sp2. ISO hash is E352C8A057BF78FA03487716F46AA0, requiring CF399685C44B79F911195401C01B12
Start downloading http://192.168.10.36/system/sql2016_deve_sp2.iso to d: temp system sql2016_deve_sp2.iso...
Install the SQL Server from the configuration file d: temp system sql2016_deve_sp2.iso.ini, using the silent installation of the development version, and subsequently need to change the formal authorization serial number.
Load d: temp system sql2016_deve_sp2.iso
Please wait for the SQL Server installation interface to appear and complete the interaction
Warning: Waiting for the service "SQL Server (SQL2016) (MSSQL$SQL2016)" to stop...
SSMS Processing
Existing d: temp system ssms2017.exe, in the comparison.
D: temp system ssms2017.exe hash is 743917727CBEEA2BA32E0C5BACBA, requiring 324F66D14FD1A8A368DB208534FAA496
Start downloading http://192.168.10.36/system/ssms2017.exe to d: temp system ssms2017.exe...
Please wait for the Microsoft SQL Server Management Studio installation interface to appear and complete the interaction
Microsoft SQL Server Management Studio Installation Completed
Safety treatment of flannel
Please exit once after the safety installation of the flannel is completed
Start downloading http://192.168.10.36/system/sysdiag.exe to d: temp system sysdiag.exe...
Please wait for the appearance of the Flannel Safety Installation Interface and complete the interaction.
Fur safety installation completed
PS C:\Windows\system32>
@@#