āĻ˛ā§āĻāĻ āĻā§āĻŽāĻāĻŋ āĻā§āĻŦ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻŋāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻāĻāĻŋ āĻā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ "āĻŦāĻŋāĻļā§āĻĻā§āĻ§āĻāĻžāĻŦā§ āĻŦāĻ¨ā§āĻ§ā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯"āĨ¤ āĻ
āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¯āĻĨāĻžāĻ°ā§āĻ¤āĻŋ, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻ
āĻ¸ā§āĻĨāĻŋāĻ°āĻ¤āĻž āĻāĻŦāĻ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒāĻ¤āĻ¨āĻā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻ˛ā§āĻāĻ āĻ¤āĻžāĻ° āĻ°āĻžāĻ¸ā§āĻ¤āĻžāĻ° āĻĻā§āĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ° āĻā§āĻ¯āĻŧā§ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ°āĻļā§āĻ˛āĻā§ āĻāĻžāĻ˛ āĻāĻžāĻ¨ā§āĻ¨, āĻ¤āĻžāĻ āĻ¤āĻŋāĻ¨āĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛ā§āĻ¨ "āĻŽāĻžāĻāĻ¨āĻā§āĻ°āĻžāĻĢā§āĻ 2020 āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ°āĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ" āĻāĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĻā§ā§ˇ
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄ
āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ˛āĻāĻŋāĻ
āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻŋ āĻāĻ°āĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŽā§āĻĄ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒā§āĻ˛āĻžāĻŽ āĻ¯ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ, āĻĻā§āĻļā§āĻ¯āĻ¤, āĻ¯ā§āĻĻā§āĻ§ āĻā§āĻˇāĻŖāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĒāĻĄāĻŧā§ āĻ¯āĻžāĻā§āĻā§āĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° 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"
āĻĒāĻ°āĻŋāĻĒā§āĻ°āĻŖ
āĻ˛ā§āĻāĻ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻš āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻā§āĻ¨, āĻ¤āĻžāĻ āĻ¤āĻŋāĻ¨āĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻā§āĻ˛āĻŋ āĻļā§āĻ¨ā§ āĻā§āĻļāĻŋ āĻšāĻŦā§āĻ¨āĨ¤ āĻ˛ā§āĻāĻ āĻāĻļāĻž āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻĒāĻā§āĻˇā§ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻāĻĒāĻ¯ā§āĻā§ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com