Ko te tino pai o te tuhinga whakaoho tūmau Minecraft

Ko te tino pai o te tuhinga whakaoho tūmau Minecraft

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 Ruvds maakete. Engari ko nga puna katoa kei roto i te tuhinga. Na, i runga i te raupapa, me pehea te mahi katoa.

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.

Ko te tino pai o te tuhinga whakaoho tūmau Minecraft

Source: will.com

Tāpiri i te kōrero