2014年1月26日日曜日

PowerShellでローカルユーザの名前を変更する

サーバの設定をPowerShellでおこないたいと思い、
今回は、ローカルユーザの名前を変更する方法について調べた。

通常GUIでやろうとすると、lusrmgr.mscと打ってローカルユーザとコンピュータの管理を開いて、
ユーザを選択し、右クリック > 名前の変更 というようにおこなう。
これをPowerShellで簡単にできないものか。


はじめはレジストリをPowerShellで書き換えるのかと思い、
下記の記事などを参考にしてみたが、記事に書いてあるレジストリの項目が見当たらず断念。

レジストリからコンピュータ名、ユーザー名を変更する方法 - Blog型メモ帳 - Yahoo!ブログ
http://blogs.yahoo.co.jp/genewhite0/17294286.html
ハウツー解説: Windows XP をインストールすると、名前と会社名の変更について
http://support.microsoft.com/kb/310441/ja

並行して、PowerShellのポケットリファレンスを読みながら、
そのようなコマンドが無いか調べたが、載って無かった。
(ホスト名を変更するコマンドは載っていた)

Amazon.co.jp: 【改訂新版】 Windows PowerShell ポケットリファレンス: 牟田口 大介: 本
http://www.amazon.co.jp/dp/477415542X/

net userコマンドでできないかと思ったが、ユーザ名の変更はできないようだ。
あと環境変数を変えたりもしてみたが、ユーザ名の変更はできなかった。

その後、しばらくネットで検索するも、なかなか見つからずに居たが、
ようやく下記の記事を見つける。

[WMI Class] Win32_UserAccount クラス - WMI Library
http://www.wmifun.net/library/win32_useraccount.html

WMIというというコンポーネントを利用すると、
ローカルユーザの情報を得ることができるらしい。
さらにRenameというメソッドで名前の変更が可能。

さらにこのクラス名で検索すると、下記のような英語の記事が出てきた。

Server Hardening with PowerShell Part 1: Local Users | halfwaytoinfinite
http://halfwaytoinfinite.wordpress.com/2013/03/24/server-hardening-with-powershell-part-1-local-users/
Powershells script to Re-name Local Guest & Administrator Account? - Stack Overflow
http://stackoverflow.com/questions/5188917/powershells-script-to-re-name-local-guest-administrator-account

ということで最終的に下記のようなスクリプトで変更できた!
$user = Get-WmiObject -Class win32_useraccount -Filter “name='oldname’”
$user.Rename(“newname”)
次回以降、引き続きPowerShellを用いた設定方法について調べていきたい。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。