PowerShellで再起動後自動ログオンして任意のスクリプトを実行する

PowerShell

インストール後再起動してからごにょごにょする必要があったので調べました。

スポンサーリンク

再起動後自動ログオンする

レジストリにユーザ名とパスワードを設定します。

$regLogonKey = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
$defaultUserName = "user"
$defaultPassword = "password"
$defaultDomainName = "someDomain"

Set-ItemProperty -path $regLogonKey -name "AutoAdminLogon" -value 1
Set-ItemProperty -path $regLogonKey -name "DefaultUsername" -value $defaultUserName
Set-ItemProperty -path $regLogonKey -name "DefaultPassword" -value $defaultPassword
if ($defaultDomainName -ne "") {
    Set-ItemProperty -path $regLogonKey -name "DefaultDomainName" -value $defaultDomainName
}

ログオン後に任意のスクリプトを実行する

レジストリに起動後一度だけ実行するコマンドを渡します。

$regRunOnceKey = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
$powerShell = (Join-Path $env:windir "system32\WindowsPowerShell\v1.0\powershell.exe")
$script = "E:\Test\Script\SampleAfterInstall.ps1"
$restartKey = "Restart-And-RunOnce"

Set-ItemProperty -path $regRunOnceKey -name $restartKey -value "$powerShell $script"

まとめ

こんな感じでスクリプト内で再起動後自動ログオンして任意のスクリプトを実行することが出来ます。

$defaultUserName = "user"
$defaultPassword = "password"
$defaultDomainName = "someDomain"
$script = "E:\Test\Script\SampleAfterInstall.ps1"

# 再起動後に自動ログオンするように設定する
function activateAutoLoginAfterMachinePowerOn() {
    $regLogonKey = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

    Set-ItemProperty -path $regLogonKey -name "AutoAdminLogon" -value 1
    Set-ItemProperty -path $regLogonKey -name "DefaultUsername" -value $defaultUserName
    Set-ItemProperty -path $regLogonKey -name "DefaultPassword" -value $defaultPassword
    if ($defaultDomainName -ne "") {
        Set-ItemProperty -path $regLogonKey -name "DefaultDomainName" -value $defaultDomainName
    }
}

# ログオン後に実行するスクリプトを登録する
function registerRunOnceScriptAfterLogin() {
    Param(
        $script    
    )

    $regRunOnceKey = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
    $powerShell = (Join-Path $env:windir "system32\WindowsPowerShell\v1.0\powershell.exe")
    $restartKey = "Restart-And-RunOnce"

    #RunOnceキーにセット
    Set-ItemProperty -path $regRunOnceKey -name $restartKey -value "$powerShell $script"
}

activateAutoLoginAfterMachinePowerOn
registerRunOnceScriptAfterLogin $script
Restart-Computer -Force
タイトルとURLをコピーしました