タスクシーケンスで端末ごとにコンピューター名をつける

みなさん、こんにちは。
今回は OS 展開のタスクシーケンス内で端末ごとに異なるコンピューター名をつける方法をご紹介したいと思います。
(コンピューター名の設定だけでなく、端末ごとに異なるユーザーも作成します)
方法はいくつか考えられますが、このエントリでは PowerShell で実現します。

端末ごとに異なる情報を使用するためには、まず端末を一意に特定し、その端末と使用するコンピューター名やアカウントを紐づける情報が必要となります。端末を一意に特定する情報としては、シリアル番号、MAC アドレスなどが使用できます。まず、端末固有の情報と紐づくコンピューター名、ユーザーアカウント名、パスワードを指定する情報を CSV ファイルで作成します(今回は ComputerInfo.csv というファイル名で作成しています)。

 
SerialNum, MacAddress, ComputerName, UserName, Password
123456789, 00:00:00:00:00:00:00:01, Computer01, user01, password1
234567890, 00:00:00:00:00:00:00:02, Computer02, user02, password1

先頭の列名の行も CSV 内に記載しておきます。

 

次に展開後の端末上で実行されるタスクシーケンス内で端末固有の情報を取得し、この CSV から必要な情報を取得するために今回は PowerShell のスクリプトを使用します。この例では端末のシリアル番号からその端末に設定するコンピューター名とユーザーアカウントを取得し、コマンドを使用して設定しています。また、作成したユーザーをローカルの管理者グループに追加しています。

 

#SetCompNameSerial.ps1

$Serial = (gwmi win32_BIOS).Serialnumber
$CSV = $Args[0]
$NewComputer = import-csv $CSV | Where-Object {$_.SerialNum -eq $Serial}
if ($NewComputer -ne $Null) {
  Rename-Computer -NewName $NewComputer.ComputerName
  net user $Newcomputer.UserName $Newcomputer.Password /add
  net localgroup administrators $Newcomputer.Username /add
}

(※設定部分のみのサンプルです。必要に応じてエラー処理等を追加してください)
 

作成したスクリプトと CSV のデータファイルは Deployment ShareのScripts フォルダ内に置きます。

タスクシーケンスの中でこのスクリプトを実行するタスクを作成します。

setcomputernameserial

PowerShell を実行するタスクを新規に作成し、
PowerShell scriptとして %SCRIPTROOT%\SetCompNameSerial.ps1
Parametersに CSV ファイル (ComputerInfo.csv)を設定します。

 

Mac Address でコンピューター名を指定する場合の PowerShell スクリプトの例は以下のようになります。

 
#SetCompNameMacAddress.ps1

$CSV = $Args[0]
$Mac = (Get-WmiObject win32_networkadapterconfiguration | where-object {$_.MacAddress -ne $null})

foreach ($M in $Mac) {
  if ($M.MacAddress -ne $null) {
    $NewComputer = import-csv $CSV | Where-Object {$_.MacAddress -eq $M.MacAddress}
    if($NewComputer -ne $null) {
      Rename-Computer -NewName $NewComputer.Name
      net user $NewComputer.UserName $NewComputer.Password /add
      net localgroup administrators $NewComputer.Username /add
    }
  }
}

(※設定部分のみのサンプルです。必要に応じてエラー処理等を追加してください)
 

setcomputernamemacadress

この場合も先ほどの例と同様に新規の PowerShell 実行タスクを作成し、スクリプトとパラメーターを指定します。
PowerShell script として %SCRIPTROOT%\SetCompNameMacAddress.ps1
Parameters に CSV ファイル (ComputerInfo.csv) を設定します。

 

MDT のタスクシーケンスはローカルの Administrator アカウントで実行され、既定では終了後も Administrator が有効な状態となっているので、最後に Administrator アカウントを無効にすることもお忘れなく。

disableadministrator

※タスクシーケンス内でのユーザー作成に失敗した状態で Administrator アカウントを無効にしてしまうと有効なアカウントがなくなりログインできなくなるのでご注意ください。