使用PowerShell实现服务器常用软件的无人值守安装
操作系统:windows server 2016 , windows server 2019
软件环境:
类型 |
名称 |
版本 |
|
系统功能 |
TelnetClien |
||
IIS |
启用Asp.net 4.7 |
||
Hyper-V |
启用管理 |
||
常用软件 |
Winrar |
5.0 |
|
FireFox |
67 CHS |
||
SqlServer |
2016 |
启用TCP 1436 |
|
Microsoft SQL Server Management Studio |
14.0.17277.0 |
||
Redis |
3.2.1 |
||
火绒安全 |
个人版 4.0 |
||
运行环境 |
DotnetFramework |
4.7.2 |
|
DotnetCoreSDK |
2.2.104 |
||
DotnetCore-IIS-hosting |
2.1.7 |
||
VC++ Runtime |
2017 |
||
防火墙 |
关闭所有防火墙 |
PS脚本
@@@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 "已存在$file,比对中..."
$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 文件hash相同,无需下载"
}else{
Write - Host "$file hash 为$md5,要求为$md5_2"
}
}
}
if ($needDown - eq 1){
Write - Host "开始下载$url 到 $file ..."
Invoke - WebRequest - uri $url - OutFile $file
Unblock - File $file
} } function DownloadAndInstall( $url, $file,$name,$para)
{
Down $url $file 0
Write - Host "请等待 $name 安装界面出现并完成交互" - Foreground "Yellow"
Start - Process $file $para - Wait
Write - Host "$name 安装完成"
} 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 "开放服务${name}端口${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 "禁用防火墙 $name "
}
}
OpenFirewall "运维专用" $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 "文件夹处理"
$normalPath | foreach {
CreateDir $_
} $winrarVersion = GetRegKey "HKLM:\SOFTWARE\WinRAR" "exe64"
if ($winrarVersion.Length -gt 0){
Write-Host "Winrar已安装 $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 "安装火狐浏览器"
$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已安装在 $firefoxVersion"
$installFireFox = 0
}
}
if ($installFireFox -eq 1) {
DownloadAndInstall "$mainUrl/system/$firefoxFile" "$tmpPath\$firefoxFile" "FireFox" " /install /passive /norestart"
} Write-Host "redis处理"
if ($installRedis -eq 1){
$redisService = Get-Service Redis -ErrorAction SilentlyContinue
if($?){
Write-Host "Redis 已安装"
$installRedis = 0
}else{
DownloadAndInstall "$mainUrl/system/$redisFile" "$tmpPath\$redisFile" "Redis" " " }
} Write-Host "防火墙处理"
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处理
$telnet = Get-WindowsFeature "telnet-client" | select InstallState
if($telnet.InstallState -eq "Installed"){
Write-Host "TelnetClient 已安装"
}
else{
Install-WindowsFeature "telnet-client" | Out-Null
}
if ($installDotnet462 -eq 1){
Write-Host "dotnet处理"
$dotVersion =HasDotnetVersion 0 461814 #394802
if( $dotVersion.Length -gt 0 )
{
Write-Host "已安装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处理"
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 服务器(IIS) 安装完成"
} if ($installDotcore220 -eq 1){
Write-Host "dotnetcore处理"
$dotVersion =HasDotnetVersion 1 "2.2.104"
if( $dotVersion.Length -gt 0 )
{
Write-Host "已安装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 "处理C++2017运行时"
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 已安装" #14.12.25810 14.16.27024
}
}
if($installVCRuntime -eq 1){
DownloadAndInstall "$mainUrl/system/$vcruntimeFile" "$tmpPath\$vcruntimeFile" "Visual C++ Redistributable" " /install /passive /norestart"
}
}
Write-Host "计算机即将重启,请在重启后继续执行脚本" -ForegroundColor Red
Restart-Computer if ($installHyperV -eq 1){
Write-Host "HyperV处理"
$1 = (Get-WindowsFeature Hyper-V).InstallState
if ($1 -eq "Installed"){
Write-Host "HyperV已安装"
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 处理"
$sqlService = Get-Service MSSQL`$${sqlServiceName} -ErrorAction SilentlyContinue
if($?){
Write-Host "$sqlServiceName 已安装"
$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 "从配置文件 $sqlIni 安装SQLServer,使用了静默安装开发版本,后续需要更换正式的授权序列号"
$1 = (Get-DiskImage -ImagePath $sqlFile).Attached
if (!$1){
Write-Host "加载 $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 "请等待SQLServer 安装界面出现并完成交互"
Start-Process $exe $para -Wait
ChangeSqlServerTcpPort $sqlServiceName 1436
Restart-Service MSSQL`$${sqlServiceName} -Force
}
}
if ($installSSMS -eq 1){
Write-Host "SSMS处理" $ssmsKey = GetRegKey 'HKCU:\Software\Microsoft\SQL Server Management Studio\14.0_Config' 'InstallDir'
if( $ssmsKey ){
Write-Host "SSMS已安装在 $ssmsKey "
$installSSMS = 0
}else{
$ssmsKey = GetRegKey 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\AppEnv\14.0\Apps\ssms_14.0' 'StubExePath'
if ( $ssmsKey ){
Write-Host "SSMS已安装在 $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 "火绒安全处理"
$Key = GetRegKey 'HKLM:\Software\Huorong\Sysdiag' 'InstallPath'
if( $Key.Length -gt 0 ){
Write-Host "火绒安全已安装在 $Key "
$installSysdiag = 0
}
if ($installSysdiag -eq 1)
{
Write-Host "火绒安全安装完成后请先退出一次" -ForegroundColor Red
DownloadAndInstall "$mainUrl/system/$sysdiagFile" "$tmpPath\$sysdiagFile" "火绒安全" " /install /passive "
}
} @@#
数据库配置文件
@@@code
;SQL Server 2016 Configuration File
[OPTIONS] ; 指定安装程序的工作流,如 INSTALL、UNINSTALL 或 UPGRADE。这是必需的参数。 ACTION="Install" ; 指定从命令行运行时,SQL Server 安装程序不应显示隐私声明。 SUPPRESSPRIVACYSTATEMENTNOTICE="True"
;将在安装程序用户界面中显示许可条款,供您审核审阅和接受,指定从命令行运行时,设置为True自动接受许可
IACCEPTSQLSERVERLICENSETERMS="True" ; 指定此参数并接受 Microsoft R Open 和 Microsoft R Server 条款即表明你确认已阅读并了解使用条款。 IACCEPTROPENLICENSETERMS="True"
; 使用 /ENU 参数可在本地化的 Windows 操作系统上安装英语版本的 SQL Server。 ENU="False" ; 安装程序将不会显示任何用户界面。 QUIET="False" ; 安装程序将只显示进度,而不需要任何用户交互。 QUIETSIMPLE="True" ; 用于控制用户界面行为的参数。有效值对于完整 UI 为 Normal,对于简化的 UI 为 AutoAdvance,为 EnableUIOnServerCore 则跳过 Server Core 安装程序 GUI 块。
;使用了QUIETSIMPLE或QUIET之后不能使用UIMODE
;UIMODE="Normal" ; 指定 SQL Server 安装程序是否应发现和包括产品更新。有效值是 True 和 False 或者 1 和 0。默认情况下,SQL Server 安装程序将包括找到的更新。 UpdateEnabled="0" ; 如果提供了此参数,则此计算机将使用 Microsoft 更新检查更新。 USEMICROSOFTUPDATE="False" ; 指定要安装、卸载或升级的功能。顶级功能列表包括 SQL、AS、RS、IS、MDS 和工具。SQL 功能将安装数据库引擎、复制、全文和 Data Quality Services (DQS)服务器。工具功能将安装共享组件。 FEATURES=SQLENGINE,REPLICATION ; 指定 SQL Server 安装程序将获取产品更新的位置。有效值为 "MU" (以便搜索产品更新)、有效文件夹路径以及 .\MyUpdates 或 UNC 共享目录之类的相对路径。默认情况下,SQL Server 安装程序将通过 Window Server Update Services 搜索 Microsoft Update 或 Windows Update 服务。 UpdateSource="MU" ; 显示命令行参数用法 HELP="False" ; 指定应将详细的安装程序日志传送到控制台。 INDICATEPROGRESS="False" ; 指定安装程序应该安装到 WOW64 中。IA64 或 32 位系统不支持此命令行参数。 X86="False" ; 指定默认实例或命名实例。MSSQLSERVER 是非 Express 版本的默认实例,SQLExpress 则是 Express 版本的默认实例。在安装 SQL Server 数据库引擎(SQL)、Analysis Services (AS)或 Reporting Services (RS)时,此参数是必需的。 INSTANCENAME="SQL2016" ; 指定共享组件的安装根目录。在已安装共享组件后,此目录保持不变。 INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" ; 指定 WOW64 共享组件的安装根目录。在已安装 WOW64 共享组件后,此目录保持不变。 INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ; 为您已指定的 SQL Server 功能指定实例 ID。SQL Server 目录结构、注册表结构和服务名称将包含 SQL Server 实例的实例 ID。 INSTANCEID="SQL2016" ; TelemetryUserNameConfigDescription SQLTELSVCACCT="NT Service\SQLTELEMETRY$SQL2016" ; TelemetryStartupConfigDescription SQLTELSVCSTARTUPTYPE="Automatic" ; 指定安装目录。 INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ; 代理帐户名 AGTSVCACCOUNT="NT Service\SQLAgent$SQL2016" ; 安装后自动启动服务。 AGTSVCSTARTUPTYPE="Automatic" ; CM 程序块 TCP 通信端口 COMMFABRICPORT="0" ; 矩阵如何使用专用网络 COMMFABRICNETWORKLEVEL="0" ; 如何保护程序块间的通信 COMMFABRICENCRYPTION="0" ; CM 程序块使用的 TCP 端口 MATRIXCMBRICKCOMMPORT="0" ; SQL Server 服务的启动类型。 SQLSVCSTARTUPTYPE="Automatic" ; 启用 FILESTREAM 功能的级别(0、1、2 或 3)。 FILESTREAMLEVEL="2" ; 要为 FILESTREAM 文件 I/O 创建的 Windows 共享的名称。 FILESTREAMSHARENAME="SQL2016" ; 设置为 "1" 可为 SQL Server Express 启用 RANU。 ENABLERANU="False" ; 指定要用于数据库引擎的 Windows 排序规则或 SQL 排序规则。 SQLCOLLATION="Chinese_PRC_CI_AS" ; SQL Server 服务的帐户: 域\用户或系统帐户。 SQLSVCACCOUNT="NT Service\MSSQL$SQL2016" ; 设置为 "True" 以启用 SQL Server 服务的即时文件初始化。如果已启用,安装程序将授予数据库引擎服务 SID"执行卷维护任务"特权。这可能会导致信息泄漏,因为这会允许未经授权的主体访问已删除的内容。 SQLSVCINSTANTFILEINIT="False" ; 要设置为 SQL Server 系统管理员的 Windows 帐户。 SQLSYSADMINACCOUNTS=".\Administrator" ; 默认值为 Windows 身份验证。使用 "SQL" 表示采用混合模式身份验证。 SECURITYMODE="SQL"
SAPWD="Pa4432^22" ; 数据库引擎 TempDB 文件数。 SQLTEMPDBFILECOUNT="8" ; 指定数据库引擎 TempDB 数据文件的初始大小(MB)。 SQLTEMPDBFILESIZE="8" ; 指定每个数据库引擎 TempDB 数据文件的自动增长增量(MB)。 SQLTEMPDBFILEGROWTH="64" ; 指定数据库引擎 TempDB 日志文件的初始大小(MB)。 SQLTEMPDBLOGFILESIZE="8" ; 指定数据库引擎 TempDB 日志文件的自动增长增量(MB)。 SQLTEMPDBLOGFILEGROWTH="64" ; 数据库引擎根数据目录。 INSTALLSQLDATADIR="D:\data\sql" ; 将当前用户设置为 %SQL_PRODUCT_SHORT_NAME% Express 的数据库引擎系统管理员。 ADDCURRENTUSERASSQLADMIN="False" ; 指定 0 禁用 TCP/IP 协议,指定 1 则启用该协议。 TCPENABLED="1" ; 指定 0 禁用 Named Pipes 协议,指定 1 则启用该协议。 NPENABLED="0" ; Browser 服务的启动类型。 BROWSERSVCSTARTUPTYPE="Disabled"
@@#
输出
@@@code
文件夹处理
开始下载http://192.168.10.36/system/winrar.exe 到 d:\temp\system\winrar.exe ...
请等待 Winrar 安装界面出现并完成交互
Winrar 安装完成
开始下载http://192.168.10.36/system/rarreg.key 到 d:\temp\system\rarreg.key ...
安装火狐浏览器
开始下载http://192.168.10.36/system/FireFox.exe 到 d:\temp\system\FireFox.exe ...
请等待 FireFox 安装界面出现并完成交互
FireFox 安装完成
redis处理
开始下载http://192.168.10.36/system/Redis.msi 到 d:\temp\system\Redis.msi ...
请等待 Redis 安装界面出现并完成交互
Redis 安装完成
防火墙处理
禁用防火墙 Connected User Experiences and Telemetry
禁用防火墙 Delivery Optimization (TCP-In)
禁用防火墙 Delivery Optimization (UDP-In)
…..
禁用防火墙 网络发现(UPnP-In)
禁用防火墙 Firefox (C:\Program Files (x86)\Mozilla Firefox)
禁用防火墙 Firefox (C:\Program Files (x86)\Mozilla Firefox)
禁用防火墙 Redis
开放服务运维专用端口3389,tcp
开放服务sqlServer端口1436,tcp
开放服务BandService端口3410-3415,tcp
开放服务logServerWeb端口5881,tcp
开放服务logServer端口5880,udp
开放服务Redis端口6379,tcp
TelnetClient处理
dotnet处理
开始下载http://192.168.10.36/system/NDP472.exe 到 d:\temp\system\NDP472.exe ...
请等待 Dotnet 安装界面出现并完成交互
Dotnet 安装完成
开始下载http://192.168.10.36/system/NDP472CHS.exe 到 d:\temp\system\NDP472CHS.exe ...
请等待 DotnetCHS 安装界面出现并完成交互
DotnetCHS 安装完成
IIS处理
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True Yes SuccessRest... {常见 HTTP 功能, 默认文档, 目录浏览, 请求筛选...}
警告: 必须重新启动此服务器才能完成安装过程。
True Yes NoChangeNeeded {}
True Yes SuccessRest... {ASP.NET 4.6, 应用程序开发, ASP.NET 4.6, ISAPI 扩...
警告: 必须重新启动此服务器才能完成安装过程。
Web 服务器(IIS) 安装完成
dotnetcore处理
开始下载http://192.168.10.36/system/dotnetcoresdk-2.2.104.exe 到 d:\temp\system\dotnetcoresdk-2.2.104.exe ...
请等待 DotnetCoreSDK 安装界面出现并完成交互
已安装DotNetCore 2.2.104
处理C++2017运行时
Visual C++ Redistributable 14.16.27024 已安装
SQL2016 处理
已存在d:\temp\system\sql2016_deve_sp2.iso,比对中...
d:\temp\system\sql2016_deve_sp2.iso hash 为E352C8A057BF78FA0348757716F46AA0,要求为CF399685C44B7988F911195401C01B12
开始下载http://192.168.10.36/system/sql2016_deve_sp2.iso 到 d:\temp\system\sql2016_deve_sp2.iso ...
从配置文件 d:\temp\system\sql2016_deve_sp2.iso.ini 安装SQLServer,使用了静默安装开发版本,后续需要更换正式的授权序列号
加载 d:\temp\system\sql2016_deve_sp2.iso
请等待SQLServer 安装界面出现并完成交互
警告: 正在等待服务"SQL Server (SQL2016) (MSSQL$SQL2016)"停止...
SSMS处理
已存在d:\temp\system\ssms2017.exe,比对中...
d:\temp\system\ssms2017.exe hash 为7455391756727CBEEA2BA32E0C5BACBA,要求为324F66D14FD1A8A368DB208534FAA496
开始下载http://192.168.10.36/system/ssms2017.exe 到 d:\temp\system\ssms2017.exe ...
请等待 Microsoft SQL Server Management Studio 安装界面出现并完成交互
Microsoft SQL Server Management Studio 安装完成
火绒安全处理
火绒安全安装完成后请先退出一次
开始下载http://192.168.10.36/system/sysdiag.exe 到 d:\temp\system\sysdiag.exe ...
请等待 火绒安全 安装界面出现并完成交互
火绒安全 安装完成
PS C:\Windows\system32>
@@#
使用PowerShell实现服务器常用软件的无人值守安装的更多相关文章
- 一些常用软件的静默安装参数(nsis,msi,InstallShield,Inno)
打包的时候,经常需要安装一些其它的环境库,而又不想让用户繁锁的去选择,这时就需要静默安装,而不同的文件所加的参数了不一致,比如VS的环境库vcredist_x86.exe(这是32位的环境库)后面加/ ...
- Windows批处理:自动部署常用软件(静默安装)
一.简介 最近一直在测试使用域组策略自动部署软件,效果并不理想.首先,主机必须加入域才能让策略生效.其实是Windows Server 2012 R2只支持.msi格式的安装包,所以部署前需将软件重新 ...
- Linux服务器pxe+kickstart部署无人值守安装
一. 使用光盘镜像安装好一台Redhat6.8系统的虚拟机(图形化界面) 二. 部署相关服务程序 1. 安装并配置dhcpd服务程序 a)安装dhcp服务程序 b)对dhcp服务进 ...
- win10纯净版安装及其常用软件集锦(2020新年湘岳阳万江波整理)
win10纯净版安装及其常用软件集锦 1.安装win10纯净版:链接:https://pan.baidu.com/s/1L9yl-LNxxDQbEN_TGswzcA 提取码:u0pt 2.安装WPS2 ...
- 第六章、PXE高效网络装机、Kickstart无人值守安装
目录 一.部署PXE远程安装服务 1PXE定义 2PXE服务优点 3搭建网络体系前提条件 4PXE实现过程讲解 二.搭建PXE远程安装服务器 三.Kickstart无人值守安装 一.部署PXE远程安装 ...
- CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享
转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...
- Centos7服务器搭建部署显卡计算环境以及常用软件的安装使用
安装好anaconda的服务器上会more你已经安装好jupyter notebook,执行下面的命令可以提供链接地址允许远程浏览器打开并访问: jupyter notebook --no-brows ...
- Tomcat服务器常用配置和HTTP简介
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 【转】Ubuntu常用软件合集
[转]Ubuntu常用软件合集 Ubuntu常用软件合集 我用的使Ubuntu-Kylin14.04,原因呢主要是觉得使本土化的,自带了日历.输入法.优客助手等易于上手的应用.也省的每次安装完原生的系 ...
随机推荐
- POJ-1743 Musical Theme(最长不可重叠子串,后缀数组+二分)
A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the ...
- 2018HDU多校训练-3-Problem M. Walking Plan
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6331 Walking Plan Problem Description There are n inte ...
- sql service 从创建访问用户到数据库访问 【SQL】
create login [LoginMame] with password=[Pwd]--创建数据库登陆用户 create user [DBLoginName] for login [LoginMa ...
- JavaScript数组去重(12种方法,史上最全)
参考博客:https://segmentfault.com/a/1190000016418021?utm_source=tag-newest
- Test 1022
T1 AERODROM (二分答案 TimeLimit: 1000MS Memory Limit: 32768KB \(N\)个登机口,办理登机业务,第\(i\)个窗口的单位办理时间为\(T_i\), ...
- typeof 与 instanceof之间的区别
JS中会使用typeof 和 instanceof来判断一个变量是否为空或者是什么类型的. ES6规范中有7种数据类型,分别是基本类型和引用类型两大类 基本类型(简单类型.原始类型):String.N ...
- poj 1511 Invitation Cards (最短路)
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 33435 Accepted: 111 ...
- AQS系列(四)- ReentrantReadWriteLock读写锁的释放锁
前言 继续JUC包中ReentrantReadWriteLock的学习,今天学习释放锁. 一.写锁释放锁 入口方法 public void unlock() { sync.release(1); } ...
- 聊聊 Python 的内置电池
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/XzCqoCvcpFJt4A-E4WMqaA (一) 最近,我突然想到一 ...
- c++-变量,this指针,全局函数,成员函数,自定义数组类
区分变量属于哪个对象 c++对象管理模型初探 C++类对象中的成员变量和成员函数是分开存储的,C中内存四区仍然有效 C++编译器对普通成员函数的内部处理(隐藏this指针) this指针解决函数形参和 ...