á
á¬áá±ážáá°ááẠááááºážááᯠá¡ááœááºááŸá
áºáááºááŒá®áž áá°ááá¯ááºááá¯ááºá "áá°áááºáá»ááºážáá»á¬ážá¡ááœááºáááºáááº" áá¬áá¬áááºá á
á®áá¶ááá·áºááœá²áá°ááŒá
áºáááºá á¡áá»á±á¬áºáááºážááá¬ážáá»á¬ážááŒá¬ážááœáẠáá¯á¶ážá
á¶á¡ááá¯ááºážá áá¬áá¬áá±á«áºááŸá á¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒá¯ááŒááºááœááºážáá¶áá¬ážááŒá®áž áááºážááẠááááºáááŒáááºááŒá
áºá
á±ááŒá®áž ááááºá¡áá±ááŒáá·áº áá»ááºá
á®ážááœá¬ážáá«áááºá Powershell áá
á¬áá±ážááá¬ááẠáá°á·áááºážáá±á«áºááŸá á
ááá¯ážááá¯ááºáá»á¬ážááááºáá±áá¬ááẠááá¯áááá±á¬ááŒá±á¬áá·áºá áá°áá¯ááºáááºáá¯á¶ážááŒááºáá²á·áááºáMinecraft 2020 ááᯠá
áááºááẠá¡áá±á¬ááºážáá¯á¶áž Scriptâ áá°áá®áá±á¬ áá¬ááºááœáŸááºážááẠáá¯á¶á
á¶áááááºá¡ááœáẠá¡ááŒá±áá¶á¡ááŒá
Ạáá±á¬ááºááœááºáá²á·áááºá
áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬á¡áááá·áºáá»á¬áž
á¡á á¬ážááá¯áž áá áºáá¯ááºááŒááºážá
áá áºáá±á·ááœááºá áá±á¬ááºááẠmods ááŸá áºáá¯ááᯠinstall áá¯ááºááŒá®ážáá±á¬á¡áá«á áá±áá»á¬áááºááŸá¬ áá¬áá¬ááẠá á áºáááŒá±ááŒá¬áá² áá»ááºááœá¬ážáááºááᯠáá»áœááºá¯ááºááœá±á·ááŸááá²á·áááºá áá¬áá¬ááẠlatest.log ááá¯á·ááá¯áẠá¡ááŸá¬ážááŸá¬ááŒááºááœáẠá¡ááŸá¬ážáá»á¬ážááᯠááá±ážáá¬ážáá² áá®á¡áá¯áá®á¡á á€á¡ááŸá¬ážááᯠáá±ážáá¬ážááŒá®áž áááºááá·áºááá·áº ááœááºááá¯ážááºááẠááááºááœá¬ážáá²á·áááºá
ááá±ážáá»ááºáá°ážááá¯áááºáá±á¬á· áá±ážá áá¬áááá¯áá«áá°ážá áá»áœááºá¯ááºááá¯á·ááœáẠcmdlet ááŒáá·áº Powershell ááŸááááºá Tee-Objectá¡áá¬ááá¹áá¯áá áºáá¯á¡á¬áž áá°áá±á¬ááºáᬠáááºážááᯠááá¯ááºáá áºáá¯ááŸáá·áº ááœááºááá¯ážááºááá¯á· áá áºááŒáá¯ááºáááºáááºážáá¯ááºáá±ážáááºá
.handler.ps1 | Tee-Object .StandardOutput.txt -Append
á€áááºážááŒáá·áº Powershell ááẠStandardOutput ááᯠáá±á¬ááºáá°ááŒá®áž ááá¯ááºáá áºáá¯ááá¯á· áá±ážáá±ážáááá·áºáááºá áá¯á¶ážááá¯á· áááŒáá¯ážá á¬ážáá«áá²á·á á áááº-áá¯ááºáááºážá ááºáááºážááẠSystem.ComponentModel.Component ááŸáá·áº StandardOutput ááá¯ááºáá±á¬ááŒá±á¬áá·áºá ááŸáá·áº -RedirectStandardOutput ááẠáá»áœááºá¯ááºááá¯á·ááŸá±á¬ááºááŸá¬ážááá¯ááá·áºá¡áá¬ááŒá áºááá·áº console ááá¯á·áááºáá±á¬ááºáááºáááŒá áºááá¯ááºá á±áááºááŒá áºáááºá
ááŒááºážáá¯á¶ááŸá¯áá»á¬áž á áááºáá«á
ááá¯áá°áá®áá±á¬ mods á¡ááœá²áá»á¬ážááᯠááá·áºááœááºážááŒá®ážáá±á¬ááºá á á¬áá±ážáá°ááẠáá¬áá¬ááœááºáááºáž RAM áá¯á¶áá¯á¶áá±á¬ááºáá±á¬áẠáááŸááááºááᯠáááááŒá¯áááááºá áááºážááẠáá áºááœáŸááºááŒááºážááá¯ááºáᬠá¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáááºá áá°ááá¯ááºážá¡áá¯á¶ážááŒá¯ááá·áº start.bat ááœáẠá¡áá»áááºááá¯ááºáž áááºážááá¯á·ááᯠááŒá±á¬ááºážáá²ááá·áºá¡á á¬áž á€áá¬ááºááœáŸááºážááᯠá¡áá¯á¶ážááŒá¯áá«á
executable ááᯠ"Just Like This" áá¯áá±á«áºáá±á¬á¡áá« Tee-Object ááẠStandardOutput ááá¯áá¬áááºáá±á¬ááŒá±á¬áá·áº áááºááẠá¡ááŒá¬ážáá±á¬ script áá áºáá¯ááŒá¯áá¯ááºááááºááŒá áºáá«áááºá á€áá¬ááºááœáŸááºážááᯠMinecraft ááá¯ááºááá¯ááºá á áááºáá¯ááºáá±áááºááŒá áºáááºá ááŒááºážáá¯á¶ááŸá¯áá»á¬ážááŒáá·áºá ááŒáá«á áá¯á·á
á¡áá¬áááºááœáẠá¡áá¯á¶ážá áœááºáá±á¬ áá»ááºážááááŸá¯ááᯠáá¶á á¬ážááá¯ááºáááºá áá¬ááºááœáŸááºážááẠááœáŸáá·áºáááºááá·áº á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááᯠá¡áá»ááºá¡ááŒáẠá á¯áá±á¬ááºážááááºááŒá áºáááºá áá®ááá¯áá¯ááºááá¯á·á áá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážááᯠááŸá¬ááœá±ááŒááºážááŒáá·áº á áááºááŒáá«á áá¯á· áá±á¬ááºáá¯ááº.
$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 ááá¯ááºáá»á¬ážááᯠááŒááºáá°ážáá±á¬áºáááºáž áá¬áá¬ááᯠáááºááá·áºáááá·áº á¡ááŒá±á¬ááºážáááºážááᯠááá·áºááœááºážá
ááºážá
á¬ážááŒááºážáááŸááá²á·áá«á áááºážááẠá¡áááºáááŒá±áá«áá áááºááẠmod ááá¯ááºááᯠááŒá±á¬ááºážáá²ááẠááá¯á·ááá¯áẠáá
áºáá¯áá¯ááᯠáá»ááºáá
áºáá«á áááºááá¯á·áá¯ááºáá±á¬ááºáááºáááºážá
á¡áᯠááŸááºáááºáá²á· restart áá¯ááºááŒáá·áºáá¡á±á¬ááºá á
á¬áá±ážáá°ááẠáá¬áá¬ááᯠá¡áááºááŒá±á¬áá·áº ááááºááá¯ááºááááºááŒá
áºá
á± áá¬áá¬ááᯠááŒááºáááºá
áááºááá·áº áá°ážáááºážáá±á¬ áá¬ááºááœáŸááºážáá»á¬ážááᯠááááºá ááœá±á·áá²á·ááááºá áá»áœááºá¯ááºááá¯á·ááẠexitcode ááá¯áá¯á¶ážáá«áááºá 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 ááááºááᯠvariable áá áºáá¯á¡ááŒá Ạáá±ážáá«á áá¬ááºááœáŸááºážááœáẠá€áá²á·ááá¯á·ááŒááºááááº-
$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 áá¯á¶ážááŒá®áž ááá¯ááºáá áºáá¯ááá¯á· áá±á«ááºážááá·áºááá¯ááºáááºá á¡á²áá«ááᯠáááºážáááºáž ááŒá®ážááŒá®ážááẠáá® script ááᯠááááºá á¡á²áá«ááᯠ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
á¡áᯠhandler ááá¯ááœáá·áºáá²á· script áá áºáá¯ááᯠáááºáá®ážááá¯ááºáá¡á±á¬ááºá
ááŸááºáááºáá±á¬ á áááºááŸá¯
á á¬áá±ážáá°ááẠMinecraft á ááá°áá®áá±á¬áá¬ážááŸááºážáá»á¬ážááᯠmodule áá áºáá¯ááŸá áááºááá·áºáááºážááŒá±á¬ááºážá០áá¯ááºáá±á¬ááºááá¯ááŒá®áž áá®ážááŒá¬ážááá¯ááºááœá²áá áºáá¯ááœáẠááŸááºáááºážáá»á¬ážááᯠááááºážáááºážááá¯ááºáááºá
ááŒá¿áá¬ááŸá¬ á áá áºááá¯á· áá±á¬á·ááºá¡ááºáááºáá¬ážááá·áº á¡áá¯á¶ážááŒá¯áá°áá áºáŠážá០áá¯ááºáááºážá ááºááᯠá áááºááááºááŒá áºáááºá áááºážááᯠ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 á០command ááá¯áá»áœááºá¯ááºááá¯á· run áá«áááºá ááá¯á·ááŒá±á¬áá·áºáááºážáááºá€áá²á·ááá¯á·ááŒá áºáááá·áºáááºá
$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
module ááᯠáááºáááºááŒááºážá
á¡áá¯áá±á¬ááºááá¯ááºážááŸá¬ áá¯á¶ážááá¯á·ááá²á· module ááœá±á¡á¬ážáá¯á¶ážááᯠááá·áºááá¯ááºáá¡á±á¬ááºá á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ Script áá»á¬ážá¡ááœáẠáá¯ááºá¡á¬ážáá¯á¶ážááẠá€áá±áá¬ááœááºá áááºááœááºážááŒá®áž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá±á¬áºáá»á°ážáá»á¬ážááᯠáááŸá±á¬áá·áºááŸááºááá¯áá«á á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá®ážááŒá¬ážá á®á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
Minecraft á áááºáá«á
áŠážá áœá¬á áá¬ážáá±á¬ááºááŒá®áž standardoutput ááᯠááŸááºáááºážáááºááá·áº script áá áºáá¯ááᯠrun áá¯á¶ááŸááœá²á áá¬á០ááá¯ááºááá¯ááºáá±á¬ module áá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á
ááá·áºáááºáá±á¬ááºáá»á¬ážááœááºá áá°ááẠ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 áá»á¬ážááᯠáá±á«áºááá·áºá¡áá« áá±á¬ááºáá»á¬ážááᯠáááºáá¶ááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·áááºáááºáž ááá·áºáááºáá±á¬ááºáá áºáá¯ááᯠáááºááŸááºááẠááá¯á¡ááºáá«áááºá áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á áááºážááẠOracle Java ááᯠrun áááºá á¡áááºá áááºááẠááá°áá®áá±á¬ ááŒáá·áºááŒá°ážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá±áá«á executable file ááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááẠááá¯á¡ááºáááºááŒá áºáááºá
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
Register-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"
áááºááá¯áá¯á¶ážá áœá²ááá¯á·
á¡áᯠá á¬áá±ážáá°ááá¯ááºááá¯ááºá áá®á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¯á¡áá¯á¶ážááŒá¯áá²ááá¯áá¬ááᯠáá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá Windows ááœáẠá¡áá»á¬ážáá°ááŸá¬ Minecraft áá¬áá¬ááᯠáá±á¬ááºážá áœá¬á¡áá¯á¶ážáá»áááºážá á¡á ááá± á ááá¯ááºáá¡á±á¬ááºá
1. á¡áá¯á¶ážááŒá¯áá°áááºáá®ážáá«á
$pass = Get-Credential
New-LocalUser -Name "MinecraftServer" -Password $pass.Password -AccountNeverExpires -PasswordNeverExpires -UserMayNotChangePassword
2. script ááᯠrun áááºáá¯ááºáá±á¬ááºá áá¬ááá¯ááŸááºáá¯á¶áááºáá«á
á€áá²á·ááá¯á·áá±á¬ module ááᯠá¡áá¯á¶ážááŒá¯á á á¬áááºážááœááºážááá¯ááºáááº-
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"
ááŒáá·áºá á¯á¶ááŒááºáž
á á¬áá±ážááá¬ááẠááá¯ááºááá¯ááºá¡áá«á¡ááẠáá¬ááºááœáŸááºážááᯠáááºáá®ážáá¬ážáá±á¬ááŒá±á¬áá·áº áá¬ááºááœáŸááºážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááẠáááºáá¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááᯠáá¬ážáá±á¬ááºáááá·áºá¡ááœáẠáá»á±áááºáá«áááºá á€áá¯ááºá¡á¬ážáá¯á¶ážááẠááá·áºá¡ááœáẠá¡áááºážáá¯á¶áž á¡áááºážáá¯á¶ážá¡áá¯á¶ážáááºááŒá®áž áá±á¬ááºážáá«ážááẠá áááºáááºá á¬ážááœááºáá±á¬ááºážááŒá±á¬ááºáž á á¬áá±ážáá°á áá»áŸá±á¬áºááá·áºáá«áááºá
source: www.habr.com