どうもミツシマです。

今回はPowershellを使用してPCのホスト名(コンピュータ名)を変更する方法を検証してみました。
ただ変更するのは簡単に出来るので、インプットボックスを表示させて、そこから値を取得して変更するスクリプトを検証してみました。

検証環境は以下の通り
PC:Windows10 1809


出来たスクリプトがこちら↓↓
#スクリプトのパス取得
$ScriptFullPath = $MyInvocation.MyCommand.Path

#管理者として実行しているかを確認し、管理者で実行されていなければ、管理者として再実行する
$WindowsPrincipal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
if (-Not($WindowsPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))){
    Write-Output "管理者として実行されていません。再度管理者で実行します。"
    Start-Process powershell.exe -ArgumentList "-ExecutionPolicy RemoteSigned -command $ScriptFullPath" -Verb runas
    Exit
}

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = '入力下さい'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'キャンセル'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'コンピュータ名を入力下さい'
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

If($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    Rename-Computer -NewName $x -Force  
    $MessageText = ('PC名[' + $x + ']に変更しました.5秒後に再起動します')
    [System.Windows.Forms.MessageBox]::Show("$MessageText","通知")
    shutdown /r /t 5

}else{
    [System.Windows.Forms.MessageBox]::Show("処理がキャンセルされました","通知")
}


〜解説〜
いつもどおり管理者権限かを確認した後、インプットボックスを中央に表示させる。
インプットボックスにはそれぞれ、「OK」・「キャンセル」を合わせて表示させ、「キャンセル」の場合には処理をしないように作成。

実際に動かすとこんな感じ↓↓
スクリーンショット 2019-07-04 5.32.29



ただ、ホスト名を変更するだけだと微妙な感じもするので次回はこれに加えてAD参加もするようなスクリプトにチャレンジしたいと思います!!
※使い所がない!という声もありそうだが、とりあえず知っておくだけでも成長出来ると信じて。。




スポンサードリンク