เบเบนเปเบเบฝเบเบฎเบฑเบเปเบเบกเบซเบผเบฒเบ, เปเบฅเบฐเบฅเบฒเบงเปเบญเบเปเบเบฑเบเบเบนเปเบเปเบฅเบดเบซเบฒเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฐเบซเบเบฒเบเบเปเบญเบ "เบชเปเบฒเบฅเบฑเบเบซเบกเบนเปเปเบเบทเปเบญเบเบขเปเบฒเบเบเบฝเบง." เบเบฒเบกเบเบปเบเบเบฐเบเบดเปเบเบเบฑเบเบเบฒเบเบฑเบเบชเบกเบฑเบเปเบฅเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเปเบเบทเบเบเบฑเบเปเบเบ, เปเบฅเบฐเบเบตเปเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเปเปเบชเบฐเบเบฝเบเบฅเบฐเบเบฒเบเปเบฅเบฐ, เบเบฑเปเบเบเบฑเปเบ, เบเบฑเบเบเปเบญเบ. เบเบฑเบเบเบฑเปเบเปเบเปเบเบนเปเบเบฝเบเบเบญเบ Powershell เบฎเบนเปเบเบตเบเบงเปเบฒเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเบฎเปเบฒเบเบขเบนเปเบเบฐเบซเบเบปเบเบเบญเบเบฅเบฒเบง, เบฅเบฒเบงเปเบเปเบเบฑเบเบชเบดเบเปเบเปเบฎเบฑเบ "Script เบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบเบทเปเบญเปเบเบตเบเบเบปเบง Minecraft 2020" script เบเบฝเบงเบเบฑเบเปเบเปเบฎเบฑเบเบเบดเบเบเบญเบเปเบเบฑเบเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเปเบกเปเปเบเบเปเบ
เบเปเบฒเบชเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ
เบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเปเบฅเบทเบญเบ
เบกเบทเปเบซเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบ mods เบชเบญเบเบชเบฒเบกเบญเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบปเปเบเบเบปเบเบงเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเบฒเบเบปเบเบเบทเปเบ, crashing เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฐเบเบฒเบเบชเบปเบเบเบฒเบก. เปเบเบตเบเปเบงเบตเบเปเปเปเบเปเบเบฝเบเบเปเปเบเบดเบเบเบฒเบเปเบ latest.log เบซเบผเบทเปเบ debug, เปเบฅเบฐ console, เปเบเบดเปเบเปเบเบเบฒเบเบเบดเบเบชเบฐเบเบตเบเบงเบเบเบฐเบเบฝเบเบเปเปเบเบดเบเบเบฒเบเบเบตเปเปเบฅเบฐเบขเบธเบ, เบเบดเบ.
เบเปเบฒเบฅเบฒเบงเบเปเปเบเปเบญเบเบเบฒเบเบเบฝเบ, เบฅเบฒเบงเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบ. เบเบงเบเปเบฎเบปเบฒเบกเบต Powershell เบเบฑเบ cmdlet Tee-เบงเบฑเบเบเบธ, เปเบเบดเปเบเปเบเปเปเบงเบฅเบฒเบงเบฑเบเบเบธเปเบฅเบฐเบชเบปเปเบเบกเบฑเบเปเบเบซเบฒเปเบเบฅเปเปเบฅเบฐ console เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ.
.handler.ps1 | Tee-Object .StandardOutput.txt -Append
เบเปเบงเบเบงเบดเบเบตเบเบตเป, Powershell เบเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒ StandardOutput เปเบฅเบฐเบเบฝเบเบกเบฑเบเปเบชเปเปเบเบฅเป. เบขเปเบฒเบเบฐเบเบฒเบเบฒเบกเปเบเป เบเบฐเบเบงเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบฐเบเบฑเบเบเบทเบ System.ComponentModel.Component เปเบฅเบฐเบเปเปเปเบกเปเบ StandardOutput, เปเบฅเบฐ -RedirectStandardOutput เบเบฐเปเบฎเบฑเบเปเบซเปเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเปเบ console เปเบเป, เปเบเบดเปเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบซเบผเบตเบเปเบงเบฑเปเบ.
เปเบเบตเบเบเบฒเบเปเบเปเบเบฝเบ
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบ mods เบเบนเปเบเบฝเบงเบเบฑเบ, เบเบนเปเบเบฝเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเบเบเปเปเบกเบต RAM เบเบฝเบเบเป. เปเบฅเบฐเบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบฒเบเปเบเปเบเบฝเบเบเบฒเบเปเบเบตเบเบเบปเบง. เปเบเบเบเบตเปเบเบฐเบเปเบฝเบเบเบงเบเบกเบฑเบเบเบธเบเบเบฑเปเบเปเบ start.bat, เบเบตเปเบเบธเบเบเบปเบเปเบเป, เบเบฝเบเปเบเปเปเบเป script เบเบตเป.
เปเบเบทเปเบญเบเบเบฒเบ Tee-Object เบเบฝเบเปเบเปเบญเปเบฒเบ StandardOutput เปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบดเบเบฑเบเปเบเปเบเบทเบเปเบญเบตเปเบเบงเปเบฒ "เบเบทเบเบฑเบเบเบฑเบเบเบตเป", เบเปเบฒเบเบเบฐเบเปเบญเบเบชเปเบฒเบเบชเบฐเบเบดเบเบญเบทเปเบ. script เบเบตเปเบเบฐเบเบทเบเปเบเบตเบเบเบปเบงเปเบเบ Minecraft เปเบญเบ. เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเปเบเปเบเบฝเบ.
เปเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบฐ indulge เบเบฑเบ laziness เบชเบธเบเบเปเบฒเบเปเบเบญเบฐเบเบฒเบเบปเบ, script เบเปเบญเบเปเบเบฑเบเบเปเบฒเบเปเปเปเบเปเบเบฝเบเบเบฒเบเปเบเบตเบเบเบปเบงเปเบเบเบฑเบเบเบต. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบฒเบเบเบญเบเบซเบฒเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบ forge.
$forge = ((Get-ChildItem | Where-Object Name -Like "forge*").Name | Sort-Object -Descending) | Select-Object -last 1
เบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเบฑเบเบฅเบฝเบเบงเบฑเบเบเบธ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบญเบปเบฒเบงเบฑเบเบเบธเบเบตเปเบกเบตเบเปเบฒเบเบงเบเปเบซเบเปเบเบตเปเบชเบธเบ, เบเปเปเบงเปเบฒเบเปเบฒเบเบเบฐเบงเบฒเบเบเบงเบเบกเบฑเบเปเบชเปเบเปเบญเบเบเบฑเปเบเบซเบผเบฒเบเบเบฒเบเปเบ. เบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบ.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบกเบญเบเบซเบกเบฒเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบซเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบญเบปเบฒเบเปเบฒเบเบงเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบญเบเบฅเบฐเบเบปเบเปเบฅเบฐเบเบฝเบเบเปเบฒเบเบงเบเบเบญเบเบกเบฑเบเบขเบนเปเปเบเบชเบฐเบเบฃเบดเบ.
$ram = ((Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb)
$xmx = "-Xms" + $ram + "G"
เปเบเปโเปเบโเบเบดเบโเปเบเบตเบโเบญเบฑเบโเบเบฐโเปเบโเบกเบฑเบโ
เบเบนเปเบเบฝเบเปเบเปเปเบซเบฑเบเปเบเบฅเป .bat เบเบฒเบเบเบปเบเบญเบทเปเบ, เปเบเปเบเบงเบเปเบเบปเบฒเบเปเปเปเบเปเบเปเบฒเบเบถเบเปเบเบดเบเปเบซเบเบเบปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบถเปเบเบเบทเบเบขเบธเบ. เบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเปเปเบชเบฐเบเบงเบ, เบเปเบฒเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเปเบฝเบเปเบเบฅเป mod เบซเบผเบทเบฅเบถเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ?
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเปเบฅเบตเปเบกเบฃเบตเบชเบฐเบเบฒเบเบเบตเปเบเบทเบเบเปเบญเบ. เบเปเบญเบเปเปเบฒเบเบตเปเบเบนเปเบเบฝเบเปเบเปเบเบปเบเบชเบฐเบเบฃเบดเบเปเบเบเปเบเบตเปเปเบฅเบตเปเบกเปเบเบตเบเปเบงเบตเบเบทเบเปเปเปเปเบเบเบเปเปเบชเบปเบเปเบฅเบทเปเบญเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเปเบเบตเบเปเบงเบตเบเบดเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป exitcode. Java เปเบเป 0 เปเบเบฑเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบฑเปเบเบเบฒเบเบเบตเป.
เบเปเบฒเบญเบดเบ, เปเบซเปเบชเปเบฒเบเบซเบเปเบฒเบเบตเปเบเบตเปเบเบฐ restart server เบเปเบฒเบกเบฑเบเบฅเบปเปเบกเปเบซเบฅเบง.
function Get-MinecraftExitCode {
do {
if ($global:Process.ExitCode -ne 0) {
Write-Log
Restart-Minecraft
}
else {
Write-Log
}
} until ($global:Process.ExitCode -eq 0)
}
เบชเบฐเบเบฃเบดเบเบเบฐเบเบฑเบเบเบปเบเบขเบนเปเปเบเบงเบปเบเบเบญเบเบเบปเบเบเปเบงเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบดเบเบเบปเบเบเบฐเบเบดเบเบฒเบ console เบเบญเบเบเบปเบเปเบญเบเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ /stop.
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบชเบดเบเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบธเบเบขเปเบฒเบ, เบกเบฑเบเบเบฐเบเบตเบเบตเปเบเบฐเปเบเบฑเบเบเปเบฒเบงเบฑเบเบเบตเปเบฅเบตเปเบกเบเบปเปเบ, เบงเบฑเบเบเบตเบชเปเบฒเปเบฅเบฑเบ, เปเบฅเบฐเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเปเบฅเบฑเบ.
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบ Start-Process เปเบเบปเปเบฒเปเบเปเบเบเบปเบงเปเบ. เปเบ script เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
$global:Process = Start-Process -FilePath "C:Program Files (x86)common filesOracleJavajavapath_target_*java.exe" -ArgumentList "$xmx -server -jar $forge nogui" -Wait -NoNewWindow -PassThru
เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฝเบเบเบปเบเปเบเปเบฎเบฑเบเปเบชเปเปเบเบฅเป. เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบทเบเบชเบปเปเบเบเบฑเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบปเบงเปเบ:
$global:Process.StartTime
$global:Process.ExitCode
$global:Process.ExitTime
เบเบฑเบเปเบปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเปเบกเปเบชเปเปเบเบฅเปเปเบเบเปเบเป Add-Content. เปเบเบเปเบเปเบฅเบงเบเบฅเบงเบกเบกเบฑเบเปเบฅเบฑเบเบเปเบญเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบชเบฐเบเบดเบเบเบตเป, เปเบฅเบฐเปเบซเปเปเบเบซเบฒเบกเบฑเบ 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
เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบชเบฐเบเบดเบเบเบตเปเปเบเบตเบเบเบปเบงเบเบปเบงเบเบฑเบเบเบฒเบ.
เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบทเบเบเปเบญเบ
เบเบนเปเบเบฝเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบชเบฐเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบ Minecraft เบเบฒเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบเบถเปเบเปเบเบซเบเบถเปเบเปเบกเบเบนเบ, เปเบฅเบฐเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฑเบเบเบถเบเปเบเปเบเบเปเบเบตเบชเบฐเปเบเบฒเบฐ.
เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเบเบฐเบเบงเบเบเบฒเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบนเปเปเบเปเบเบตเปเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบ desktop เบซเบผเบท WinRm. เบเปเบฒเบเปเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฑเบเบเบนเปเปเบเปเบฅเบฐเบเบปเบเบซเบผเบทเปเบกเปเบเบฐเบเบฑเปเบเบเบนเปเบเปเบฅเบดเบซเบฒเบ, เปเบเปเบเปเปเปเบเปเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ Server.jar เบเบฐเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบ eula.txt เปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบเป.
เบเบงเบโเปเบฎเบปเบฒโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเปเบเบปเปเบฒโเบชเบนเปโเบฅเบฐโเบเบปเบโเบญเบฑเบโเบเบฐโเปเบโเบกเบฑเบโเปเบเบโเบเบฒเบโเปเบเบตเปเบกโเบชเบฒเบกโเบเบฒเบโเปเบเบปเปเบฒโเปเบโเปเบโเบเบฒเบโเบเบปเบโเบเบฐโเบเบฝเบโ.
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
เบกเบฑเบเบเปเปเบเบญเบเปเบ. เบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบกเปเบเบชเบฐเปเบเบเบขเบนเปเปเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบกเบฐเบเบฒ, เบเบฑเปเบเบเบฑเปเบเปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบนเปเปเบเปเปเบเบเบเปเบฒเบเบซเบฒเบเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบฅเบฐเบเบฑเบเบเบนเปเปเบเป, เบซเบผเบทเบขเบนเปเปเบเบเบธเปเบกเบเบตเปเปเบเบเบเบงเปเบฒ. เบกเบฑเบเบเปเปเปเบเปเบเบทเบเปเบเบฐเบเปเบฒเปเบซเปเปเบเปเบเบนเปเบเปเบฅเบดเบซเบฒเบเบกเบฒเบเบเบฐเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเปเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบ.
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบฑเบโเบญเบญเบโเบเบฒเบโเบเบฒเบโเปเบเบปเปเบฒโเบชเบนเปโเบฅเบฐโเบเบปเบโเบญเบฑเบโเบเบฐโเปเบโเบกเบฑเบโ. เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบปเบเบเบฐเบเบฝเบเบงเบฝเบเบเบฒเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเบฒเบ Powershell, เบเบฑเปเบเบเบฑเปเบเบกเบฑเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป:
$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
เบเบฒเบเบเบฐเบเบญเบเปเบกเบเบนเบ
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเปเบญเบปเบฒเบเบธเบเบขเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเปเบกเบเบนเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเปเปเบเบเบฒเบเบซเบผเบฑเบ. เบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบดเบเบเบตเปเบเบฝเบกเบเปเบญเบกเปเบกเปเบเบขเบนเปเบเบตเปเบเบตเป, เบเปเบฒเปเบเบปเปเบฒเปเบฅเบฐเบเปเบฒเปเบเป.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบธเบเบขเปเบฒเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเปเบฒเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบฅเบปเบเบเบงเบเบเบฑเบเปเบกเบเบนเบ.
เปเบฅเบตเปเบก-Minecraft
เบเปเบฒเบญเบดเบ, เปเบซเปเปเบฎเบปเบฒเบชเปเบฒเบเปเบกเบเบนเบเบเบตเปเบเบฐเปเบฎเบฑเบเบซเบเบฑเบเบซเบผเบฒเบเบเปเบงเบฒเปเบฅเปเบ script เบเบตเปเบเบฐเบเบฑเบเปเบฅเบฐเบเบฑเบเบเบถเบเบกเบฒเบเบเบฐเบเบฒเบเบเบปเบเบเบฐเบฅเบดเบ.
เปเบเบเบฅเบฑเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบต, เบฅเบฒเบงเบเบฒเบกเบงเปเบฒเปเบเบเปเบเบตเปเบเบเบตเปเบเบฐเปเบเบตเบ Minecraft เปเบฅเบฐเบเปเบญเบเบเบตเปเบเบฐเบงเบฒเบเบเบฑเบเบเบถเบ.
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
เปเบฅเบฐเบเปเบฒเบเบเบฐเบเปเบญเบเปเบเบตเบ Minecraft เปเบเบเบเบตเป:
Start-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft"
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเบเปเบฒเบงเปเบเบชเบนเป Handler.ps1 เบเบตเปเบเปเบญเบกเปเบเปเปเบฅเปเบง
เปเบเบทเปเบญเปเบซเป script เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบญเบกเบฎเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเปเบงเบฅเบฒเบเบตเปเปเบญเบตเปเบเบงเปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบฅเบฐเบเบธเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ block. เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบ, เบกเบฑเบเปเบฅเปเบ Oracle Java, เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบเปเบเบฒเบเปเบเบเบขเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเปเบฒเบเบเบฐเบเปเบญเบเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเป.
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
เบฅเบปเบเบเบฐเบเบฝเบ Minecraft
script เปเบกเปเบเบเบฐเบเบดเบเบฑเบเบเบทเบเบฑเบเบเบฑเบ Start-Minecraft, เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบกเบฑเบเบเบฝเบเปเบเปเบฅเบปเบเบเบฐเบเบฝเบเบงเบฝเบเบเบฒเบเปเบซเบกเป. เบเบญเบกเบฎเบฑเบเบเบฒเบเปเบเปเบเบฝเบเบเบฝเบงเบเบฑเบ. เบเบทเปเบเบนเปเปเบเป, เบเปเบฒเบเปเปเปเบเปเบฅเบฐเบเบธ, เปเบญเบปเบฒเบเบทเปเบเบฐเบเบธเบเบฑเบ.
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
เบฅเบปเบเบเบฐเบเบฝเบ-Autologon
เปเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเบ, script เบเบญเบกเบฎเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบทเปเบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบ. เบเปเบฒเบเบทเปเบเบนเปเปเบเปเบเปเปเปเบเปเบเบทเบเบฅเบฐเบเบธ, เบเบทเปเบเบนเปเปเบเปเบเบฐเบเบธเบเบฑเบเปเบกเปเบเบเบทเบเบเปเบฒเปเบเป.
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."
}
เบเบฒเบเปเบฅเปเบเบชเบฐเบเบฃเบดเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒ:
Set-Autologon -Password "PlaintextPassword"
เบงเบดเบเบตเปเบเป
เบเบญเบเบเบตเปเปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบนเปเบเบฝเบเปเบญเบเปเบเปเบเบฑเบเบซเบกเบปเบเบเบตเป. เบงเบดเบเบตเบเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Minecraft เบชเบฒเบเบฒเบฅเบฐเบเบฐเปเบ Windows เบขเปเบฒเบเบเบทเบเบเปเบญเบ. เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบ.
1. เบชเปเบฒเบเบเบนเปเปเบเป
$pass = Get-Credential
New-LocalUser -Name "MinecraftServer" -Password $pass.Password -AccountNeverExpires -PasswordNeverExpires -UserMayNotChangePassword
2. เบฅเบปเบเบเบฐเบเบฝเบเบงเบฝเบเปเบเบทเปเบญเปเบฅเปเบเบชเบฐเบเบฃเบดเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเปเบเบเปเบเปเปเบกเบเบนเบเปเบเบฑเปเบเบเบตเป:
Register-Minecraft -Type Forge -LogFile "C:minecraftstdout.txt" -MinecraftPath "C:minecraft" -User "MInecraftServer" -TaskName "MinecraftStarter"
เบซเบผเบทเปเบเปเปเบเบทเปเบญเบเบกเบทเบกเบฒเบเบเบฐเบเบฒเบ:
$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. เปเบเบตเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ เปเบฅเบฐเบเบดเบเปเบเบตเบเปเบเบทเปเบญเบเบเบทเบเปเปเป
Set-Autologon -Username "MinecraftServer" -Password "Qw3"
เบเบฒเบเบชเปเบฒเปเบฅเบฑเบ
เบเบนเปเบเบฝเบเปเบเปเบเบฝเบเบเบปเบ, เบฅเบงเบกเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบปเบเปเบญเบ, เบเบฑเปเบเบเบฑเปเบ, เบฅเบฒเบงเบเบดเบเบเบตเบเบตเปเบเบฐเบเบฑเบเบเปเบฒเปเบเบฐเบเปเบฒเบเบญเบเบเปเบฒเบเปเบเบทเปเบญเบเบฑเบเบเบธเบเบเบปเบงเบซเบเบฑเบเบชเบท. เบเบนเปเบเบฝเบเบซเบงเบฑเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบกเปเบเบซเบเปเบญเบเบเบตเปเบชเบธเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฑเบเบเปเบฒเบ, เปเบฅเบฐเบงเปเบฒเบเบปเบเบเบงเบฒเบกเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com