שם ידי, השוואת קבצים או תוכן קבצים בווינדוס הוא משהו שעשית דרך השנים. אך האם להביט על קבצים ותוכן יכול לגרום לעייפות בעיניים בסוף הדרך? מזל שלך, יש לך את האפשרות להשוות אובייקטים עם PowerShell בדיוק בצורה שאתה רוצה עם פקודת Compare-Object
.
במדריך זה, תלמד להשוות אובייקטים עם PowerShell, כמו קבצים או תוכן קבצים, תוך התאמה אישית של הפלט.
שמור על עיניים שלך מהמאמץ והשווה אובייקטים בצורה יעילה!
דרישות מוקדמות
מדובר בהדגמה ידיים, אך כל עוד יש לך מחשב עם Windows ו-PowerShell, אתה בסדר. גרסת PowerShell 5.1 משמשת במדריך זה.
השוואת תוכן קובץ
תתחיל כמו עובד עם שני קבצים שונים עם אותם תוכן. איך תדע אם שני הקבצים שומרים על אותו תוכן? הרצת פקודת Get-Content
יכולה להיות הפתרון. פקודת Get-Content
מחזירה את התוכן של קובץ ממיקום מסוים.
פתח את PowerShell והרץ את הפקודות הבאות כדי לקבל את התוכן (Get-Content
) של הקבצים המסוימים לתוך משתנים ($file1
ו-$file2
). החלף את הנתיב למטה עם הנתיב של הקבצים שברצונך להשוות.

כעת, הרץ את הפקודה Compare-Object
למעלה כדי להשוות את תוכן המשתנה $file
(-ReferenceObject
) עם $file2
(-DifferenceObject
).
באופן ברירת מחדל, Compare-Object
אינה מציגה את הערכים הנמצאים בשני המשתנים. כפתרון, הוסף את הפרמטר -IncludeEqual
כדי להציג את הערכים בפלט.
מתוך הפלט למעלה, הSideIndicator מספר האם שני הקבצים יש להם את אותו התוכן (לפי שורה) או לא:
SideIndicator | Definition |
== | Indicates the content is present in both files ($file1 and $file2). |
=> | Indicates the content only exists in the -DifferenceObject file ($file2). |
=> | Indicates the content only exists in the -ReferenceObject file ($file1). |

אולי תעדיף להשוות מחרוזות באופן תלוי-רישיוני. אם זה המקרה, הוסף את הפרמטר -CaseSensitive
מאחר והפקודה Compare-Object
אינה רגילה לרגילות התיקים ללא רישיון.
הרץ את הפקודות למעלה כדי להשוות את $file1
עם $file2
, גם עם וגם בלעדיו של רגילות הרישיון.
כפי שאתה יכול לראות למטה, ללא הפרמטר -CaseSensitive
, פקודת Compare-Object
אינה מציגה את powershell בפלט.

השוואת מחרוזות עובדת באופן דומה להשוואת תוכן קובץ, כאשר תוכל לציין את המחרוזות או להשתמש במשתנים לייצוג המחרוזות להשוואה. שים לב שפקודת
Compare-Object
משווה בין מחרוזות המקור ולא בין תווים.
השוואת רשימות של קבצים ממקומות שונים
עכשיו שאתה יודע איך להשוות תוכן קבצים, למה לא להשוות קבצים אמיתיים ממיקומים שונים? השוואת רשימות של קבצים מתאימה כאשר אתה ניהול שני שרתים שונים בהם אתה שומר על אותה תיקייה עבור שירות הכולל את אותם קבצים.
הפעם תשתמש בפקודת Get-ChildItem
כדי לקבל את רשימת הקבצים בתיקייה להשוואה עם רשימת הקבצים בתיקייה אחרת.
הרץ את הפקודות למטה כדי לקבל את רשימות הקבצים מתיקיות C:\Temp\Folder1\ ו-C:\Temp\Folder2 ולאחסן את הרשימות במשתנים $Folder1List ו-$Folder2List.
ניתן גם להשתמש בפרמטר
-Recurse
בפקודתGet-Childitem
כדי לקבל באופן רקורסיבי רשימת קבצים בתת-תיקיות.

השוואת אובייקטים ב-PowerShell לפי מאפיינים
הרגע השווית קבצים במיקומים שונים, אך ייתכן שתרצה להוסיף אפשרות נוספת להשוואת קבצים לפי מאפיינים. ובהדגמה זו, תשווה קבצים לפי lastaccesstime.
הרץ את הפקודות הבאות להשוואת קבצים מתיקיות שונות ($Folder1 ו-$Folder2) לפי lastaccesstime.

השוואת תהליכים ושירותים
יכולות הפקודה Compare-Object
אינן מוגבלות רק להשוואת מחרוזות או תוכן בקבצים. ניתן גם להשוות תהליכים, שירותים וכו'.
אולי תרצה לתפוס שירותים בין שני שרתים. אם כך, תוכל לאחסן את השירותים במשתנים ולהשוות את השירותים.
הרץ את הפקודות הבאות להשוואת שירותים בין שני שרתים שונים ($server1
ו-$server2
).

אם אתה מעדיף להשוות תהליכים, הפקודות לביצוע דומות להשוואת שירותים. גם ניתן להשוות תהליכים באותו מכונה או בשני שרתים שונים.
הרץ את הפקודות למטה ללכידת תהליכים פועלים משתי מכונות (Jumpbox
ושרתי AD
) לתוך משתנים ולהשוות אותם.

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

השוואת משתמשים בין קבוצות שונות של פעילות כוללת ב-Active Directory
אם אתה מנהל את אותו קבוצת משתמשים מקבוצות AD שונות, השוואת רשימת המשתמשים עם הפקודה Compare-Object
תהיה שימושית. באמצעות זאת ניתן לשמור על צפייה מקרוב אם משתמש חסר מאחת משתי קבוצות ה-AD השונות.
הרץ את הפקודות הבאות כדי להשוות משתמשים בין שתי קבוצות שונות ב-AD (staticvmusers
ו־vdivmusers
).

מסקנה
במדריך זה, למדת קטעים על איך להשוות עצות עם PowerShell בדרכים רבות, מתוכן קבצי תוכן למשתמשים בקבוצות AD. הבנת כי פקודת ה- Compare-Object
היא פתרון מהיר להשוואת קבצים, שירותים, תהליכים וכו '.
רכשת את הידע הבסיסי בשימוש בפקודת ה- Compare-Object
. עכשיו, למה לא לבנות על הידע החדש שנמצא לך על ידי ללמוד מערכים של ערכי PowerShell חזקים?
Source:
https://adamtheautomator.com/compare-objects-with-powershell/