āĻ¨āĻŋāĻ–ā§āĻāĻ¤ Minecraft āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻ¨āĻŋāĻ–ā§āĻāĻ¤ Minecraft āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻ˛ā§‡āĻ–āĻ• āĻ—ā§‡āĻŽāĻŸāĻŋ āĻ–ā§āĻŦ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻŋāĻ¨āĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ• "āĻŦāĻŋāĻļā§āĻĻā§āĻ§āĻ­āĻžāĻŦā§‡ āĻŦāĻ¨ā§āĻ§ā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯"āĨ¤ āĻ…āĻĒā§‡āĻļāĻžāĻĻāĻžāĻ°āĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯āĻĨāĻžāĻ°ā§€āĻ¤āĻŋ, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•āĻžāĻœā§‡āĻ° āĻ…āĻ¸ā§āĻĨāĻŋāĻ°āĻ¤āĻž āĻāĻŦāĻ‚ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒāĻ¤āĻ¨āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ˛ā§‡āĻ–āĻ• āĻ¤āĻžāĻ° āĻ°āĻžāĻ¸ā§āĻ¤āĻžāĻ° āĻĻā§‹āĻ•āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛āĻ•ā§‡ āĻ­āĻžāĻ˛ āĻœāĻžāĻ¨ā§‡āĻ¨, āĻ¤āĻžāĻ‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ "āĻŽāĻžāĻ‡āĻ¨āĻ•ā§āĻ°āĻžāĻĢā§āĻŸ 2020 āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‡āĻ°āĻž āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ" āĻāĻ•āĻ‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›ā§‡ā§ˇ Ruvds āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸāĻĒā§āĻ˛ā§‡āĻ¸. āĻ¤āĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§‚āĻ¤ā§āĻ° āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ–āĻ¨, āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡, āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ˛āĻ—āĻŋāĻ‚

āĻāĻ•āĻŦāĻžāĻ° āĻ†āĻŽāĻŋ āĻ†āĻ°āĻ“ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŽā§‹āĻĄ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒā§‡āĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ, āĻĻā§ƒāĻļā§āĻ¯āĻ¤, āĻ¯ā§āĻĻā§āĻ§ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĒāĻĄāĻŧā§‡ āĻ¯āĻžāĻšā§āĻ›ā§‡āĨ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° latest.log āĻŦāĻž āĻĄāĻŋāĻŦāĻžāĻ—ā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ˛ā§‡āĻ–ā§‡āĻ¨āĻŋ, āĻāĻŦāĻ‚ āĻ•āĻ¨āĻ¸ā§‹āĻ˛, āĻ¯āĻž āĻ¤āĻ¤ā§āĻ¤ā§āĻŦāĻ—āĻ¤āĻ­āĻžāĻŦā§‡, āĻāĻ‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻŸāĻŋ āĻ˛ā§‡āĻ–āĻžāĻ° āĻāĻŦāĻ‚ āĻĨāĻžāĻŽāĻžāĻ° āĻ•āĻĨāĻž āĻ›āĻŋāĻ˛, āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤

āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ¨āĻž āĻšāĻžāĻ‡āĻ˛ā§‡ āĻ˛āĻŋāĻ–āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ cmdlet āĻ¸āĻš āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻŸāĻŋ-āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¨ā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°ā§‡āĨ¤

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

āĻ¤āĻžāĻ‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄāĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ˛āĻŋāĻ–āĻŦā§‡āĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻļā§āĻ°ā§-āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ System.ComponentModel.Component āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻŦā§‡, āĻāĻ•āĻŸāĻŋ StandardOutput āĻ¨āĻ¯āĻŧ, āĻāĻŦāĻ‚ -RedirectStandardOutput āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°ā§‡ āĻ¤ā§āĻ˛āĻŦā§‡, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤

āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨

āĻāĻ•āĻ‡ āĻœā§‹āĻĄāĻŧāĻž āĻŽā§‹āĻĄ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ˛ā§‡āĻ–āĻ• āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ°āĻ“ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ RAM āĻ¨ā§‡āĻ‡āĨ¤ āĻ†āĻ° āĻ˛āĻžā§āĻšā§‡āĻ° āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŦāĻžāĻ° start.bat-āĻ āĻāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ¯āĻž āĻ¸āĻŦāĻžāĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻļā§āĻ§ā§ āĻāĻ‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŸāĻŋ-āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄāĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĒāĻĄāĻŧā§‡ āĻ¤āĻ–āĻ¨āĻ‡ āĻ¯āĻ–āĻ¨ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛āĻŸāĻŋāĻ•ā§‡ "āĻ āĻŋāĻ• āĻ¸ā§‡āĻ‡ āĻŽāĻ¤ā§‹" āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ‡ āĻ†āĻ°āĻ“ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻŽāĻžāĻ‡āĻ¨āĻ•ā§āĻ°āĻžāĻĢā§āĻŸ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻšāĻžāĻ˛āĻžāĻŦā§‡āĨ¤ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ…āĻ˛āĻ¸āĻ¤āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻĒā§āĻ¤ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻ•ā§‡ āĻ‰āĻĄāĻŧā§‡ āĻāĻ¸ā§‡ āĻ˛āĻžā§āĻš āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ•āĻžāĻŽāĻžāĻ°āĻļāĻžāĻ˛āĻž.

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

sort-object-āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻĄāĻŧ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¸āĻš āĻŦāĻ¸ā§āĻ¤ā§āĻŸāĻŋ āĻ¨ā§‡āĻŦ, āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¯āĻ¤ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ‡ āĻ°āĻžāĻ–ā§āĻ¨ āĻ¨āĻž āĻ•ā§‡āĻ¨āĨ¤ āĻšāĻ°āĻŽ āĻ…āĻ˛āĻ¸āĻ¤āĻžāĨ¤

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŽā§‡āĻŽāĻ°āĻŋāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ āĻ˛āĻŋāĻ–āĻŋāĨ¤

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

āĻ¯āĻĨāĻžāĻ¯āĻĨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨

āĻ˛ā§‡āĻ–āĻ• āĻ…āĻ¨ā§āĻ¯ āĻ˛ā§‹āĻ•ā§‡āĻĻā§‡āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ .bat āĻĢāĻžāĻ‡āĻ˛ āĻĻā§‡āĻ–ā§‡āĻ›ā§‡āĻ¨, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦāĻ¨ā§āĻ§ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ•āĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§‡āĻ¨āĻ¨āĻŋāĨ¤ āĻāĻŸāĻž āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻļā§āĻ§ā§ āĻŽā§‹āĻĄ āĻĢāĻžāĻ‡āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻž āĻ•āĻŋāĻ›ā§ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻšāĻžāĻ¨?
āĻāĻ–āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ āĻŋāĻ• āĻĒā§āĻ¨āĻƒāĻ¸ā§‚āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•. āĻ˛ā§‡āĻ–āĻ• āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻ…āĻĻā§āĻ­ā§āĻ¤ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻ¯āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ°āĻŋāĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§‡āĻˇā§‡ āĻ•ā§‡āĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•ā§āĻ¸āĻŋāĻŸāĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ āĻœāĻžāĻ­āĻž āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ 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"

āĻĒāĻ°āĻŋāĻĒā§‚āĻ°āĻŖ

āĻ˛ā§‡āĻ–āĻ• āĻ¨āĻŋāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻš āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨, āĻ¤āĻžāĻ‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻ—ā§āĻ˛āĻŋ āĻļā§āĻ¨ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦā§‡āĻ¨āĨ¤ āĻ˛ā§‡āĻ–āĻ• āĻ†āĻļāĻž āĻ•āĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŽāĻĒāĻ•ā§āĻˇā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ‰āĻĒāĻ¯ā§‹āĻ—ā§€ āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧāĨ¤

āĻ¨āĻŋāĻ–ā§āĻāĻ¤ Minecraft āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨