Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Quản lý người dùng và nhóm cục bộ với PowerShell

Gần đây, Microsoft đã thêm một mô-đun PowerShell tiêu chuẩn để quản lý người dùng và nhóm cục bộ Windows có tên Microsoft.PowerShell.LocalAccounts. Trước đây, bạn phải tải xuống và nhập mô-đun này vào PowerShell thủ công. Giờ đây, mô-đun LocalAccounts có sẵn theo mặc định trong Windows Server 2016 và Windows 10 như một phần của PowerShell 5.1. Để sử dụng nó trong các phiên bản Windows cũ hơn, bạn phải cài đặt Windows Management Framework 5.1.

Mô-đun PowerShell LocalAccounts

Có 15 cmdlet trong mô-đun LocalAccounts. Bạn có thể hiển thị danh sách đầy đủ các cmdlet của mô-đun như sau:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

Quản lý người dùng và nhóm cục bộ với PowerShell

  1. Add-LocalGroupMember – thêm người dùng vào nhóm cục bộ;
  2. Disable-LocalUser – vô hiệu hóa tài khoản người dùng cục bộ;
  3. Enable-LocalUser – kích hoạt (mở khóa) tài khoản;
  4. Get-LocalGroup – lấy thông tin về nhóm cục bộ;
  5. Get-LocalGroupMember – hiển thị danh sách người dùng trong nhóm cục bộ;
  6. Get-LocalUser – hiển thị thông tin về người dùng cục bộ;
  7. New-LocalGroup – tạo nhóm cục bộ mới;
  8. New-LocalUser – tạo người dùng cục bộ;
  9. Remove-LocalGroup – xóa nhóm cục bộ;
  10. Remove-LocalGroupMember – xóa thành viên khỏi nhóm cục bộ;
  11. Remove-LocalUser – xóa người dùng cục bộ;
  12. Rename-LocalGroup – đổi tên nhóm cục bộ;
  13. Rename-LocalUser – đổi tên người dùng;
  14. Set-LocalGroup – sửa đổi cài đặt nhóm;
  15. Set-LocalUser – sửa đổi cài đặt người dùng.

Hãy xem xét một số nhiệm vụ điển hình để quản lý người dùng hoặc nhóm cục bộ bằng cmdlet PowerShell của mô-đun LocalAccounts trên máy tính chạy Windows 10.

Cách quản lý người dùng cục bộ Windows với PowerShell?

Hiển thị danh sách người dùng cục bộ hiện có trong Windows:

Get-LocalUser

Quản lý người dùng và nhóm cục bộ với PowerShell

Như bạn thấy, có 6 tài khoản người dùng cục bộ trên máy tính, và 4 trong số đó bị vô hiệu hóa (Enabled=False).

Để hiển thị tất cả các thuộc tính của một tài khoản cục bộ (tương tự như cmdlet Get-ADUser dùng để hiển thị thông tin về người dùng miền AD), hãy chạy lệnh này:

Get-LocalUser -Name root | Select-Object *

AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 3/12/2019 10:14:29 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 3/11/2019 10:14:29 PM
LastLogon : 3/11/2019 4:18:17 PM
Name : root
SID : S-1-5-21-2605456602-2293283241-3832290805-1001
PrincipalSource : Local
ObjectClass : User

Để lấy thuộc tính cụ thể của người dùng, như ngày thay đổi mật khẩu gần nhất, hãy chạy lệnh:

Get-LocalUser -Name root | Select-Object PasswordLastSet

Quản lý người dùng và nhóm cục bộ với PowerShell

Hãy tạo người dùng cục bộ mới với cmdlet New-LocalUser. Cmdlet này cho phép bạn tạo các loại tài khoản sau:

  • Tài khoản cục bộ Windows;
  • Tài khoản Microsoft;
  • Tài khoản Azure AD.

Khi tạo tài khoản người dùng với cmdlet New-LocalUser, bạn không thể chỉ định mật khẩu người dùng dưới dạng văn bản thuần túy làm đối số Password. Bạn phải yêu cầu mật khẩu theo cách tương tác và chuyển đổi nó thành chuỗi bảo mật trước:

$UserPassword = Read-Host –AsSecureString

Hoặc chỉ định mật khẩu trực tiếp trong bảng điều khiển PoSh:

$UserPassword = ConvertTo-SecureString "H1PH0Ppa$$" -AsPlainText -Force
New-LocalUser John -Password $UserPassword -FullName "Johh Lennon" -Description "Local Account for Remote Access"

Để tạo người dùng trong miền AD, hãy sử dụng cmdlet New-ADUser.

Để thay đổi mật khẩu của người dùng, hãy sử dụng cmdlet LocalUser (giả sử bạn đã chuyển đổi mật khẩu mới thành SecureString):

Set-LocalUser -Name john -Password $UserPassword –Verbose

Quản lý người dùng và nhóm cục bộ với PowerShell

Để đặt cờ "Mật khẩu không bao giờ hết hạn", hãy chạy lệnh này:

Set-LocalUser -Name john –PasswordNeverExpires $False

Như bạn thấy, bạn không cần chuyển đổi giá trị UserAccountControl như khi quản lý thuộc tính đối tượng người dùng AD.

Như bạn nhớ, bạn có thể đăng nhập Windows 10 bằng tài khoản Microsoft của mình. Nếu bạn phải tạo đăng nhập người dùng mới cho tài khoản Microsoft, hãy chạy lệnh này. (Lưu ý rằng bạn không cần chỉ định mật khẩu tài khoản vì nó được lưu trữ ở Microsoft.)

New-LocalUser -Name "MicrosoftAccount\woshub@outlook.com" -Description "This is a Microsoft account"

Để tạo tài khoản cục bộ liên quan đến tài khoản Azure AD của bạn (ví dụ: bạn đang sử dụng Office 365), hãy chạy lệnh sau:

New-LocalUser -Name "AzureAD\admin@woshub.com" -Description " This is an Azure AD account"

Để xóa người dùng cục bộ:

Remove-LocalUser -Name john -Verbose

Cách quản lý nhóm cục bộ Windows bằng PowerShell?

Bây giờ hiển thị danh sách các nhóm cục bộ trên máy tính của bạn:

Get-LocalGroup

Quản lý người dùng và nhóm cục bộ với PowerShell

Tạo nhóm mới:

New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'

Thêm một số tài khoản cục bộ và nhóm quản trị viên cục bộ vào nhóm mới:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose

Mẹo. Cách tạo, xóa hoặc thêm người dùng vào nhóm miền AD có thể tìm thấy trong bài viết Quản lý nhóm Active Directory bằng PowerShell.

Nếu máy tính của bạn tham gia vào miền AD, bạn có thể thêm tài khoản và nhóm miền vào nhóm cục bộ của mình. Để làm điều đó, hãy chỉ định chúng theo định dạng sau: DomainName\jonhl hoặc DomainName\'domain admins'.

Quản lý người dùng và nhóm cục bộ với PowerShell

Bạn cũng có thể thêm người dùng vào các nhóm bằng đường ống sau (chúng ta sẽ thêm người dùng vào nhóm quản trị viên cục bộ):

Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'

Hiển thị danh sách người dùng trong một nhóm cục bộ:

Get-LocalGroupMember -Group 'RemoteSupport'

Như bạn thấy, chúng tôi chỉ sử dụng các tài khoản cục bộ (PrincipalSource – Local). Tuy nhiên, tài khoản miền (domain), tài khoản Microsoft (MicrosoftAccount) hoặc tài khoản Azure (AzureAD) cũng có thể được sử dụng.

Quản lý người dùng và nhóm cục bộ với PowerShell

Để hiển thị danh sách các nhóm mà một người dùng cụ thể là thành viên, bạn sẽ phải kiểm tra mọi nhóm cục bộ trên máy tính:

foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member john –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}

Để xóa người dùng khỏi nhóm, hãy chạy lệnh này:

Remove-LocalGroupMember -Group 'RemoteSupport' –Member john

Để quản lý người dùng cục bộ trên máy tính từ xa, hãy kết nối với nó bằng WinRM và sử dụng cmdlet Invoke-Command hoặc Enter-PSSession.

Ví dụ, bạn cần tạo danh sách tài khoản trong nhóm cục bộ trên các máy tính từ xa:

$winrm_ssn = new-pssession -computer Lon-Srv01,Lon-Srv02,Lon-Srv03
invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $winrm_ssn -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"