כיצד ליצור, לשנות ולהסיר משתמשים או קבוצות מקומיים באמצעות PowerShell


באפשרותך להשתמש במודול PowerShell המוכלל, Microsoft.PowerShell.LocalAccounts, כדי לנהל משתמשים וקבוצות מקומיים ב- Windows. מודול זה מאפשר לך ליצור או למחוק משתמשים מקומיים וקבוצות אבטחה, ולהוסיף או להסיר משתמשים מקבוצות. המודול זמין ב- Windows Server 2016 וב- Windows 10 ובגירסאות חדשות יותר. מודול זה מותקן עם Windows Management Framework 5.1 בגירסאות קודמות של Windows בעת שדרוג גירסת PowerShell.

קיימים 15 רכיבי cmdlet במודול LocalAccounts. באפשרותך להציג את הרשימה המלאה של רכיבי cmdlet של המודולים באופן הבא:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

  • Add-LocalGroupMember

    - להוסיף משתמש לקבוצת אבטחה מקומית;

  • Disable-LocalUser

    - להשבית חשבון משתמש מקומי;

  • Enable-LocalUser

    - לאפשר חשבון משתמש מקומי;

  • Get-LocalGroup

    - לקבל מידע על קבוצה מקומית;

  • Get-LocalGroupMember

    - להציג את רשימת המשתמשים בקבוצה מקומית;

  • Get-LocalUser

    - להציג מידע על משתמש מקומי;

  • New-LocalGroup

    - ליצור קבוצה מקומית חדשה;

  • New-LocalUser

    - ליצור משתמש מקומי;

  • Remove-LocalGroup

    - למחוק קבוצה מקומית;

  • Remove-LocalGroupMember

    - להסיר חבר מקבוצה מקומית;

  • Remove-LocalUser

    - למחוק משתמש מקומי;

  • Rename-LocalGroup

    - לשנות שם של קבוצה מקומית;

  • Rename-LocalUser

    - לשנות שם משתמש;

  • Set-LocalGroup

    - לשנות הגדרות קבוצה;

  • Set-LocalUser

    - שנה הגדרות משתמש.

הבה נבחן כמה משימות אופייניות לניהול משתמשים וקבוצות מקומיים במחשב Windows באמצעות רכיבי ה- cmdlet של PowerShell מהמודול LocalAccounts.

בעבר, יישום ה- Snap-in MMC הגרפי של ניהול משתמשים וקבוצות מקומיים (

lusrmgr.msc

), ה

net user

ו

net localgroup

פקודות שימשו בדרך כלל לניהול משתמשים וקבוצות מקומיים ב- Windows.

יצירת משתמש מקומי חדש באמצעות PowerShell

השתמש ב- cmdlet New-LocalUser כדי ליצור במהירות חשבון משתמש מקומי חדש ב- Windows:

New-LocalUser -Name "TestUser1" -FullName "Test User" -Description "User for tests"

ציין סיסמה עבור המשתמש החדש:

האורך והמורכבות של סיסמת המשתמש חייבים להיות בהתאם למדיניות סיסמאות מקומיות ומדיניות תחום (אם המחשב מצורף לתחום Active Directory).

אם ברצונך להשתמש ב- cmdlet New-LocalUser כדי ליצור באופן אוטומטי משתמשים מקומיים חדשים מקבצי script של PowerShell, באפשרותך להגדיר מראש את סיסמת המשתמש המוגדרת כברירת מחדל בקוד קובץ ה- Script. יש להמיר את סיסמת הטקסט הרגיל למחרוזת מאובטחת:

$pass = ConvertTo-SecureString "WOS_hubP@ss2023!" -AsPlainText -Force
New-LocalUser -Name TestUser2 -Password $password

כדי להוסיף משתמש לקבוצה Administrators המקומית, הפעל את הפקודה:

Add-LocalGroupMember -Group Administrators -Member TestUser2

באפשרותך להציג את רשימת המשתמשים המקומיים ב- Windows במסך ההתחברות.

באפשרותך גם להשתמש באפשרויות הבאות בעת יצירת חשבון משתמש מקומי של Windows:

  • -AccountExpires

    - להגדיר את תאריך התפוגה של החשבון, ולאחר מכן החשבון יושבת באופן אוטומטי (כברירת מחדל, New-LocalUser יוצר חשבון שלעולם לא יפוג);

  • -AccountNeverExpires
  • -Disabled

    - להשבית חשבון לאחר היצירה;

  • -PasswordNeverExpires

    - להגדיר את הסיסמה של המשתמש לעולם לא יפוג;

  • -UserMayNotChangePassword

    - המשתמש אינו יכול לשנות את סיסמת החשבון.

השתמש ב- cmdlet New-ADUser כדי ליצור משתמש חדש בתחום Active Directory.

ניהול חשבונות משתמשים מקומיים ב- Windows באמצעות PowerShell

כדי לפרט את כל משתמשי Windows המקומיים במחשב הנוכחי, הפעל:

Get-LocalUser

כפי שניתן לראות, ישנם 6 חשבונות מקומיים במחשב, 4 מהם מושבתים (Enabled=False), כולל מנהל Windows המובנה.

כדי להציג את כל המאפיינים של חשבון מקומי (בדומה ל- cmdlet Get-ADUser המשמש להצגת מידע אודות משתמשי תחום AD), הפעל פקודה זו:

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

עיין בתכונה PrincipalSource. הוא מכיל את סוג חשבון המשתמש. זה יכול להיות:

  • משתמש Windows מקומי (PrincipalSource: מקומי)

  • חשבונות Microsoft (PrincipalSource: חשבון Microsoft)

  • משתמשי Azure AD (PrincipalSource: AzureAD)

כדי לקבל את הערך של תכונת משתמש ספציפית, כגון תאריך שינוי הסיסמה האחרון:

Get-LocalUser -Name root | Select-Object PasswordLastSet

כדי לשנות (לאפס) את סיסמת המשתמש, השתמש בפקודה (נניח שכבר המרת את הסיסמה החדשה ל- SecureString):

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

באפשרותך להשתמש במדיניות פתרון סיסמאות מנהל מערכת מקומי של Windows (LAPS) כדי לנהל ולשנות באופן אוטומטי סיסמאות מנהל מערכת מקומיות בכל המחשבים בתחום.

כדי להגדיר את הדגל "פג תוקפה של הסיסמה לעולם" עבור המשתמש, השתמש בפקודה:

Set-LocalUser -Name john -PasswordNeverExpires $False

כפי שניתן לראות, אינך צריך להמיר את הערך UserAccountControl כמו בעת ניהול מאפייני חשבון משתמש ב- AD.

השבת את החשבון המקומי:

Disable-LocalUser -Name john

הפוך את המשתמש המקומי לזמין:

Enable-LocalUser -Name john

כדי להסיר משתמש מקומי:

Remove-LocalUser -Name john -Verbose

כיצד ליצור ולנהל קבוצות מקומיות באמצעות PowerShell?

באפשרותך לרשום את הקבוצות המקומיות במכשיר Windows שלך באמצעות הפקודה:

Get-LocalGroup

בוא ניצור קבוצה מקומית חדשה:

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

כעת נוסיף כמה חשבונות מקומיים וקבוצה של מנהלי מערכת מקומיים לקבוצה החדשה:

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

תשר. כיצד ליצור, להסיר או להוסיף משתמשים לקבוצות התחומים של AD מתואר ברשומה ניהול קבוצות Active Directory באמצעות PowerShell.

באפשרותך גם להוסיף משתמש לקבוצות באמצעות הצינור הבא (בדוגמה זו, נוסיף את המשתמש לקבוצה מקומית המאפשרת לו לגשת לשולחן העבודה של המחשב מרחוק באמצעות RDP):

Get-Localuser -Name TestUser2 | Add-LocalGroupMember -Group 'Remote Desktop Users'

הצגת רשימת המשתמשים בקבוצה המקומית:

Get-LocalGroupMember -Group 'RemoteSupport'

אם המחשב שלך מצורף לתחום AD, באפשרותך להוסיף חשבונות וקבוצות של תחומים לקבוצה המקומית שלך. השתמש בתחביר הבא: DomainName\jonhl או DomainName\'domain admins'.

באפשרותך להוסיף לא רק חשבונות מקומיים (PrincipalSource - מקומי), אלא גם חשבונות תחום (תחום), חשבונות Microsoft (MicrosoftAccount) וחשבונות Azure (AzureAD) לקבוצות המקומיות.

השתמש בתחביר הבא כדי להוסיף משתמש Microsoft או AzureAD לקבוצה מקומית:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('MicrosoftAccount\a-d@outlook.com','AzureAD\admin@a-d.site') -Verbose

כדי לפרט את הקבוצות המקומיות שמשתמש מסוים חבר בהן, הפעל את קובץ ה- Script הבא (קובץ ה- Script בודק חברות עבור כל קבוצה מקומית):


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

כדי להסיר משתמש מקבוצה, בצע את הפקודה:

Remove-LocalGroupMember -Group 'RemoteSupport' -Member john

כדי לנהל משתמשים מקומיים במחשב מרוחק, באפשרותך להתחבר למחשב באמצעות WinRM באמצעות רכיבי ה- cmdlet Invoke-Command או Enter-PSSession.

לדוגמה, ייתכן שתרצה לקבל רשימה של חשבונות בקבוצה המקומית במחשבים מרוחקים:

$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"