11/11/2020

מדריך ל PowerShell בעברית חלק 6 - עבודה עם רגיסטרי




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

ככה שקודם כל תעברו על המדריכים הקודמים:

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן
לפורום בנושא באתר devhub.co.il כאן

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

[reg query HKCU\Software\[PATH_TO_MY_DIR] /v [KEY_NAME

ב PowerShell זה נראה כך:

\Get-ItemProperty HKCU:\SOFTWARE\Google\Chrome

ממש כאילו אתם משתמשים בסייר קבצים בשביל לסייר בין תיקיות, ולמה זה? זה תודות ל - Psproviders, ומה זה בעצם?  מדובר ב"מתאם" שהופך חלקים מסויימים של המידע ל"כונן דיסק" ובעצם מיצר PsDrives , ו PsDrive הוא PowerShell Drive - שזה למעשה סוג של מידע - שמותאם\ממופה ונראה כ"כונן דוסק" שאנחנו מכירים ורואים ב CMD, מה שמאפשר לנו לגשת לכל מיני מקומות במערכת הפעלה בצורה של סייר קבצים, כמו לדוגמא אפשרות לגשת לרג'יסטרי בהיררכיה של ספריות או למפות אותו לאות כונן ולהשתמש בפקודה כמו Dir, CD וכד'.

ניתן לגשת להרבה מאוד מקומות בצורה הזאת, אבל אנחנו נתמקד ברגיסטרי בלבד.

מי שרוצה לקרוא יותר על האופציות של ה Providers\PsDrives - מומלץ לקרוא באתר של מיקרוסופט: כאן


איך עובדים עם הריגסטרי ב PowerShell?

1. נתחיל עם השאלה הכי חשובה - איך לסייר ברגיסטרי כאילו זאת תיקייה רגילה ?

אני מאוד שמח ששאלתם, קודם כל בשביל להבין אילו ל Psdrives יש, אפשר לגשת, נריץ בקונסול את הפקודה:
Get-PSDrive



בתוצאה שנקבל, נראה לאילו נתונים ניתן לגשת, אותנו מעניין הרגיסטי, אנחנו יכולים לגשת ל
1) HKEY_LOCAL_MACHINE - בקונסול (חלון ה PowerShell) נשתמש בקיצור - hklm
2) HKEY_CURRENT_USER - בקונסול (חלון ה PowerShell) נשתמש בקיצור hkcu

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

1) REG_SZ
2) REG_DWORD 
3) REG_MULTI_SZ

להלן דוגמא להגדרה של אחד הלקוחות שאני נוהג להתחבר אליהם בעזרת FortiClient לצורך תמיכה:





ישנן כמה דרכים לגשת לתוך הערכים של הרגיסטרי, הראשונה, להשתמש בפקודות הרגילות של ה"דוס" כמו cd בשביל לגשת לאיזשהו ענף ברגיסטרי ואנחנו נעשה את זה בצורה הרגילה שאנחנו מכירים -  :cd hklm

לאחר מכן נקבל מצב מאוד מוכר לכולנו - כאילו אנחנו נמצאים בכונן מסויים : 
<\:PS HKLM
:בערך כמו
<c:\users\lev
ועכשיו החלק הכי מעניין, אם נריץ את הפקודה שלומדים בכיתה א' לאנשי Microsoft שהיא dir או בהקבצה א' של לינקוס שהיא ls, נקבל את מה שאנחנו מכירים, תצוגה של התיקייה, או במקרה הזה את הרגיסטרי שאנחנו מכירים מהממשק הגרפי של מיקרוסופט (אל תתיחסו להודעת השגיאה): 




השלב הבא, כפי שכבר ניחשתם, יאפשר לנו פשוט להכנס לכל תיקייה כמו שאנחנו רגילים בדוס, או באחת הפקודות של PowerShell, לדוגמא נכנס ל Software (אל תשכחו שניתן להשתמש ב TAB לצורך השלמה אוט'): 

PS HKLM:\> cd .\SOFTWARE
ואם נקיש עכשיו dir, נקבל את התוכן, כמו שאנחנו רגילים בדוס:



בפקודות של PowerShell יש כמה וכמה פקודות שמקבילות ל cd, כמו שלמדנו בפרקים הקודמים ניתן להשתמש בפקודה get-alias בשביל לבדוק מה מקביל לפקודות שאנחנו מכירים:





 זאת אומרת שאם נרצה להציג את הענף software נוכל לכתוב גם set-location .\software ונגיע לאותו המקום:



2. הצגת ערכים של "מפתחות רגיסטרי" רגיסטרי.

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

א. את המפתח (key) עצמו ואת מה שמתחתיו (Subkey) בעזרת הפקודה - Get-Item
לדוגמאGet-item HKLM:\SOFTWARE\7-Zip


ב. ערך של המפתח ואת מה שהערך מחזיק בתוכו בעזרת הפקודה- Get-ItemProperty
לדוגמאGet-ItemProperty HKLM:\SOFTWARE\7-Zip

ג. ערך ספציפי בתוך קי (Key) מסויים בעזרת הפקודה - Get-ItemPropertyValue
לדוגמא: Get-ItemPropertyValue HKLM:\SOFTWARE\7-Zip\ -Name path64



לצורך הדגמא נגיד ונרצה לדעת מה יש תחת הערך 7zip, פשוט נריץ את הפקודה הבאה :


Get-Item HKLM:\SOFTWARE\7-Zip

ונקבל את התוצאה הבאה :


וכמובן שברגיסטרי הרגיל אנחנו נראה את אותו הדבר:


3) הוספת מפתחות וערכים חדשים

הוספת המפתחות היא קצת יותר מסובכת מאחר וקודם כל יש ליצור את המפתח (key) עצמו ורק לאחר מכן את הערך שלו וההגדרה של הערך:

לדוגמא: ניצור תחת Software את המפתח LeiderTech וניצור ערך מסוג REG_SZ ונרשום בו Lev1 וניצור עוד אחד בשם Lev2 וניצור ערך מסוג dWord וניתן לו את הסיפרה 1

אז נתחיל ביצירת המפתח במקום הרצוח:

New-Item HKLM:\SOFTWARE\LeiderTech

יצרנו את המפתח הרצוי:



לאחר מכן ניצור את הערכים הרצויים בתוך המפתח:

יצירת סטרינג - REG_SZ:

New-ItemProperty HKLM:\SOFTWARE\LeiderTech\ -Name Lev1

יצירת ערך Dword:

"New-ItemProperty HKLM:\SOFTWARE\LeiderTech\ -Name Lev2 -Value 1 -PropertyType "Dword


התוצאה של כלל הפקודות ביחד:


4. שינוי של מפתחות וערכים ברגיסטרי (לא השם של הערך, אלה הערך עצמו)

שינוים ב PowerShell מתבצעים בעזרת פקודות שמתחילות בפועל "set", מי שקרא את החלקים הראשונים של המדריך (במידה ולא - כדי מאוד לקרוא - ישלים לכם הרבה ידע !)  יודע שניתן להריץ את get-command ולקבל את כלל הפקודות הרלוונטיות אז נריץ את הפקודה הקצת ארוכה הזאת:

Get-Command -Noun Item,ItemProperty,ItemPropertyValue |Sort-Object -Property Name |select name




לצורך שינוי הערך, נשתמש בפקודה Set-ItemProperty ובעצם נבצע רק את השינוי המינורי שהוא ההתחלה של הפקודה מ New ל Set, ולאחר מכן נמחק את הערך Dword בסוף מאחר ואנחנו רוצים רק לשנות את הערך:

Set-ItemProperty HKLM:\SOFTWARE\LeiderTech\ -Name Lev2 -Value 258

וכמובן התוצאה בהתאם :





5. מחיקת מפתחות וערכים

המחיקה היא גם כן באותה הצורה, רק לשנות את ההתחלה בהתאם למה שאתם צריכים - במקרה הזה נמשתמש ב Remove בשביל למחוק את כל המפתח LeiderTech מהרגיסטרי:

Remove-Item HKLM:\SOFTWARE\LeiderTech\ -Force

הוספתי את הפרמטר Force בסוף עלמנת שלא יקפצו לי כל מיני "האם אתה בטוח?" למיניהם.


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


בדקתי את זה על אופיס 2016 - תהנו:

(ניתן לעשות "העתק" - "הדבק" לתוך ה ISE ולהשתמש)

## ==============================================
 office global Active X configuration##
## ==============================================

new-item "HKCU:\\Software\Microsoft\Office\Common\Security"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\Common\Security" -name UFIControls -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\Common\Security" -name DisableAllActiveX -value 0  -PropertyType "DWord"


## ==============================================
## Excel configuration##
## ==============================================


#Enable macros in Excel##

Set-ItemProperty -Path "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security" -Name "VBAWarnings" -value 1
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\excel\Security" -name AccessVBOM -value 1  -PropertyType "DWord"

#Trusted Locations in Excel:#

Set-ItemProperty -Path "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security\Trusted Locations" -name "AllowNetworkLocations" -value 1


#Disabel protected view in Excel#

New-Item "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView" -name DisableAttachmentsInPV -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView" -name DisableInternetFilesInPV -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\Excel\Security\ProtectedView" -name DisableUnsafeLocationsInPV -value 1  -PropertyType "DWord"


## ==============================================#
## Word Configuration#
## ==============================================#


#Enable macros in Word#

New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\word\Security" -name AccessVBOM -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\word\Security" -name VBAWarnings -value 1  -PropertyType "DWord"

#Trusted Locationsin word:#

Set-ItemProperty "HKCU:\\\Software\Microsoft\Office\16.0\Word\Security\Trusted Locations" -name "AllowNetworkLocations" -value 1


#Disable protected View in Word#

New-Item "HKCU:\\Software\Microsoft\Office\16.0\word\Security\ProtectedView"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\word\Security\ProtectedView" -name DisableAttachmentsInPV -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\word\Security\ProtectedView" -name DisableInternetFilesInPV -value 1  -PropertyType "DWord"
New-ItemProperty "HKCU:\\Software\Microsoft\Office\16.0\word\Security\ProtectedView" -name DisableUnsafeLocationsInPV -value 1  -PropertyType "DWord"




כמו תמיד, לכל שאלה המייל שלי levl@leidertech.co.il

ומדריך מצולם:




לחלקים הקודמים:

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן
לפורום בנושא באתר devhub.co.il כאן

19/06/2020

מדריך ל PowerShell בעברית חלק 5 - קבלת קלט ממשתמש והצגתו ב PowerShell



לפני קריאת המדריך חובה לעבור על החלקים הקודמים:

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן
לפורום בנושא באתר devhub.co.il כאן

במדריך זה נלמד לעבוד עם שתי פקודות שיודעות לקבל קלט מהמשתמש ולהציג פלט שהוגדר על ידי המשתמש.

1) Read-host  - קבלת קלט מהמשתמש - חלון קובץ שמבקש מידע.
2) Write-host - הצגת מידע מותאם, טקסט כזה או אחר, כגון הודעות, הוראות, ניתן גם בצבעים.


ראשית -  הסבר על הפקודה שנשתמש בה לצורך קבלת קלט מהמשתמש - Read-Host.

אז מתי אנחנו בעצם נרצה לעבוד עם קלט כלשהו ממשתמש כזה או אחר? דבר ראשון ברגע שנרצה להכניס בכל פעם שם משתמש אחר, או אולי שם מחשב אחר, או בעצם כל דבר שלא יהיה זהה בכל פעם, הדוגמא הכי טובה לזה, היא עבודה עם סקריפט קצר שבודק תקשורת, במקום שנכתוב כל פעם ping -some ip adress-  -t אפשר פשוט להגיד ל PowerShell שיבקש מאיתנו את כתובת המחשב בכל פעם שנריץ את הסקריפט, הרבה יותר נוח והרבה יותר פרודוקטיבי.

בתור דוגמא אני אצור את הסקריפט הקצר שהצעתי בפיסקה למעלה - סקריפט לבדיקת פינג.

הפקודה ב PowerShell שיודעת לעבוד עם קלט מהמשתמש היא פקודה שנקראת read-host, פקודה מאוד פשוטה, במידה ותריצו עליה help תקבלו כמה שורות של הסבר

פתחו PowerShell והריצו: help Read-Host -ShowWindow.

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

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

בתוך הדוגמא של הסקריפט, אתם תבינו על מה אני מדבר.

נכין סקריפט מאוד פשוט לביצוע פינג:

#הוספתי את ה 
#cls
#בשביל שיופי לי רק הסקריפט ולא הנתיב גם כן
#נסו עם הפקודה ובלי הפקודה ותראו את ההבדל.
cls
$pc = read-host "What is the IP address of the computer?"

ping $pc
במידה ונריץ את הסקריפט, נקבל דבר כזה:




ניתן לשחק עם הפקודה ועם המשתנים ולצרף כמה וכמה "שאלות" ששאלנו את המשתמש ולאחד לתוך פלט של פקודה אחת,
ניקח את המאכל האהוב עלי שהוא המבורגרים (אני מתנצל אם אתם טבעונים..לא מתכוון לפגוע באף אחד) ונבקש מ PowerShell לשאול אותי כמה המבורגרים אכלתי היום ואיפה אכלתי אותם?

סקריפט לדוגמא:
cls
$state = Read-Host "Where did you eat Hamburgers?"
$howmuch = Read-Host "How much hamburgers did you eat?"

write-host " you were in $state and you eat $howmuch hamburgers"


במקרה הזה, פקודת read-host היא בתוך משתנה state$ וגם בתוך משתנה howmuch$ ואז כשאנחנו מאחדים את הכל לתוך הפקודה write-host (שהיא בעצם ההפך מהפקודה read-host - מוציאה פלט למסך המחשב שלנו) אנחנו מקבלים את הפלט כש PowerShell מאחד לנו את כל המשתנים ביחד.

שנית - הסבר על הפקודה שנשתמש בה לצורך הצגת פלט על המסך Write-host.


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

$shnitzel = write-host "I love LeiderTech.co.il"

אם נריץ את זה ולאחר מכן נריץ את המשתנה עלידי הקשת shnitzel$ ו ENTER, לא נקבל כלום, כי המשתנה ריק, לעומת זאת אם נעשה את אותו הדבר עם read-host אז נקבל שבתוך המשתנה יש את read-host:

$shnitzel = read-host "Do you like LeiderTech.co.il?"

במידה ועכשיו תקשיו את shnitzel$ ותקישו ENTER, תקבלו שבתוך המשתנה שזה בעצם מה שהצבנו במשתנה "שניצל"

read-host "Do you like LeiderTech.co.il?"

המשמעות היא שניתן להשתמש עכשיו במשתנה לכל מטרה וניתן לשים אותו בכל מקום בסקריפט אך ורק בתור משתנה.

אני משתמש ב write-host לרוב בסקריפטים שלי כשאני רוצה להציג כותרת כמו "This script made by Lev" או משהו בסגנון.

ניתן גם להוסיף לטקסט צבעים על ידי שימוש בפרמטרים "Background Color" ו "Foregroundcolor" ולאחר מכן בחירת צבע, החלק הכי חשוב כאן, זאת הגמישות שיש ל PowerShell מבחינת המיקום של הפרמטרים, גם אם תרשמו אותם לפני הטקסט וגם אם תרשמו אותם אחרי הטקסט, זה עדיין יעבוד כמו שרואים כאן בתצלום המסך בסקריפט הקטן שמספר אודות כמות ההמבורגרים שאכלתי במוסקבה :)


cls
$state = Read-Host "Where did you eat Hamburgers?"
$howmuch = Read-Host "How much hamburgers did you eat?"

#משתנה לפני הטקסט
write-host -ForegroundColor DarkCyan -BackgroundColor White "you were in $state and you eat $howmuch hamburgers"



#משתנה אחרי הטקסט
write-host  "you were in $state and you eat $howmuch hamburgers" -ForegroundColor DarkCyan -BackgroundColor White


התוצאה:




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

רווחים אנחנו נייצר עלידי שימוש ב "Escape character" (תו יציאה\בריחה), כמו שלמדנו באחד המדריכים (כרגע לא זוכר בעל פה, באיזה מהחלקים) אנחנו נשתמש בגרש מיוחד שנמצא במקש ה"טילדה" לרוב מצד שמאל מעל ה-TAB במקלדת והאות "n" (המשמעות - חדש\חדשה):



ואז הסקריפט שלנו יראה ככה:

cls
$state = Read-Host "Where did you eat Hamburgers?"
$howmuch = Read-Host "How much hamburgers did you eat?"

#משתנה לפני הטקסט
write-host -ForegroundColor DarkCyan -BackgroundColor White "you were in $state and you eat $howmuch hamburgers"


#ביצוע רווח בין שורה לשורה
write-host "`n"


#משתנה אחרי הטקסט
write-host  "you were in $state and you eat $howmuch hamburgers" -ForegroundColor DarkCyan -BackgroundColor White


התוצאה:



איך בעצם ניתן לדעת אילו צבעים יש? אז ראשית ברגע שאתם כותבים את הקוד ב-ISE, אתם תקבלו את הרשימה של כל הצבעים שעומדים לרשותכם, דבר שני, ניתן להריץ את help write-host ותקבלו את הרשימה של הצבעים, דבר שלישי, אני אכתוב לכם את הצבעים כאן:

Black
DarkBlue
DarkGreen
DarkCyan
DarkRed
DarkMagenta
DarkYellow
Gray
DarkGray
Blue
Green
Cyan
Red
Magenta
Yellow
White




בנוסף, ניתן לרשום טקסט בשורה חדשה בצורה דומה, על ידי שימוש באותו ה "Escape character", בעזרת הצבתו בתחילת המילה\משפט שנרצה להציג בשורה חדשה כמו בדוגמא הבאה:

בדוגמא זאת, שמתי את ה "n`" ישר בצמוד למילה שאחרי הפסיק, בשביל שהחלק השני של המשפט יוצג בשורה הבאה ללא רווחים (שימו לב למה שקורה אחרי הפסיק):

write-host -ForegroundColor DarkCyan -BackgroundColor
White "you were in $state ,`nand you eat $howmuch hamburgers"

בתוך סקריפט זה יראה ככה:

cls
$state = Read-Host "Where did you eat Hamburgers?"
$howmuch = Read-Host "How much hamburgers did you eat?"

#שורה חדשה
write-host -ForegroundColor DarkCyan -BackgroundColor
White "you were in $state ,`nand you eat $howmuch hamburgers"


התוצאה:





לידע כללי:
ישנה גם פקודה שנקראת write-output, שהיא יותר מיועדת לשימוש בתוך הסקריפט. בעזרתה  ניתן להציג "תוצאה" של הסקריפט שלכם או ליצא את הנתונים הסופיים של הסקריפט שלכם לקובץ מסויים, אין לה אפשרות להוסיף צבעים או רקעים בצבעים כמו ב Write-host.


לכל שאלה המייל שלי: levl@LeiderTech.co.il.

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן
לפורום בנושא באתר devhub.co.il כאן
מדריך מצולם:


12/04/2020

התחברות לאופיס 365 עם PowerShell


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

באופיס 365, קיימים כמה מודולים ביניהם Share Point, אנחנו נתמקד בנושא ניהול המיילים.

לצורך התחברות לאופיס 365 יש צורך בביצוע כמה פעולות:

1) קודם כל אם אתם על windows 7\8\8.1 ביצעו הורדה של של גירסת ה PowerShell האחרונה : כאן

2) פתחו את PowerShell עם משתמש אדמיניסטרטור (לא משנה אם זה ISE או הרגיל) והריצו:
Install-Module -Name AzureAD

3) לאחר מכן התקינו את Microsoft Online Services Sign-In Assistant for IT Professionals (מסיבה לא מובנת ניתן להתקין את זה אך ורק על מערכות 64 ביט): כאן

4) לאחר שביצעתם התקנה - פתחו את PowerShell בתור מנהל (לא משנה אם ISE או הרגיל) והריצו:
Install-Module MSOnline 

* במהלך ההתקנה תצטרכו לענות על שאלות - אני מאמין שתאשרו את הכל.


לאחר שביצעתם את כל השלבים הנ"ל, פתחו PowerShell והריצו את הפקודות הבאות:

(שימו לב: לאחר שתריצו את הסקריפט תקבלו חלון שבו תתבקשו להכניס הרשאות - אלו הן הרשאות לחיבור עם חשבון מנהל ה 365 שלכם ללא דומיין וללא שום דבר
שם משתמש (לדוגמא) :lev_admin@leidertech.co.il
סיסמא: ToLongPassw0rd2Remmber!

לאחר מכן לחצו אינטר וכל שאר הדברים יתבצעו לבד.)
Set-ExecutionPolicy Unrestricted

$creds = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
                         -Credential $creds -Authentication Basic -AllowRedirection

Install-Module MSOnline#

Import-Module MSOnline

Connect-MsolService -Credential $creds

Import-PSSession $Session

Remove-PSSession $Session#




לאחר ביצוע השלב הראשון והרצת הסקריפהראשוני, אין צורך לבצע את הפקודה install-module MSOnline מאחר והמודול כבר מותקן, לכן הסקריפט יראה טיפה שונה:

(אני לא מוחק את כל הפקודות בשביל לא לשכוח, אז אני שם "סולמית" לפני הפקודה שאני לא רוצה שתרוץ, אלה סתם תהיה שם כ"הערה")


Set-ExecutionPolicy Unrestricted

$creds = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
                         -Credential $creds -Authentication Basic -AllowRedirection

#Install-Module MSOnline - סימון "סולמית" לפני הפקודה -מסמן שזאת היא הערה

Import-Module MSOnline

Connect-MsolService -Credential $creds

Import-PSSession $Session

#Remove-PSSession $Session




 שאלה : למה סימנתי את Remove-PSSession $Session עם "סולמית"?

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


במידה וזאת פעם ראשונה שלכם ואתם מחפשים פקודות לעבודה עם אופיס 365 ישנו פוסט שבו צירפתי פקודות שימושיות שאני מעדכן מפעם לפעם: פקודות שימושיות ל PowerShell: כאן


לידע כללי:

הסקריפט בנוי מ 2 חלקים - האחד הוא התחברות לשרת Exchange online (שרת הדואר מאחורי תיבות ה 365 בענן) והחלק השני הוא התחברות לשירותי האופיס 365 ( מה שמופיע בתור MSOL - Microsoft online).

אכן אפשר לעבוד רק עם התחברות ל Msonline אבל עדיף להשתמש גם בפקודה הארוכה אשר מחברת אותנו גם לשרת ה Exchange online - למה?

מאחר וישנן 2 סוגי פקודות:
1) פקודות של אקסצ'יינג' - לדוגמא: get-mailbox -identity lev
2) פקודות של Office 365 - לדוגמא:Get-MsolUser -SearchString lev

על מנת שנוכל להשתמשת גם באלה וגם באלה, אני מעדיף להתחבר ישר גם לשירות ה Exchange וגם לשירות האופיס 365.

(עם הזמן תבינו עד כמה שזה נוח :) )



במידה וזאת הפעם הראשונה שלכם עם PowerShell בכלל, כדי שתעברו על ארבעת המדריכים
למתחילים אודות PowerShell בעברית:

1) חלק ראשון : מדריך PowerShell מאיפה מתחילים?

2) חלק שני:   מיונים, מודלים ו-Alias.

3) חלק שלישי: הרחבה של סינונים ומיונים.

4) חלק רביעי: לולאת foreach והפקודה foreach-object

5) חלק חמישי: קבלת קלט מהמשתמש



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

לכל שאלה המייל שלי: levl@LeiderTech.co.il

08/04/2020

פתרון לתקלה: קבצים מצורפים באאוטלוק מופיעים בג'יבריש


אני מאמין שהמון ממכם משתמשים באאוטלוק או לפחות הלקוחות של חלק ממכם משתמשים באאוטלוק, ומפעם לפעם אנחנו נתקלים בתקלות הזויות לגמרי.

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

במידה ואתם פותחים מייל שמור, נושא המייל, והקבצים השמורים פתאום הופכים להיות בג'יבריש כמו בדוגמא הזאת:


הפתרון: לשנות את ה"מיקום" של מערכת ההפעלה שלכם ל"עברית"(מה שאתם מכירים בתור Current system locale)

למי שלא זוכר, מדובר בשינוי בתוך Regional Settings (כך זה נראה בחלונות 7)

Windows 7




Windows 10


לצורך ביצוע ההגדרה:
1) בצעו חיפוש של intl.cpl
2) לחצו על הלשונית Administrative
3) לחצו על Change system locale
4) בצעו חיפוש של Hebrew




5) לחצו OK - במידה ותצטרכו לעשות הפעלה מחדש למחשב - בצעו.

¿? זכרו לשמור את העבודה שלכם לפני כן !¿?



במידה ואין צורך לעשות הפעלה מחדש למחשב, ניתן לסגור את ה- Outlook ולפתוח מחדש.

התקלה אמורה להסתדר.

לכל שאלה - המייל שלי levl@LeiderTech.co.il

23/03/2020

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


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

1) להכנס ל:

C:\Users\%username%\AppData\Local\Google\Chrome\User Data

2) לחפש קובץ בשם Local State

3) להכנס בפנים ולחפש את intl

4) לשנות שיראה כך:


"intl":{"app_locale":"en-US"}

(ניתן להעתיק את הכתוב אך זכרו לבדוק ש הגרשיים נמצאים במקום הנכון)


פתרון לתקלה: מסך כחול כשמנסים להדפיס מאאוטלוק

Picture by FlatArt


במידה ואתם מנסים להדפיס משהו מתוך אאוטלוק ואתם מקבלים מסך כחול (Blue Screen of Death) חובה להתקין למדפסת דרייבר מסוג PCL.

22/03/2020

פתרון לתקלה: אקסלים נפתחים ללא תוכן

תסריט:

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

פתרון לתקלה:
1) קובץ
2)אפשרויות
3)מתקדם (
advanced)
4)להוריד סימון מ:
Ignore other application that use Dynamic Data Exchange





פתרון לתקלה: הודעה שמתקבלת בהדפסה מאקסל :"Error Following Functions are On and Cannot"




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

Error Following Functions are On and Cannot be used in the Current Environment






הפתרון הוא לגשת למדפסת:

  1. קליק ימני על המדפסת
  2. העדפות הדפסה
  3. אמורה להיות לשונית "other"
  4. יש להוריד שם סימון מתוך Excel Job Control.


פתרון לתקלה - כרטיס חכם לא עובד עם RDP (שולחן עבודה מרוחק)


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


1) נלחץ קליק ימני על אייקון ההתחברות מרחוק
2) נלחץ על "עריכה" לרוב נמצא למעלה

ונפעל לפי התמונה:


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

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

לכל שאלה: levl@LeiderTech.co.il

איך לבצע התאמה של התקנה לאופיס 2016\2019\365?



שלום לכם,
מכירים את המצב הזה שבו אתם צריכים לענות למשתמש על השאלה "מה זה הדבר הזה?" כשהוא רואה Skype for business? או כשהוא רואה One Note?

אני מאמין שכולם מכירים את ההתקנה הרגילה של האופיס שבה ניתן לסמן מה אנחנו רוצים להתקין ומה לא, או לחלופין פעם היינו משתמשים ב OCT הידוע בכינויו "Office Customization Tool", אז מיקרוסופט השתדרגו והיום ניתן לבצע התקנה של אופיס 365 בעזרת משהו שנקרא תנחשו איך? בדיוק אותו דבר.. "Office Customization Tool"... רק שהפעם זאת לא תוכנה, אלה ממשק מאוד מאוד נוח שנמצא ברשת ופתוח לכולם, והוא בעצם אתר אינטרנט איתו נבצע יצוא של קבצי הקונפיגורציה ובמידה ונצטרך לבצע שינויים כאלה ואחרים, ניתן להעלות לשם את הקובץ לערוך אותו ולהוריד אותו שוב.

לצורך כך, נצטרך להוריד את הכלי Office Deployment Tool להתקין אותו, ולאחר מכן לבצע עריכה באתר יעודי בכתובת config.office.com, ובסוף נאחד את ההגדרות עם הכלי שהורדנו.

להלן לינק להורדת הכלי של מיקרוסופט: לינק


הכלי - Office Deployment Tool.

לאחר ההורדה, הפעילו את הקובץ, תאשרו את הרישיון, ולאחר מכן ביחרו תיקייה שאליה תרצו לפרוס את תוכן הקובץ,
במקרה שלי, בחרתי לפרוס את התוכן של הקובץ לתיקייה בשם Office 2019, במידה והכל עבר בלי שגיאות (לא אמורות לצוץ שגיאות, אבל זה עולם המחשבים, לך תדע), תקבלו הודעה כזאת "Files extracted succsessfully"




תוכן התיקייה יראה כך:




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






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



נגלול את הדף למטה ונקבל 2 אופציות:
1) יצירת דף קונפיגורציות חדש

2) יבוא של דף קונפיגורציות חדש ועריכתו.



נתחיל עם החלק הראשון - יצירת דף קונפיגרוציות חדש

לאחר שנלחץ עליו, נקבל את הרובריקה הראשונה שנקראת "Product and releases"



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


להלן כל הקטגוריות:

1) מוצרים והפצות.

  • ארכטקטורת מוצר - נבחר האם נרצה מוצר של 64 ביט או 32?
  • חבילת אופיס -  (איזו גירסה אתם רוצים?)
  • האם אתם צריכים Microsoft Visio? - במידה ולא בחרו ב None
  • האם אתם צריכים Microsoft Project? - במידה ולא בחרו ב None
  • מוצרים נוספים - בחרו האם תצטרכו ערכת שפה (עברית במקרה?) - במידה וכן בחרו Language Pack.
  • עדכונים - במידה ואתם מעוניינים בגירסה מסויימת בלבד, בחרו תחת הסעיף "איזו גירסה תרצה להפיץ?" את הגירסה המתאימה - אני אישית ממליץ להשאיר את זה כמו שזה, על מנת שתתקינו את הגירסה האחרונה והמעודכנת ביותר.
  • אפליקציות - פשוט "כבו" את האפליקציות שאתם לא צריכים, אני ברוב המקרים מתקין רק כמה אפליקציות בלי האקסס, One Drive, פאבלישר, Skype for business.

2) שפות.

לאחר שנלחץ על Next, נעבור לרובריקה הבאה שהיא בחירת שפת ההתקנה של חבילת האופיס.
  • בחלק הראשון - נצטרך לבחור שפה ראשית - במקרה שלי אני בוחר אנגלית
  • בחלק השני - במידה ונצטרך נבחר שפה משנית - אני אוהב לבחור את השפה שניה תמיד עברית
  • בחלק השלישי - במידה ונצטרך נבחר עוד שפה.
לאחר שנלחץ על Add ניתן להשתמש בחיפוש למציאת השפה הרצויה, לאחר מכן נסמן את האופציה Full (אני מעדיף שתהיה כל החבילה ולא רק חלק ממנה)


3) עדכונים ושדרוגים.

בחלק הזה תצטרכו לבחור כיצד תרצו לבצע את ההפצה
  • CDN - ההפצה הרגילה של הורדת הרדת החבילה ישירות מאתר Microsoft דרך האינטרנט.
  • התקנה משרת קבצים, מיקום ברשת, מחשב מקומי.
  •  System Centre Configuration Manager - SCCM.
  • בחרה האם תרצו לבצע עדכונים אוטומטיים - תמיד מומלץ.
  • שידרוג - בחרו באופציות המתאימות לכם.
4) רישיון ואקטיבציה.

בחלק זה מתאפשרת האופציה של קבלת תנאי הרישיון (EULA) וביצור האקטיבציה של המוצר, במהלך תהליך ההתקנה.

5) מידע כללי.

מלאו את הפרטים, כגון שם ארגון וכד'.

6) אפשרויות תוכנה.

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


לאחר שסיימתם את ההגדרה, לחצו על Finish.


מצד ימין תוכלו לראות את כלל ההגדרות שבחרתם, עברו אליהן ולחצו למעלה על Export,

במידה והגדרתם הכל נכון, תקבלו חלון ששואל לגבי תצורת ההשמירה של Word, Excel, PowerPoint, במידה ואין לכם מושג מה לבחור, פשוט הבחרו את האופציה הראשונה ולחצו על OK.

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

כיצד נבצע התקנה?

באותה התיקייה ששמתם בה את קובץ ה XML שיצרתם  שימו את קובץ ה Setup שקיבלתם כשפרסתם את ה Deployment tool, וצרו קובץ batch וכיתבו בו את השורה הבאה:

setup.exe /configure "leiderTech-configuration.xml"


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





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

במידה ואתם מעוניינם רק לבצע הורדה של קבצי ההתקנה לפי קובץ ה XML, רישמו את הפקודה הבאה בסקריפט:

"setup.exe /download "leiderTech-configuration.xml

קבצי ההורדה ירדו למקום בו נמצא הסקריפט עם קובץ ה XML וה Setup.

כיצד נבצע הסרה שקטה של חבילת האופיס?

לצורך ההסרה יש צורך בביצוע עריכה לקובץ ה XML בלבד, להלן קובץ ההגדרות שלי, אתם מוזמנים להעתיק אותו ולבצע התאמה לצריכים שלכם:


<Configuration ID="830a5cde-088e-4045-b33f-944e75a695d4">
  <Remove OfficeClientEdition="32" Channel="PerpetualVL2019">
    <Product ID="ProPlus2019Volume" PIDKEY="blahb-blahb-blahb-blahb-blahb">
      <Language ID="en-us" />
      <Language ID="he-il" />
    </Product>

    </Remove>

  <Updates Enabled="TRUE" />

  <Display Level="Full" AcceptEULA="TRUE" />

</Configuration>

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






להלן מדריך מוסרט:


תודה רבה.

לכל שאלה המייל שלי: levl@LeiderTech.co.il
אל תשכחו לתת לנו לייק בדף הפייסבוק.