Idealis Minecraft servo startup scriptor

Idealis Minecraft servo startup scriptor

Auctor ludum valde amat, et ipse administrator est parvi servi " mere pro amicis." Ut solet apud amantes, omnia servo modificata sunt, quod inconstantiam secumfert et, consequenter, fragores. Cum auctor Powershell melius sciat quam situm horreorum in platea sua facere decrevit "Optimus Scriptor Duc Minecraft MMXX" Idem scriptum fuit pro fundamento Formulae in Ruvds marketplace. Sed omnes fontes iam sunt in articulo. Vt autem omnia.

Praecepta opus est

Alternus logging

Uno die, duobus modis inauguratis, deprehendi servientem, ut videtur, sine bello indicto fragorem fuisse. Servus errores in latest.log vel in lusione non scripsit, et consolatorium, qui in theoria hunc errorem scripsisse debuit et cessavit, occlusum est.

Si scribere non vult, non indiget. Habemus Powershell cum cmdlet Tee-Objectquae simul rem accipit et ad limam et ad consolandum trahit.

.handler.ps1 | Tee-Object .StandardOutput.txt -Append

Hoc modo Powershell colliget StandardOutput et scribet ad limam. Noli uti Satus-Processusquia redibit System.ComponentModel.Component potius quam StandardOutput, et -RedirectStandardOutput in consolatorium ingredi non poterit, quod vitare volumus.

Argumenta launch

His insertis ut idem par mods, auctor animadvertit ministram etiam non satis habere RAM. Et hoc requirit varias rationes launches. Loco mutandi omni tempore in start.bat, quo quisque utitur, modo hac scriptura utetur.

Cum Tee-Objectum solum LatinOutput legit, cum exsecutabile vocatur "Iustum Hoc", aliud scriptum facere debebis. Hoc scriptum ab ipso Minecraft deducetur. De argumentis incipiamus.

Ut in ultimam segnitiem in posterum indulgeat, scriptura argumenta in muscam deducere debet. Hoc ut facias, incipe quaerendo versionem novissimam concinnant.

$forge = ((Get-ChildItem | Where-Object Name -Like "forge*").Name | Sort-Object -Descending) | Select-Object -last 1

Objectum quale- bus utendo semper accipiemus cum maximo numero, quotcumque ibi posuistis. Ultima segnities.

Nunc necesse est servo memoriam assignare. Ad hoc, sume quantitatem memoriae ratio et quantum in chordis scribe.

$ram = ((Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb)
$xmx = "-Xms" + $ram + "G"

Recta automatic sileo

Auctor tabellarios ab aliis hominibus .bat viderit, sed rationem non habuit cur minister omissus est. Hoc incommodum est, quid si modo opus est mod limam mutare vel aliquid delere?
Iam sileo quod rectum faciamus. Auctor antea invasit scripturas alienas quae servo restiterunt cuiuscumque rei causa ministri clausa sunt. Exitcode utemur. Java utitur 0 ut successu, sic hinc saltabimus.

Primum munus faciamus quod servo si defecerit.

function Get-MinecraftExitCode {
   
    do {
        
        if ($global:Process.ExitCode -ne 0) {
            Write-Log
            Restart-Minecraft
        }
        else {
            Write-Log
        }
 
    } until ($global:Process.ExitCode -eq 0)
    
}

Scriptum in ansa remanebit donec server normaliter deprimat a proprio solatorio utens mandato /stop.

Si omnia automate statuimus, tunc pulchrum esset tempus initium, diem completionem, ac etiam causam peractionis colligere.

Ad hoc efficiendum, exitum Satus-Processus in variabilem scribimus. In scripto sic videtur:

$global:Process = Start-Process -FilePath  "C:Program Files (x86)common filesOracleJavajavapath_target_*java.exe" -ArgumentList "$xmx -server -jar $forge nogui" -Wait -NoNewWindow -PassThru

Tum eventus ad limam scribimus. Hoc est quod nobis in incerto redditur;

$global:Process.StartTime
$global:Process.ExitCode	
$global:Process.ExitTime

Haec omnia addi possunt fasciculi Add-Content. Paululum commissum, hoc scriptum obtinemus, et appellemus tractorem.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

Nunc scriptorium faciamus tractorem immittens.

Verum startup

Auctor vult varias versiones Minecraft discurrere ab aliqua semita in uno modulo, et etiam in certo folder condere ligna.

Quaestio est, processum esse incipiendum ab utente qui ad systematis initium est. Hoc fieri potest per desktop vel WinRm. Si servo utentis systematis vel etiam administratoris curris, sed non aperi, tunc Server.jar etiam legere non poterit eula.txt et incipiet.

Lorem login efficere possumus, tres viscus ad registrarium addendo.

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

Non est tutum. Login et password hic in plaintext designantur, ut servo incipias creare debes separatum usorem qui in gradu usoris aditum habet, vel in coetus etiam angustiori. Stricte non commendatur ut administrator ad hoc utatur.

Nos auto- login digessi sumus. Nunc opus novum servitori mandare debes. Praeceptum de Powershell curremus, sic videbimus sicut hoc;

$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

Modulus convenientes

Nunc omnia mittamus in modulos qui postea adhiberi possunt. Totum codicem pro scriptis confectis hic adest, importat et utetur.

Omnia separatim descripta uti potes si modulis molestare non vis.

Satus-Minecraft

Primum, moduli efficiamus qui nihil aliud faciet quam quod scriptum currunt quod audiet et standardoutput recordabitur.

In parametris scandalum petit unde folder ut Minecraft immittendi et ubi truncum ponat.

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

Et sic necesse est mittere Minecraft:

Start-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft"

Nunc transeamus ad usum promptum Handler.ps1

Ut scripturae nostrae ambitum vocatum accipiamus, necesse est nobis etiam truncum modularem denotare. Quaeso nota, Oraculum Java decurrit, si diversam distributionem uteris, necesse est ut viam ad documentum exsecutabile mutare debeas.

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

Register-Minecraft

Scriptum fere idem est ac Start-Minecraft, excepto quod solum novum opus descriptum est. Iisdem rationibus accipit. Nomen usoris, si non specificatum est, hodiernam accipit.

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

Register-Autogon

In parametris obstruunt, scriptum acceptionibus Username et Password parametris. Si Username non datum est, nomen usoris currentis adhibetur.

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."
 
}

Hoc scriptum currit sic similis:

Set-Autologon -Password "PlaintextPassword"

Quam utor

Nunc at quam id ipsum auctor auctor. Quomodo servo publico in Fenestra Minecraft recte explicandam. Ab exordio sumamus exordium.

1. crea a user

$pass = Get-Credential
New-LocalUser -Name "MinecraftServer" -Password $pass.Password -AccountNeverExpires -PasswordNeverExpires -UserMayNotChangePassword

2. Register negotium currere scriptor

Moduli huius modi usus subcriptio potes:

Register-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft" -User "MInecraftServer" -TaskName "MinecraftStarter"

Aut instrumenta utere vexillum:

$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. Admitte auto- login et reboot machina

Set-Autologon -Username "MinecraftServer" -Password "Qw3"

completionem

Auctor scripturam sibi fecit, ob id ipsum, laetus erit ut tuas suggestiones audiat ad scripturam augendam. Auctor sperat totum hunc codicem tibi minime utilem fuisse, et articulum iucundam fuisse.

Idealis Minecraft servo startup scriptor

Source: www.habr.com