VBScriptはWindows環境での管理タスクの自動化に非常に役立つスクリプト言語です。
本記事では、VBScriptを使用してユーザーアカウントの作成、削除、パスワードの変更などを行う方法を詳細に説明します。
これらの操作をマスターすることで、システム管理者としての作業効率が大幅に向上します。
前提条件
以下のスクリプトは管理者権限で実行する必要があります。
また、Windowsの「Net User」コマンドを使用しますので、事前にコマンドプロンプトで動作を確認しておくとよいでしょう。
If Not WScript.Arguments.Named.Exists("elevated") Then
' UACプロンプトを表示してスクリプトを再実行
CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
WScript.Quit
End If
' 管理者権限で実行されている場合の処理
WScript.Echo "スクリプトは管理者権限で実行されています。"
' ここに管理者権限が必要な操作を記述します。
ユーザーアカウントの作成
新しいユーザーアカウントを作成するには、以下のスクリプトを使用します。
Net Userコマンドを呼び出して、指定したユーザー名とパスワードでアカウントを作成します。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim userName, password
userName = "newuser"
password = "password123"
objShell.Run "cmd /c net user " & userName & " " & password & " /add", 0, True
WScript.Echo "User " & userName & " has been created."
ユーザーアカウントの削除
ユーザーアカウントを削除するには、以下のスクリプトを使用します。
Net Userコマンドの/deleteオプションを使用して、指定したユーザー名のアカウントを削除します。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim userName
userName = "newuser"
objShell.Run "cmd /c net user " & userName & " /delete", 0, True
WScript.Echo "User " & userName & " has been deleted."
ユーザーパスワードの変更
既存のユーザーアカウントのパスワードを変更するには、以下のスクリプトを使用します。
Net Userコマンドを使用して、新しいパスワードを設定します。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim userName, newPassword
userName = "existinguser"
newPassword = "newpassword123"
objShell.Run "cmd /c net user " & userName & " " & newPassword, 0, True
WScript.Echo "Password for user " & userName & " has been changed."
ユーザーアカウントの属性変更
ユーザーアカウントの属性(例えば、フルネームや説明)を変更するには、以下のスクリプトを使用します。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim userName, fullName, description
userName = "existinguser"
fullName = "John Doe"
description = "Regular user account"
objShell.Run "cmd /c net user " & userName & " /fullname:""" & fullName & """ /comment:""" & description & """", 0, True
WScript.Echo "Attributes for user " & userName & " have been updated."
ユーザーアカウントの有効化・無効化
ユーザーアカウントを有効化または無効化するには、Net Userコマンドの/activeオプションを使用します。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Dim userName
userName = "existinguser"
' ユーザーアカウントの無効化
objShell.Run "cmd /c net user " & userName & " /active:no", 0, True
WScript.Echo "User " & userName & " has been disabled."
' ユーザーアカウントの有効化
objShell.Run "cmd /c net user " & userName & " /active:yes", 0, True
WScript.Echo "User " & userName & " has been enabled."
ユーザーアカウント情報の取得
特定のユーザーアカウントに関する情報を取得するには、以下のスクリプトを使用します。
Net Userコマンドを実行し、その出力をキャプチャします。
Dim objShell, objExec
Set objShell = CreateObject("WScript.Shell")
Dim userName, userInfo
userName = "existinguser"
Set objExec = objShell.Exec("cmd /c net user " & userName)
userInfo = objExec.StdOut.ReadAll
WScript.Echo userInfo
UACの基本概念
UAC(ユーザーアカウント制御)は、Windowsでのセキュリティ機能の一つであり、ユーザーが管理者権限を必要とする操作を行う際に確認を促します。
これにより、悪意のあるプログラムがシステムに変更を加えることを防ぎます。
VBScriptを使用してUACを扱う方法を詳細に説明します。
UACは、Windows Vista以降のバージョンで導入された機能で、標準ユーザーアカウントと管理者アカウントの間で明確な区分を設けています。
管理者アカウントでも、管理者権限が必要な操作を行う際にはUACプロンプトが表示されます。
UACのレベルを変更する
UACのレベルをプログラムから変更することは推奨されませんが、管理タスクの一環として必要な場合があります。
以下のスクリプトは、レジストリを操作してUACのレベルを変更する方法を示します。
注意が必要なのは、この操作はシステムのセキュリティ設定に直接影響を与えるため、慎重に行う必要があります。
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
strValueName = "ConsentPromptBehaviorAdmin"
dwValue = 0 ' 0 = UACを無効化, 5 = 通常のUACプロンプト
objRegistry.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
WScript.Echo "UACのレベルが変更されました。再起動してください。"
UACの状態を確認する
UACの状態を確認するには、レジストリの特定のキーをチェックします。
以下のスクリプトは、UACが有効かどうかを確認します。
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
strValueName = "EnableLUA"
objRegistry.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
If dwValue = 1 Then
WScript.Echo "UACは有効です。"
Else
WScript.Echo "UACは無効です。"
End If
まとめ
VBScriptを使用してユーザーアカウントを管理することで、日常の管理タスクを効率的に自動化できます。
アカウントの作成、削除、パスワード変更、属性変更、アカウントの有効化・無効化、そしてアカウント情報の取得など、基本的な操作をマスターすることで、Windows環境での管理業務を大幅に簡素化できます。
これらのスクリプトを応用し、さらに高度な管理タスクも実現していってください。
また、UACはWindows環境でのセキュリティを強化するための重要な機能です。
VBScriptを使用してUACプロンプトを表示し、管理者権限でスクリプトを実行する方法をマスターすることで、システム管理タスクを効率的に行うことができます。
UACのレベル変更や状態確認といった操作も可能ですが、これらは慎重に扱う必要があります。
これらのテクニックを活用して、安全かつ効果的な管理業務を実現してください。