Get-ItemProperty ב-PowerShell: מדריך מלא עם דוגמאות

העדכון אחרון: 14/08/2025
מחבר: יצחק
  • הפונקציה Get-ItemProperty מאחזרת מאפיינים במערכת הקבצים, ברישום וב-IIS עם תחביר עקבי.
  • נתיב ראשי/נתיב מילולי, שם, הכללה/אי הכללה, סינון ואישורים כדי לכוונן את השאילתות.
  • מקרים אמיתיים: גרסה של Windows, תוכנה מותקנת, קישורי IIS ומטא-דאטה של קבצים.
  • תרחישים מתקדמים: מרחוק, הפעלת Windows, היסטוריה USB ופתרון שגיאות.

פקודת Get-ItemProperty ב-PowerShell

אם אתה עובד עם Windows ו- PowerShell, שליטה ב-cmdlet Get-ItemProperty פותחת את הדלת לקריאת מאפיינים של קבצים, תיקיות, מפתחות רישום ואפילו אובייקטים שנחשפים על ידי ספקים אחרים. זה אחד מאלה פקוד אשר משמשים מדי יום לביקורת מערכות, קבלת מטא-דאטה או סקירת תצורות מבלי לפתוח ממשק גרפי כלשהו.

במדריך מעשי זה תמצאו מאת התחביר והפרמטרים שלו לדוגמאות אמיתיות שהוחלו על הרישום, מערכת הקבצים ו-IIS, יחד עם טריקים עבור סביבות מרוחקות ופתרון בעיות נפוצות. הכל עם מיקוד ברור, בספרדית, ועם פקודות מוכנות להדבקה בקונסולה שלך, כך שתוכל לעבוד בצורה שוטפת מהרגע הראשון.

מה זה Get-ItemProperty ב-PowerShell?

Get-ItemProperty הוא cmdlet שמאחזר את המאפיינים של פריט אחד או יותר במיקום נתון, תוך התחשבות בספק PowerShell הבסיסי (FileSystem, Registry וכו'). לדוגמה, ניתן לקרוא את המאפיין LastAccessTime של קובץ, לקבל ערכים ממפתח רישום או לבצע שאילתה על מאפיינים של אובייקטי IIS דרך הספק שלהם.

היתרון הגדול הוא העקביות שלו: אותו רעיון עובד על פני מקורות נתונים שונים, והוא גם תומך ב-piping וב-wildcards ברוב התרחישים דרך הפרמטרים שלו. אם תעברו בין קבצים, רישום ומרחבי שמות כמו IIS, תרגישו בבית עם cmdlet זה.

יש גם את הכינוי gp, שהוא מאוד פרקטי לכתיבה מהירה בקונסולה (gp שווה ערך ל-Get-ItemProperty), ועובד על כל ספק שנחשף בסשן. ניתן לראות את הספקים הזמינים עם Get-PSProvider.

שימוש כללי ב-Get-ItemProperty

כיצד להציג מדריכים ועזרה עבור תחביר פקודות ב-PowerShell
כתבות קשורות:
כיצד לצפות במדריכי עזרה ופקודות ב-PowerShell

תחביר וקבוצות פרמטרים

Get-ItemProperty תומך בשתי דרכים עיקריות לציון הנתיב: באמצעות Path (ברירת מחדל) או LiteralPath, בנוסף לסינון לפי שם המאפיין עם Name. הבחירה בין Path ל-LiteralPath תלויה בשאלה האם אתה זקוק ל-PowerShell כדי לפרש תווים כלליים או לא.

צורה עם נתיב (ברירת מחדל):

Get-ItemProperty  <String[]>  <String[]>]  >] >]  

טופס עם LiteralPath (ללא פירוש תווים כלליים):

Get-ItemProperty  <String[]>] -LiteralPath <String[]>  >] >]  

בעת שימוש ב-LiteralPath, PowerShell לא יתייחס לתווים כלשהם כתווים כלליים, ומומלץ לתחום נתיבי בריחה במירכאות בודדות כדי להימנע מפרשנויות לא רצויות.

תחביר עם Path ו-LiteralPath

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

פרמטרים מרכזיים וכיצד להשתמש בהם בצורה נכונה

בנוסף ל-Path, LiteralPath ו-Name, ישנם מספר פרמטרים שימושיים לשליטה (Include, Exclude, Filter, Credential), כמו גם פרמטרים נפוצים של PowerShell לשליטה בפלט ובהתנהגות של ה-cmdlet. החשובים ביותר מסוכמים להלן יחד עם פרטיהם המעשיים.

  Canva: איך ליצור טריפטיכון מאפס - הדרכה ליצירה

-נָתִיב

מציין את הנתיב של האלמנט או האלמנטים ותומך בתווים כלליים (wildcards). זוהי קבוצת הפרמטרים המוגדרת כברירת מחדל, מיקום 0, ומקבלת קלט לפי pipe ולפי שם המאפיין.

  • סוג: מחרוזת []
  • תווים כלליים: כן
  • תפקיד: 0
  • הֶכְרֵחִי: כן באופן כללי
  • בִּיוּב: כן (לפי ערך ולפי שם הנכס)

-נתיב מילולי

מסלולים מדויקים ללא פירוש תווים כלליים. השתמש בו כאשר הנתיב שלך מכיל תווים מיוחדים או שאתה רוצה להימנע מפרשנויות. השתמש בו עם מירכאות בודדות כדי להתעלם מרצפי בריחה.

  • סוג: מחרוזת []
  • תווים כלליים: לא
  • כינוי: PSPath, LP
  • הֶכְרֵחִי: כן באופן כללי
  • בִּיוּב: לפי שם הנכס

שם

סנן אילו מאפיינים ברצונך לאחזר לפי שם, תוך מתן אפשרות לתווים כלליים (wildcards). זה שימושי כאשר אתה זקוק רק למאפיין ספציפי אחד או יותר.

  • סוג: מחרוזת []
  • תווים כלליים: כן
  • כינוי: PSProperty
  • תפקיד: 1

-הכללה ו-אי הכללה

הם מאפשרים לך להגביל אילו אלמנטים לכלול או לא לכלול, ובדרך כלל יעילים כאשר הנתיב מצביע על תוכן של מכולה (לדוגמה, 'C:\\Windows\\*'). שניהם מקבלים תווים כלליים ומקבלים מערך של תבניות.

  • -כלול סוג: מחרוזת[] — תווים כלליים: כן - קָבוּעַ מִרֹאשׁ: ללא חתימה
  • -סוג אי הכללה: מחרוזת[] — תווים כלליים: כן - קָבוּעַ מִרֹאשׁ: ללא חתימה

-לְסַנֵן

החל מסנן ברמת הספק, שהוא יעיל יותר מסינון מאוחר יותר ב-PowerShell. ספק FileSystem מבוסס על תחביר של תווים כלליים (wildcard card), ומפחית את התקורה על ידי אחזור אובייקטים שכבר מסוננים.

  • סוג: מחרוזת
  • תווים כלליים: כן (תלוי בספק)

-תְעוּדָה

מאפשר לך לציין אישורים (PSCredential) כאשר הספק תומך בכך. שימושי בתרחישים מרוחקים או עם גישה מוגנת.

  • סוג: PSCreditential
  • קָבוּעַ מִרֹאשׁ: משתמש נוכחי
  • תווים כלליים: לא
  • צינור לפי שם מאפיין: כן

פרמטרים נפוצים

תומך בבוררי PowerShell נפוצים (-Debug, -ErrorAction, -Verbose, -WarningAction, -OutVariable וכו'), שימושי מאוד לטיפול בשגיאות, רמת מילות ודירוג ותיעול מידע (ראה about_CommonParameters).

קלט ופלט של Cmdlet

קלט: מקבל מחרוזות (String) עם נתיבי צינור. זה מקל על העברת נתיבים שנוצרו על ידי cmdlets אחרים ישירות ל-Get-ItemProperty.

פלט: מחזירה אובייקט עבור כל מאפיין מוחזר, שסוגו תלוי בספק (למשל, FileInfo או DirectoryInfo ב-FileSystem; ערכים ספציפיים ברישום). סוגים כגון String, Boolean או DateTime עשויים להופיע גם בהתאם למאפיין שאתה מבצע שאילתה.

קלט ופלט ב-Get-ItemProperty

דוגמאות חיוניות עם FileSystem

ראשית, מקרה טיפוסי הוא עיון במאפיינים של ספרייה או קובץ, ואם תרצו, דמעת פורם הפלט כדי לראות אותו כרשימה. זה נותן לך תמונה מהירה של מטא-דאטה וחותמות זמן.

קבל מידע מתיקייה ספציפית:

Get-ItemProperty 'C:\\Windows'

רשימת מאפיינים של קובץ והצגתם כרשימה:

Get-ItemProperty 'C:\\Test\\Weather.xls' | Format-List

אם ברצונך להשתמש במאפיינים ספציפיים ממספר מסמכים, שלב עם Select-Object לקבלת פלט קומפקטי. לדוגמה, עבור מסמכים של Word בתיקייה של משתמש:

Get-ItemProperty 'C:\\Usuarios\\Administrador\\Documents\\*.docx' | Select-Object Name, LastWriteTime, Length

עבור מטא-דאטה מורחבים (כגון פרטי EXIF בתמונות) ניתן למשוך את אובייקט ה-COM 'Shell.Application' ולקרוא מאפיינים מתקדמים לפי אינדקס. זה שימושי במיוחד עבור תמונות או קבצי מולטימדיה:

$shell  = New-Object -ComObject 'Shell.Application'
$folder = $shell.Namespace('C:\\Photos')
$file   = $folder.ParseName('Vacation2023.jpg')
# Autor (índice 20, según la vista del shell)
$folder.GetDetailsOf($file, 20)

עבודה עם הרישום של Windows

הרישום הוא אחד היעדים הנפוצים ביותר עבור Get-ItemProperty. ממידע מערכת ועד רשימות תוכנה, הכל בהישג ידך עם הנתיבים הנכונים וכינויי GP למהירות. למידע מעמיק יותר בנושאים קשורים, תוכל לבדוק את שלנו מדריך לעריכת הרישום באמצעות PowerShell.

  גלה כיצד לאפשר הודעות מתמשכות באייפון

קריאת ערכים ממפתח גרסת מערכת:

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'

קחו מאפיין ספציפי (למשל שם מוצר):

(Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion').ProductName

אחזור ערך ספציפי בתוך מפתח משנה: הנתיב מציין את מפתח המשנה ועם -Name אתה בוחר את הערך של ערך זה.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion' -Name 'ProgramFilesDir'

קבל את כל שמות הערכים והנתונים במפתח PowerShell: תראה מאפיינים כמו ApplicationBase, ConsoleHostAssemblyName, PowerShellVersion או RuntimeVersion.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\1\\PowerShellEngine'

רשימת תוכנות מותקנות (64 סיביות): דפוס זה נמצא בשימוש נרחב במלאי. אם ברצונך להתעמק בטכניקות ביקורת ברישום, למד גם... כדי לרשום תוכניות מותקנות ב-Windows באמצעות PowerShell.

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

רשימת תוכנות מותקנות (32 סיביות על מערכת הפעלה 64 סיביות): זכור לבדוק את נתיב Wow6432Node עבור יישומים של 32 סיביות.

Get-ItemProperty 'HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

גרסה קלאסית נוספת, ממוינת לפי תאריך התקנה:

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object InstallDate

בדוק את גרסת Windows עם מאפיינים ספציפיים (אידיאלי לדוחות מהירים):

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' \
  | Select-Object ProductName, ReleaseId, CurrentBuild

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

Get-ItemProperty -Path 'HKLM:\\SYSTEM\\Setup\\Source OS*' \
  | Select-Object PSChildName, ProductName, ReleaseId, DisplayVersion, CurrentBuild

ניהול IIS: Set-ItemProperty, New-ItemProperty, Get-Item

ספק IIS מאפשר לך לנהל אתרים, יישומים, ספריות וירטואליות ומאגרי יישומים באמצעות cmdlets מובנים. ניתן ליצור פריטים באמצעות New-Item, לבדוק פריטים באמצעות Get-Item, להגדיר מאפיינים באמצעות Set-ItemProperty, או להוסיף לאוספים באמצעות New-ItemProperty. כדי להרחיב את הידע שלך בניהול מתקדם, אנו ממליצים לבקר באתר .

הצג מאפיינים מרכזיים של אתר בשם 'DemoSite': הפלט מציג סטטוס, נתיב פיזי וקישורים, בין שאר המאפיינים המרכזיים.

Get-Item 'IIS:\\Sites\\DemoSite'

צפה באוסף הכריכות של אתר בפירוט: אנו משתמשים בסוגריים כדי להעריך תחילה ולאחר מכן לגשת לאוסף.

(Get-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings').Collection

בדוק מאפיינים מורכבים של AppPool (למשל, processModel) וקרא את זמן ההפעלה שלו:

(Get-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel').startupTimeLimit

הוסף קשירה חדשה לאתר באמצעות New-ItemProperty: מושלם לאוספים כגון 'כריכות'.

New-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings' -Value @{ protocol = 'http'; bindingInformation = ':8081:' }

שנה מאפיין אתר פשוט עם Set-ItemProperty (למשל, שם):

Set-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'name' -Value 'NewDemoSite'

חזרה לשמו המקורי היא פשוטה כמו החלה מחדש של Set-ItemProperty עם הערך הקודם:

Set-ItemProperty 'IIS:\\Sites\\NewDemoSite' -Name 'name' -Value 'DemoSite'

צור משתמש מקומי עם ADSI והפעל AppPool תחת זהות זו, משהו נפוץ בסביבות הדורשות זהויות ייעודיות:

$computer = 'WinNT://.'
$user     = $computer.Create('user', 'DemoAppPoolUser')
$user.SetPassword('Secret!!Pw3009')
$user.SetInfo()
Set-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel' -Value @{ userName = 'DemoAppPoolUser'; password = 'Secret!!Pw3009'; identityType = 3 }

וריאציה עם Get-Item/Set-Item המנצלת השלמה אוטומטית: מאוד נוח אם אתם מתכוונים לשחק בכמה נכסים ברצף.

$demoPool = Get-Item 'IIS:\\AppPools\\DemoAppPool'
$demoPool.processModel.userName    = 'DemoAppPoolUser'
$demoPool.processModel.password    = 'Secret!!Pw3009'
$demoPool.processModel.identityType = 3
$demoPool | Set-Item

תרחישים מתקדמים ומרוחקים

Get-ItemProperty מצטיין גם בעת ביצוע שאילתות מרחוק, סטטוסי הפעלה או אפילו בעת מעקב אחר חיבור של התקני USB. הנה כמה רעיונות מעשיים לסביבות עבודה אמיתיות. להעמקה במשימות ניהול מרחוק, תוכלו לבדוק את שלנו מדריך להקצאת כתובות IP סטטיות ב-Windows.

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

בצע שאילתה ברישום מרחוק באמצעות Invoke-Command: שימושי לאיסוף מידע במספר שרתים מבלי להתחבר לכל אחד מהם.

Invoke-Command -ComputerName 'SERVER01' -ScriptBlock {
  Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
}

בדוק את סטטוס ההפעלה של Windows במחשבים מרובים ותרגם את קוד LicenseStatus לטקסט קריא:

$computers = 'WORKSTATION01','WORKSTATION02','WORKSTATION03'
foreach ($computer in $computers) {
  try {
    $status = Invoke-Command -ComputerName $computer -ScriptBlock {
      (Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform').LicenseStatus
    } -ErrorAction Stop
    $activationStatus = switch ($status) {
      0 {'Unlicensed'}
      1 {'Licensed'}
      2 {'Out-of-Box Grace Period'}
      3 {'Out-of-Tolerance Grace Period'}
      4 {'Non-Genuine Grace Period'}
      5 {'Notification'}
      6 {'Extended Grace'}
      default {'Unknown'}
    }
    @{ Computer = $computer; ActivationStatus = $activationStatus }
  }
  catch { @{ Computer = $computer; ActivationStatus = "Error: $_" } }
}

עבור משימות מלאי של חומרה ותוכנה, אתם יכולים גם לבדוק את שלנו מדריך על מידע על המערכת והחומרה עם PowerShell.