Ko te kaituhi e tino aroha ana ki te keemu, a ko ia ano te kaiwhakahaere o tetahi kaitoro iti "mo nga hoa." Ka rite ki nga wa o nga runaruna, ka whakarereketia nga mea katoa i runga i te tūmau, ka uru mai te koretake, ka mutu, ka pakaru. I te mea he pai ake te mohio o te kaituhi o Powershell ki te waahi o nga toa i tana tiriti, ka whakatau ia ki te hanga "Hōtuhi Pai ki te Whakarewa Minecraft 2020" Ko taua tuhinga ano te turanga mo te tauira i roto
Ko nga whakahau e hiahiatia ana e tatou
Takitaki rereke
I tetahi ra, i muri i te whakauru i etahi atu mods, ka kitea e au ko te tūmau, te ahua, kei te pakaru me te kore korero whawhai. Kaore te tūmau i tuhi hapa i roto i te latest.log, i roto ranei i te patuiro, me te papatohu, i roto i te ariā me tuhi tenei hapa ka mutu, ka kati.
Mena kaore ia e hiahia ana ki te tuhi, kaore ia e hiahia. Kei a matou Powershell me te cmdlet Tee Ahanoa, ka mau i tetahi ahanoa ka whakaputa ki te konae me te papatohu i te wa ano.
.handler.ps1 | Tee-Object .StandardOutput.txt -Append
Ma tenei ara, ka kohia e Powershell te PaerewaOutput ka tuhia ki tetahi konae. Kaua e ngana ki te whakamahi Tukatuka-Timatano te mea ka hoki mai te System.ComponentModel.Component ehara i te PaerewaOutput, a -RedirectStandardOutput ka kore e taea te uru ki roto i te papatohu, koinei te mea e hiahia ana matou ki te karo.
Whakarewa tohenga
I muri i te whakaurunga o taua rua o nga mods, ka kite te kaituhi kaore i te nui te RAM o te tūmau. Na tenei me whakarereke nga tohenga whakarewatanga. Engari ki te whakarereke i nga wa katoa i roto i te start.bat, ka whakamahia e te katoa, whakamahia noa tenei tuhinga.
I te mea ko te Tee-Object ka panui noa i te PaerewaOutput ka kiia ko te mea whakahaere "Penei ano", me hanga e koe tetahi atu tuhinga. Ka whakarewahia tenei tuhinga e Minecraft ake. Me timata ki nga tautohetohe.
Kia pai ai te mangere a muri ake nei, me kohi tohenga whakarewatanga i runga i te rere. Ki te mahi i tenei, me timata ma te rapu mo te putanga hou toha.
$forge = ((Get-ChildItem | Where-Object Name -Like "forge*").Name | Sort-Object -Descending) | Select-Object -last 1
Ma te whakamahi i te ahanoa-whakapapa, ka mau tonu matou i te ahanoa me te tau nui rawa, ahakoa te maha o aua mea ka waiho e koe. Te mangere mutunga.
Inaianei me tautapa te mahara ki te tūmau. Ki te mahi i tenei, tangohia te nui o te mahara o te punaha ka tuhia tona nui ki te aho.
$ram = ((Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb)
$xmx = "-Xms" + $ram + "G"
Whakatikahia te whakaoho aunoa
Kua kite te kaituhi i nga konae .bat mai i etahi atu tangata, engari kaore ratou i aro ki te take i aukatia ai te tūmau. He raruraru tenei, mehemea ka hiahia koe ki te whakarereke i te konae mod me te whakakore ranei i tetahi mea?
Inaianei me mahi ano i te tiimata tika. I kite te kaituhi i nga tuhinga rereke i timata ano i te tūmau ahakoa he aha te take i tutakina ai te tūmau. Ka whakamahia e matou te waehere putanga. Ka whakamahi a Java i te 0 hei angitu, no reira ka kanikani tatou i konei.
Tuatahi, me hanga he mahi hei whakaara ano i te tūmau mena ka rahua.
function Get-MinecraftExitCode {
do {
if ($global:Process.ExitCode -ne 0) {
Write-Log
Restart-Minecraft
}
else {
Write-Log
}
} until ($global:Process.ExitCode -eq 0)
}
Ka noho tonu te tuhinga ki roto i te kohanga kia kati ra ano te tūmau mai i tana ake papatohu ma te whakamahi i te tono /mutu.
Mena ka whakatau tatou ki te whakaaunoa i nga mea katoa, katahi ka pai ki te kohi i te ra tiimata, te ra otinga, me te take hoki mo te otinga.
Ki te mahi i tenei, ka tuhia e matou te hua o te Tukatuka-Tīmata ki te taurangi. I roto i te tuhinga he penei te ahua:
$global:Process = Start-Process -FilePath "C:Program Files (x86)common filesOracleJavajavapath_target_*java.exe" -ArgumentList "$xmx -server -jar $forge nogui" -Wait -NoNewWindow -PassThru
Na ka tuhia e matou nga hua ki tetahi konae. Koinei te mea i whakahokia mai ki a matou i roto i te taurangi:
$global:Process.StartTime
$global:Process.ExitCode
$global:Process.ExitTime
Ka taea te taapiri i enei mea katoa ki tetahi konae ma te whakamahi i te Tāpiri-Ihirangi. Ka heru iti, ka whiwhi tatou i tenei tuhinga, ka kiia ko handler.ps1.
Add-Content -Value "Start time:" -Path $Logfile
$global:Process.StartTime
Add-Content -Value "Exit code:" -Path $Logfile
$global:Process.ExitCode | Add-Content $Logfile
Add-Content -Value "Exit time:" -Path $Logfile
$global:Process.ExitTime | Add-Content $Logfile
Inaianei me hanga he tuhinga hei whakarewa i te kaikawe.
Whakaoho tika
Kei te hiahia te kaituhi ki te whakahaere i nga momo momo momo Minecraft mai i tetahi ara i roto i te waahanga kotahi, ka taea hoki te penapena i nga raarangi ki tetahi kōpaki motuhake.
Ko te raruraru ko te tukanga me timata e te kaiwhakamahi kua takiuru ki te punaha. Ka taea tenei ma te papamahi, WinRm ranei. Mena kei te whakahaere koe i te tūmau hei kaiwhakamahi punaha, he kaiwhakahaere ranei, engari kaua e takiuru, karekau e taea e Server.jar te panui eula.txt ka tiimata.
Ka taea e taatau te whakauru aunoa ma te taapiri i nga urunga e toru ki te rehita.
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultUserName -Value $Username -ErrorAction SilentlyContinue
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultPassword -Value $Password -ErrorAction SilentlyContinue
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name AutoAdminLogon -Value 1 -ErrorAction SilentlyContinue
Kaore i te haumaru. Ko te takiuru me te kupuhipa e tohuhia ana i konei i roto i te kupu tuhi, no reira ki te timata i te tūmau me hanga e koe he kaiwhakamahi motuhake e uru ana ki te taumata kaiwhakamahi, i roto ranei i te roopu whaiti. Kaore i te tino tūtohutia kia whakamahia he kaiwhakahaere paerewa mo tenei.
I tohua e matou te takiuru-aunoa. Inaianei me rehita koe i tetahi mahi hou mo te tūmau. Ka whakahaerehia e matou te whakahau mai i Powershell, na ka penei te ahua:
$Trigger = New-ScheduledTaskTrigger -AtLogOn
$User = "ServerAdmin"
$PS = New-ScheduledTaskAction -Execute 'PowerShell.exe" -Argument "Start-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft"'
Register-ScheduledTask -TaskName "StartSSMS" -Trigger $Trigger -User $User -Action $PS -RunLevel Highest
Te whakaemi i te kōwae
Inaianei me whakauru nga mea katoa ki roto i nga waahanga ka taea te whakamahi i muri mai. Ko nga waehere katoa mo nga tuhinga kua oti te hanga kei konei, kawemai me te whakamahi.
Ka taea e koe te whakamahi wehe i nga mea katoa i whakaahuahia i runga ake nei mena kaore koe e pai ki te whakararuraru i nga waahanga.
Tīmata-Minecraft
Tuatahi, me hanga he kōwae e kore e mahi i tua atu i te whakahaere i te tuhinga ka whakarongo me te tuhi i nga putanga paerewa.
I roto i te paraka tawhā, ka patai ia ko tehea te kōpaki hei whakarewa i te Minecraft me te waahi ka waiho te raarangi.
Set-Location (Split-Path $MyInvocation.MyCommand.Path)
function Start-Minecraft {
[CmdletBinding()]
param (
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]
$LogFile,
[Parameter(Mandatory)]
[ValidateSet('Vanilla', 'Forge')]
[ValidateNotNullOrEmpty()]
[string]
$Type,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string[]]
$MinecraftPath
)
powershell.exe -file .handler.ps1 -type $type -MinecraftPath $MinecraftPath | Tee-Object $LogFile -Append
}
Export-ModuleMember -Function Start-Minecraft
Na ka hiahia koe ki te whakarewa i te Minecraft penei:
Start-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft"
Inaianei me neke atu ki te Handler kua rite ki te whakamahi.ps1
Kia taea ai e to maatau tuhinga te whakaae ki nga tawhā ka karangahia, me tohu ano he paraka tawhā. Kia mahara, kei te whakahaere i te Oracle Java, mena kei te whakamahi koe i tetahi tohatoha rereke ka hiahia koe ki te huri i te ara ki te konae ka taea.
param (
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$type,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$MinecraftPath,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$StandardOutput
)
Set-Location $MinecraftPath
function Restart-Minecraft {
Write-host "=============== Starting godlike game server ============"
$forge = ((Get-ChildItem | Where-Object Name -Like "forge*").Name | Sort-Object -Descending) | Select-Object -first 1
$ram = ((Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb)
$xmx = "-Xms" + $ram + "G"
$global:Process = Start-Process -FilePath "C:Program Files (x86)common filesOracleJavajavapath_target_*java.exe" -ArgumentList "$xmx -server -jar $forge nogui" -Wait -NoNewWindow -PassThru
}
function Write-Log {
Write-host "Start time:" $global:Process.StartTime
Write-host "Exit code:" $global:Process.ExitCode
Write-host "Exit time:" $global:Process.ExitTime
Write-host "=============== Stopped godlike game server ============="
}
function Get-MinecraftExitCode {
do {
if ($global:Process.ExitCode -ne 0) {
Restart-Minecraft
Write-Log
}
else {
Write-Log
}
} until ($global:Process.ExitCode -eq 0)
}
Get-MinecraftExitCode
Rēhita-Minecraft
He rite tonu te tuhi ki te Start-Minecraft, engari ka rehita noa he mahi hou. Ka whakaae ki nga tohenga rite. Ko te ingoa kaiwhakamahi, mena kaore i tohua, ka mau i te ingoa o naianei.
function Register-Minecraft {
[CmdletBinding()]
param (
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]
$LogFile,
[Parameter(Mandatory)]
[ValidateSet('Vanilla', 'Forge')]
[ValidateNotNullOrEmpty()]
[string]$Type,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$MinecraftPath,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$User,
[Parameter(Mandatory)]
[string]$TaskName = $env:USERNAME
)
$Trigger = New-ScheduledTaskTrigger -AtLogOn
$arguments = "Start-Minecraft -Type $Type -LogFile $LogFile -MinecraftPath $MinecraftPath"
$PS = New-ScheduledTaskAction -Execute "PowerShell" -Argument "-noexit -command $arguments"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $PS -RunLevel Highest
}
Export-ModuleMember -Function Register-Minecraft
Rēhita-Autologon
I roto i te paraka tawhā, ka whakaae te tuhinga ki nga tawhā Ingoa Kaiwhakamahi me te Kupuhipa. Mena kaore i tohua te Ingoa Kaiwhakamahi, ka whakamahia te ingoa o te kaiwhakamahi o naianei.
function Set-Autologon {
param (
[Parameter(
HelpMessage="Username for autologon")]
$Username = $env:USERNAME,
[Parameter(Mandatory=$true,
HelpMessage="User password")]
[ValidateNotNullOrEmpty()]
$Password
)
$i = Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon"
if ($null -eq $i) {
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultUserName -Value $Username
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultPassword -Value $Password
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name AutoAdminLogon -Value 1
Write-Verbose "Set-Autologon will enable user auto logon."
}
else {
Set-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultUserName -Value $Username
Set-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name DefaultPassword -Value $Password
Set-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" -Name AutoAdminLogon -Value 1
}
Write-Verbose "Autologon was set successfully."
}
Ko te whakahaere i tenei tuhinga penei te ahua:
Set-Autologon -Password "PlaintextPassword"
Me pehea te whakamahi
Inaianei ka titiro tatou ki te pehea o te kaituhi i te whakamahi i enei mea katoa. Me pehea te whakatakoto tika i te tūmau Minecraft tūmatanui ki Windows. Kia timata mai i te timatanga.
1. Waihangahia he kaiwhakamahi
$pass = Get-Credential
New-LocalUser -Name "MinecraftServer" -Password $pass.Password -AccountNeverExpires -PasswordNeverExpires -UserMayNotChangePassword
2. Rēhitahia te mahi hei whakahaere i te tuhinga
Ka taea e koe te rehita ma te whakamahi i tetahi waahanga penei:
Register-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft" -User "MInecraftServer" -TaskName "MinecraftStarter"
Whakamahia ranei nga taputapu paerewa:
$Trigger = New-ScheduledTaskTrigger -AtLogOn
$User = "ServerAdmin"
$PS = New-ScheduledTaskAction -Execute 'PowerShell.exe" -Argument "Start-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft"'
Register-ScheduledTask -TaskName "StartSSMS" -Trigger $Trigger -User $User -Action $PS -RunLevel Highest
3. Whakahohehia te takiuru-aunoa ka whakaara ano i te miihini
Set-Autologon -Username "MinecraftServer" -Password "Qw3"
Whakaoti
Na te kaituhi i hanga te tuhinga, tae atu ki a ia ano, no reira, ka koa ia ki te whakarongo ki o whakaaro mo te whakapai ake i te tuhinga. Ko te tumanako o te kaituhi ko enei waehere katoa he iti rawa te whai hua ki a koe, a he mea whakamere te tuhinga.
Source: will.com