PowerShell と CSV ファイルを利用してコンピュータ名を変更する方法 (ja-JP)

ドメインに存在する複数のコンピューターの名前を変更するには、まず今の名前と新しい名前をカンマ区切りにしたファイルを作成します。以下のように、ヘッダー行を付けて今の名前と新しい名前を同じ行にペアにします。

OldName,NewName
Machine1,Computer1
Machine2,Computer2
<今のコンピューター名>,<新しいコンピューター名>

ファイルを "rename.csv" としてよく知られた場所である C:\temp に保存します。
注意: CSV ファイルの中で今のコンピューター名とカンマの間などに余分な空白を入れたりすると、それが失敗する原因となります。

コンピューター名を変更するための PowerShell スクリプト ("new-name.ps1" と呼ぶことにしましょう) を作成し、CSVファイルと同じ場所に保存します。

# CSV ファイルを解釈することで、ドメイン内のコンピューター名を変更するスクリプト
# 前提: OldName,NewName というヘッダー行を持ち、
# 各コンピューターの今の名前と新しい名前のペアを行に記述したファイル
# ファイル名とファイルのパスは、適宜調整すること
 
$csvfile = "C:\temp\rename.csv"
Import-Csv $csvfile | foreach {
    $oldName = $_.OldName;
    $newName = $_.NewName; 
     
    Write-Host "$oldName から $newName へコンピューター名を変更します"
    netdom renamecomputer $oldName /newName:$newName /uD:example\username /passwordD:* /force /reboot
}

環境にあわせて 正しいドメインユーザー名に置き換えるようにしてください。このスクリプトでは、netdom が実行されるごとに毎回ドメインユーザーのパスワードの入力を求められます。これについては、スクリプトの最初に 1回パスワードの入力を求めておき、それを変数に格納しておくことによって簡単に拡張することができます。

私のような長い経験を持ったシステム管理者にとってこれが美しさを感じさせるのは、日常の作業において PowerShell のような新しい方法を使いながら、古い知識が土台になっているということです。(netdom などについては、MS LanManager を利用していた日々を思い出します)


他の言語