สวัสดีครับ วันนี้ได้ request ในการ list local User ให้มี Output สามารถบอก Password Last Set และ Password Expired ได้
คำสั่งที่ใช้จึงใช้คำสั่งง่าย ๆ คือ Net User “Username”
เรื่องนี้ดูเหมือนจะง่าย แต่ปัญหาคือเราต้องการ List User ทั้งหมดที่มีอยู่ในระบบ จึงจำเป็นต้องใช้คำสั่งวน Loop ในการอ่านค่าไปใส่ไฟล์
คำสั่งวน Loop ที่ผมใช้คือ
for /f “tokens=* delims= ” %%a in (user01.txt) do (net user %%a)
ซึ่งไฟล์ User01.txt นั้นจะต้องบรรจุรายชื่อ User ไว้เป็นแถว ๆ แบบนี้ ครับ
อ่าว ? แล้วทำอย่างไรถึงจะได้ไฟล์ user01.txt ให้เรียงรายชือ User เป็นแถวสวยงามแบบนี้ ?
ปัญหาคือถ้าใช้คำสั่ง Net user จะได้รายชือเรียงเป็น TAB ซึ่งเราไม่สามารถเอาไปใช้งานวนลูปต่อได้
จึงต้องใช้ VBS ช่วยครับ (อ้อมโลกดีเนอะแต่รีบอะครับ – -“)
ใช้ VBS Script ตามด้านล่างนี้ เราจะได้รายชื่อ local user ทั้งหมดและเรียงกันสวยงามเหมือนไฟล์ user01.txt ครับ
Set objNetwork = CreateObject(“Wscript.Network”)
strComputer = objNetwork.ComputerName
Set colAccounts = GetObject(“WinNT://” & strComputer & “”)
colAccounts.Filter = Array(“user”)
For Each objUser In colAccounts
Wscript.Echo objUser.Name
Next
จากนั้นก็เอา Dos และ VBS มาประกอบร่างกันครับโดยผมเขียนไฟล์ User.cmd แล้วมี Script บ้าน ๆ ในนั้นดังนี้ครับ
echo off
cscript /nologo list01.vbs >user01.txt
echo on
for /f “tokens=* delims= ” %%a in (user01.txt) do (net user %%a)
ผมเอาสองไฟล์นี้ไปวางใน D Drive ครับ
แล้วก็ใช้คำสั่ง RUN ให้ออกมาเป็นไฟล์ User02.txt
ผลที่ได้คือมัน List Local User วน Loop ให้หมดเครื่องครับ
T T หวังว่าพอจะช่วยบรรเทา Solution ฉุกเฉินไปก่อนนะครับ