เจ†เจฆเจฐเจธเจผ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจธเจฐเจตเจฐ เจธเจŸเจพเจฐเจŸเจ…เฉฑเจช เจธเจ•เฉเจฐเจฟเจชเจŸ

เจ†เจฆเจฐเจธเจผ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจธเจฐเจตเจฐ เจธเจŸเจพเจฐเจŸเจ…เฉฑเจช เจธเจ•เฉเจฐเจฟเจชเจŸ

เจฒเฉ‡เจ–เจ• เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจชเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เจน เจ–เฉเจฆ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจธเจฐเจตเจฐ เจฆเจพ เจชเฉเจฐเจธเจผเจพเจธเจ• เจนเฉˆ, โ€œเจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‹เจธเจคเจพเจ‚ เจฒเจˆโ€เฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจผเฉŒเจ•เฉ€เจจเจพเจ‚ เจตเจฟเฉฑเจš เจ†เจฎ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ…เจธเจฅเจฟเจฐเจคเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจฆเจพ เจฒเฉ‡เจ–เจ• เจ†เจชเจฃเฉ€ เจ—เจฒเฉ€ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเจพเจฒเฉ‹เจ‚ เจฌเจฟเจนเจคเจฐ เจœเจพเจฃเจฆเจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‰เจธเจจเฉ‡ "" เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ 2020 เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจธเจ•เฉเจฐเจฟเจชเจŸ" เจตเจฟเฉฑเจš เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจฆเฉ‡ เจ†เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ•เฉ‹ เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ Ruvds เจฌเจพเจœเจผเจพเจฐ. เจชเจฐ เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจค เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจนเจจ. เจนเฉเจฃ, เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš, เจ‡เจน เจธเจญ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€.

เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆ เจนเฉเจ•เจฎ

เจตเจฟเจ•เจฒเจชเจ• เจฒเฉŒเจ—เจฟเฉฐเจ—

เจ‡เฉฑเจ• เจฆเจฟเจจ, เจ•เฉเจ เจนเฉ‹เจฐ เจฎเฉ‹เจก เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจ–เฉ‹เจœเจฟเจ† เจ•เจฟ เจธเจฐเจตเจฐ, เจœเจผเจพเจนเจฐ เจคเฉŒเจฐ 'เจคเฉ‡, เจœเฉฐเจ— เจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจฐเจฟเจนเจพ เจธเฉ€เฅค เจธเจฐเจตเจฐ เจจเฉ‡ latest.log เจœเจพเจ‚ เจกเฉ€เจฌเฉฑเจ— เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เฉ€เจ†เจ‚, เจ…เจคเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ, เจœเจฟเจธเจจเฉ‚เฉฐ เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจน เจ—เจฒเจคเฉ€ เจฒเจฟเจ–เฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจธเฉ€ เจ…เจคเฉ‡ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€, เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

เจœเฉ‡ เจ‰เจน เจฒเจฟเจ–เจฃเจพ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ, เจคเจพเจ‚ เจ‰เจธเจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ cmdlet เจจเจพเจฒ Powershell เจนเฉˆ เจŸเฉ€-เจตเจธเจคเฉ‚, เจœเฉ‹ เจ‡เฉฑเจ• เจ†เจฌเจœเฉˆเจ•เจŸ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจ…เจคเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

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

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจšเฉเจฃเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเจฟเจ– เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจตเจฐเจคเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจพ เจ•เจฐเฉ‹ เจธเจผเฉเจฐเฉ‚-เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน System.ComponentModel.Component เจตเจพเจชเจธ เจ•เจฐเฉ‡เจ—เจพ เจจเจพ เจ•เจฟ StandardOutput, เจ…เจคเฉ‡ -RedirectStandardOutput เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉ‹เจฃเจพ เจ…เจธเฉฐเจญเจต เจฌเจฃเจพ เจฆเฉ‡เจตเฉ‡เจ—เจพ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฌเจšเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฒเจพเจ‚เจš เจ•เจฐเฉ‹

เจ‰เจธเฉ‡ เจœเฉ‹เฉœเฉ‡ เจฆเฉ‡ เจฎเจพเจกเจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฒเฉ‡เจ–เจ• เจจเฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจธเจฐเจตเจฐ เจ•เฉ‹เจฒ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ RAM เจตเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจฒเจพเจ‚เจš เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจธ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจนเจฐ เจตเจพเจฐ start.bat เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฌเจœเจพเจ, เจœเจฟเจธเจจเฉ‚เฉฐ เจนเจฐ เจ•เฉ‹เจˆ เจตเจฐเจคเจฆเจพ เจนเฉˆ, เจฌเจธ เจ‡เจธ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจŸเฉ€-เจ†เจฌเจœเฉˆเจ•เจŸ เจธเจฟเจฐเจซ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ "เจฌเจธ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚" เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฌเจฃเจพเจ‰เจฃเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค เจ‡เจน เจธเจ•เฉเจฐเจฟเจชเจŸ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉ€ เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจ†เจ‰ เจฆเจฒเฉ€เจฒเจพเจ‚ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ.

เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจ…เฉฐเจคเจฎ เจ†เจฒเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฒเจˆ, เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจซเจฒเจพเจˆ 'เจคเฉ‡ เจฒเจพเจ‚เจš เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ†เจ“ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจ•เฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเฉ€เจ smithy.

$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 เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡เจ–เฉ€เจ†เจ‚ เจนเจจ, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจธเจฐเจตเจฐ เจฆเฉ‡ เจฌเฉฐเจฆ เจนเฉ‹เจฃ เจฆเฉ‡ เจ•เจพเจฐเจจ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฟเจ†เฅค เจ‡เจน เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเจพเจก เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจœเจพเจ‚ เจ•เฉเจ เจฎเจฟเจŸเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ?
เจนเฉเจฃ เจ†เจ‰ เจ‡เฉฑเจ• เจธเจนเฉ€ เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เจฐเฉ€เจเฅค เจฒเฉ‡เจ–เจ• เจชเจนเจฟเจฒเจพเจ‚ เจ…เจœเฉ€เจฌ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ†เจ‡เจ† เจธเฉ€ เจœเจฟเจธ เจจเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เฉ€เจคเจพ เจธเฉ€ เจญเจพเจตเฉ‡เจ‚ เจธเจฐเจตเจฐ เจฌเฉฐเจฆ เจ•เจฟเจ‰เจ‚ เจนเฉ‹เจตเฉ‡เฅค เจ…เจธเฉ€เจ‚ เจเจ—เจœเจผเจฟเจŸเจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค Java เจ‡เฉฑเจ• เจธเจซเจฒเจคเจพ เจตเจœเฉ‹เจ‚ 0 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‹เจ‚ เจกเจพเจ‚เจธ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจˆเจ เจœเฉ‹ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‡เจ—เจพ เจœเฉ‡เจ•เจฐ เจ‡เจน เจ…เจธเจซเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ.

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

เจธเจ•เฉเจฐเจฟเจชเจŸ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจฒเฉ‚เจช เจตเจฟเฉฑเจš เจฐเจนเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจธเจฐเจตเจฐ /stop เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ เจคเฉ‹เจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจฎเจฟเจคเฉ€, เจฎเฉเจ•เฉฐเจฎเจฒ เจนเฉ‹เจฃ เจฆเฉ€ เจฎเจฟเจคเฉ€, เจ…เจคเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจฆเจพ เจ•เจพเจฐเจจ เจตเฉ€ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš Start-Process เจฆเจพ เจจเจคเฉ€เจœเจพ เจฒเจฟเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:

$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

เจ‡เจน เจธเจญ เจเจก-เจ•เฉฐเจŸเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจจเฉ‚เฉฐ เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจœเฉ‹เฉœเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจธเจ•เฉเจฐเจฟเจชเจŸ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ 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

เจนเฉเจฃ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจฌเจฃเจพเจ‰ เจœเฉ‹ เจนเฉˆเจ‚เจกเจฒเจฐ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจธเจนเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค

เจฒเฉ‡เจ–เจ• เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฎเจพเจฐเจ— เจคเฉ‹เจ‚ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจตเฉ€ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉเจ†เจฐเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจนเฉˆ. เจ‡เจน เจกเฉˆเจธเจ•เจŸเจพเจช เจœเจพเจ‚ 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

เจ‡เจน เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจฒเฉŒเจ—เจ‡เจจ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจ‡เฉฑเจฅเฉ‡ เจธเจพเจฆเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ เจ—เจ เจนเจจ, เจ‡เจธเจฒเจˆ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเจฟเจธ เจ•เฉ‹เจฒ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจชเจนเฉเฉฐเจš เจนเฉ‹เจตเฉ‡, เจœเจพเจ‚ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจ›เฉ‹เจŸเฉ‡ เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจšเฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจชเฉเจฐเจธเจผเจพเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€.

เจ…เจธเฉ€เจ‚ เจ†เจŸเฉ‹-เจฒเฉŒเจ—เจ‡เจจ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจนเฉเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ•เฉฐเจฎ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจคเฉ‹เจ‚ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจตเจพเจ‚เจ—เฉ‡, เจ‡เจธ เจฒเจˆ เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ:

$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

เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ

เจ†เจ‰ เจนเฉเจฃ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจฐเฉฑเจ– เจฆเฉ‡เจˆเจ เจœเฉ‹ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจคเจฟเจ†เจฐ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฒเจˆ เจธเจพเจฐเฉ‡ เจ•เฉ‹เจก เจ‡เฉฑเจฅเฉ‡ เจนเจจ, เจ†เจฏเจพเจค เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฎเฉŒเจกเจฟเจŠเจฒเจพเจ‚ เจจเจพเจฒ เจชเจฐเฉ‡เจธเจผเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจŸเจพเจฐเจŸ-เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ‰ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฌเจฃเจพเจˆเจ เจœเฉ‹ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจนเฉ‹เจฐ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ เจœเฉ‹ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจธเฉเจฃเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจ•เจฐเฉ‡เจ—เจพเฅค

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš, เจ‰เจน เจชเฉเฉฑเจ›เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจธ เจซเฉ‹เจฒเจกเจฐ เจคเฉ‹เจ‚ เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฒเฉŒเจ— เจ•เจฟเฉฑเจฅเฉ‡ เจฐเฉฑเจ–เจฃเจพ เจนเฉˆเฅค

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

เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉ‹เจเจ—เฉ€:

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

เจ†เจ“ เจนเฉเจฃ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ Handler.ps1 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ

เจœเจฆเฉ‹เจ‚ เจธเจพเจกเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจฌเฉเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฌเจฒเจพเจ• เจตเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจจเฉ‹เจŸ เจ•เจฐเฉ‹, เจ‡เจน เจ“เจฐเฉ‡เจ•เจฒ เจœเจพเจตเจพ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฐเจ— เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

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

เจฐเจœเจฟเจธเจŸเจฐ-เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ

เจธเจ•เฉเจฐเจฟเจชเจŸ เจ…เจฎเจฒเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเจพเจฐเจŸ-เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจตเจฐเจ—เฉ€ เจนเฉˆ, เจธเจฟเจตเจพเจ เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ•เฉฐเจฎ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจนเฉ€ เจฆเจฒเฉ€เจฒเจพเจ‚ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ, เจœเฉ‡เจ•เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจตเจฐเจคเจฎเจพเจจ เจจเฉ‚เฉฐ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค

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

เจฐเจœเจฟเจธเจŸเจฐ-เจ†เจŸเฉ‹เจฒเฉ‹เจ—เจจ

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš, เจธเจ•เฉเจฐเจฟเจชเจŸ เจฏเฉ‚เจœเจผเจฐเจจเฉ‡เจฎ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจฏเฉ‚เจœเจผเจฐเจจเจพเจฎ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฏเฉ‚เจœเจผเจฐ เจฆเจพ เจจเจพเจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

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"

เจ•เจฟเจตเฉ‡เจ‚ เจตเจฐเจคเจฃเจพ เจนเฉˆ

เจนเฉเจฃ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจฒเฉ‡เจ–เจ• เจ–เฉเจฆ เจ‡เจธ เจธเจญ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจตเจฟเฉฐเจกเฉ‹เจœเจผ 'เจคเฉ‡ เจœเจจเจคเจ• เจฎเจพเจ‡เจจเจ•เจฐเจพเจซเจŸ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจšเจฒเฉ‹ เจธเจผเฉเจฐเฉ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจเฅค

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹