Powershell - ISUG 99 (Aviad Deri)

33
בלמ" ס ללא סיווג עסקי קניין רפאל- מערכות לחימה מתקדמות בע" מ תאריך סימוכין1 May the Powershell be with you אביעד דרעי רפא" ל מערכות לחימה מתקדמות בע" מ[email protected] 5/7/2010

Transcript of Powershell - ISUG 99 (Aviad Deri)

Page 1: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל 1סימוכיןתאריך

May the Powershell be with you

אביעד דרעי

מ"מערכות לחימה מתקדמות בע–ל "רפא

[email protected]/7/2010

Page 2: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל 2סימוכין2010, יולי 8

...קצת על רפאל

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

בים–

באוויר–

ביבשה–

₪מיליארד 1.5למעלה מ –2008רווחים בשנת •

עובדים 5000-למעלה מ•

Page 3: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

קצת עלי

בוגר החוג למערכות מידע באוניברסיטת חיפה •

•DBA שנים 3.5-תשתיתי כ:

–MS SQL 2000-2008R2

–Oracle 9i-11g

–SQL Anywhere 10

3סימוכיןתאריך

Page 4: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

תחומי אחריות

שרתים במערכות 100-תחזוקה שוטפת של למעלה מ•.מרכזיות ובפרוייקטים שונים

:הדרכה והטמעה של מגוון שירותים וכלים, פיתוח•

–Reporting Services

–Integration Services

–Spatial

–PowerShell

–Mirroring, Replication ועוד...

4סימוכיןתאריך

Page 5: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?מה בתפריט

הצגת הבעייה–? איך הכל התחיל•

הדרישות עבור הפתרון •

:ובהרחבה•

?ואיך הוא עוזר לי PowerShellמה זה –

–SSIS גנרי עם פרמטרים

השילוב של שניהם –

שאלות•

5סימוכיןתאריך

Page 6: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?איך הכל התחיל

על כל שרת מספר קבצי , מספר מצומצם של שרתים•

batch תחזוקה והגדרות , וסקריפטים עבור גיבויים

.שונות של בסיסי הנתונים

exchange-בכל סקריפט קיימות הגדרות של שרת ה•

ב והגדרות שרת התזמון המרכזי ממנו "שרת השו

.רצים הסקריפטים

6סימוכיןתאריך

Page 7: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?אז איפה הבעיה

מספר השרתים הולך ועולה משבוע לשבוע•

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

:נוצר מצב של קושי בתחזוקת הסקריפטים•

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

מסקריפט אחד ראשי נוצרו עשרות עותקים וקשה לעקוב –אחריהם

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

7סימוכיןתאריך

Page 8: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?אז מה אתה מציע לעשות, טוב

צריך למצוא פתרון אחר לתחזוקה השוטפת שיענה •:על הדרישות הבאות

יהיה עותק אחד ויחיד שירוץ ממקום מרכזי–

במידת האפשר יאחד את כל הסקריפטים–

גריעת שרתים ישנים /יאפשר הוספת שרתים חדשים–

באופן דינאמי וקל

8סימוכיןתאריך

Page 9: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

המשך -הדרישות מהפתרון

ידרוש מינימום תחזוקה ויאפשר אותה בקלות–

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

ירכז את הלוגים השונים למקום מרכזי–

במידת האפשר יהיה חינמי ולא תלוי במוצר מדף כזה או –

אחר

9סימוכיןתאריך

Page 10: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?Powershellאז מה זה בעצם

המרחיב את שורת , כלי שורת פקודה של מיקרוסופט•ומעניק לו יכולות תכנות ( cmd)הפקודה הסטנדרטית

נרחבות יותר

משולב כחלק אינטגרלי בקו המוצרים האחרון • SQL 2008, Exchange 2007, Win 7, Win:כגון

Server 2008 ועוד

אידאלי לאוטומציה של תהליכים שונים לניהול •ותחזוקת שרתים ותחנות עבודה

10סימוכיןתאריך

Page 11: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

היכרות בסיסית

ps1: סיומת קבצי הסקריפט•

cmdletsמורכב לרוב מ• (command-lets) שבנויים:למשל verb-nounבצורת

– Get-help

– Write-host

– Get-content

– Copy-item

-י שימוש ב"על כל פקודה ניתן לקבל עזרה ופירוט ע–

Get-help cmd-lets -detailed

11סימוכיןתאריך

Page 12: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?Powershell-מה מאפשר ה

, יכולות תכנות נרחבות כמו שימוש בפונקציות•'תנאים וכו, לולאות

foreach ($db in $Srv.Databases)

{

$msg = $db.Name | Out-File $LogFile -Append

$msg = " Status is: "+ $db.Status.ToString() | Out-File $LogFile -

Append

$msg = " Mirorring Status is: "+ $db.MirroringStatus.ToString()|

Out-File $LogFile -Append

if ((-not $db.Status.ToString().Equals("Normal")) -and

($db.IsMirroringEnabled) -and ( $db.MirroringStatus -ne 5))

{$DBStatus=1}

}

12סימוכיןתאריך

Page 13: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

המשך -יכולות

עבודה אל מול שרתים ותחנות עבודה מרוחקות•begin

{

$BckDir = $BckDir.Substring(0,$BckDir.Length -1 )

–replace (":","$")

if (Test-Path "\\$ServerName\$BckDir\full_backup\")

{Get-ChildItem

-Path "\\$ServerName\$BckDir\full_backup\"

| Remove-Item -Recurse}

return 0

}13סימוכיןתאריך

Page 14: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

המשך -יכולות

י מחלקות ואובייקטים שונים כמו "הרחבה ע•.Net/Com/WMI

$Srv=New-Object

"Microsoft.SqlServer.Management.Smo.Server"

"$ServerName“

$SmtpClient = new-object system.net.mail.smtpClient

$MailMessage = New-Object system.net.mail.mailmessage

[System.Reflection.Assembly]::LoadWithPartialName

("Microsoft.SharePoint")

14סימוכיןתאריך

Page 15: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

-Powershellהקריאה ל

במידה ורוצים להפעיל powershell.exeי "הפעלת סקריפט מתבצעת ע•במידה sqlps.exeי "או ע, PSשל סנדרטייםולהשתמש באובייקטים

.SQL Serverורוצים להשתמש בהרחבות עבור

. י קריאה לקובצי קונפיגורציה חיצוניים"ניתן להרחיב את השפה ע•NetAppלמשל עבור Snap Manager for SQL Server:

• powershell -PSConsoleFile "D:\Program

Files\NetApp\SnapManager for SQL Server\SmsqlShell.psc1"

"&'%ScriptDir%maintian.ps1' Backup %ServerName% %LogDir%

full %FullBackupDir% 1“

י "ע SnapManagerלאחר הקריאה להרחבה ניתן להפעיל פקודות של •PS:

• New-Backup -LogBkup -bkupsif -verify -truncatelogs -

GenericNaming -retainbackups 7 -retainsnapofsnapinfo 7 | Out-File $log

15סימוכיןתאריך

Page 16: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

היישום שלנו ברפאל

מבצע גיבויים •

מלאים פעם ביום–

לוגים כל שעה–

שעות במהלך יום העבודה 4דיפרנציאליים כל –

מבצע בדיקת חיות ותקינות בסיסית של בסיסי •

דקות 5הנתונים בשרת כל

16סימוכיןתאריך

Page 17: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

המשך -היישום

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

ההגדרות שלהם כך שיתאימו לתקנים ולשיטת העבודה

ברפאל

ארגון לבסיסי הנתונים כולל ארגון -פעם בשבוע ביצוע רה•

, כיווץ בסיסי הנתונים, ובנייה מחדש של האינדקסים

מחיקת היסטוריות ועוד, עדכון סטטיסטיקות

17סימוכיןתאריך

Page 18: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

המשך -היישום

כולל צירוף קובץ הלוג של , שליחת מיילים במקרה של כשל•

הפעולה שנכשלה

מחיקת קבצים ישנים לפי גיל•

ביצוע פעולות מותאמות על שרתים ובסיסי נתונים •

רגישים/מיוחדים

המרכזית ולמערכת התזמון ב"השולמערכת Trapsשליחת •

המרכזית

18סימוכיןתאריך

Page 19: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

עם פרמטרים SSIS-שימוש ב

•SSIS- SQL Server Integration Services

-ומחליפים את ה Net.-מבוססים על טכולוגית ה•DTS החל מגרסתSQL 2005

משמשים למעבר נתונים בין פלטפורומות שונות תוך •הפעלת לוגיקות שונות על הנתונים במהלך המעבר

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

19סימוכיןתאריך

Page 20: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

Backup.dtsx

SQLDBMaintחדש מסוג SSISלצורך הפתרון בניתי •

משימת ניקוי וכתיבה לקובץ , מכיל משימת גיבוי SSIS-ה•

לוג

20סימוכיןתאריך

Page 21: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

Backup.dtsx

כל . כולו Packageהוגדרו משתנים גלובליים ברמת ה•משתנה מתקבל משורת הפקודה ומשוייך במהלך .הריצה למשתנים הפנימיים של הרכיבים השונים

21סימוכיןתאריך

Page 22: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

מבנה הקבצים והתיקיות

בה יושב סקריפט , תיקייה מרכזית על השרת הראשי•הבודד -Powershellה

לכל שרת מנוהל יש תת תיקיה ובתוכה קבצים עם •עבור הלוגים logהגדרות עבור השרת ותיקיית

22סימוכיןתאריך

Page 23: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?איך עובד התהליך

בשעה batchמערכת התזמון המרכזית מפעילה קובץ •בדוגמא הזו נציג גיבוי לוג. מסויימת

23סימוכיןתאריך

Page 24: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?מה בעצם קורה

dmp_log.batהקובץ שמורץ למעשה הוא הקובץ •

:שנראה כך

• call %~dp0db_env.bat

• sqlps "&'%ScriptDir%maintian.ps1' Backup

%ServerName% %LogDir% log %logBackupDir% 3"

24סימוכיןתאריך

Page 25: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

Db_env.bat

מכיל פרמטרים שמשתנים משרת db_env-קובץ ה•Powershell-לשרת ונקראים לפני הרצת ה

set ServerName=SERVERNAME

set FullBackupDir=E:\mssql_dump\

set LogBackupDir=F:\mssql_dump\

set DiffBackupDir=G:\mssql_dump\

set LogDir=D:\jobs\mssql\%ServerName%\log

set ScriptDir=D:\jobs\mssql\

25סימוכיןתאריך

Page 26: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

עיבוד המשתנים

26סימוכיןתאריך

Page 27: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

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

27סימוכיןתאריך

Page 28: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

בניית שורת הפקודה

עם PSנבנתה בתוך קובץ ה( dtexec)שורת הפקודה •הפרמטרים שנשלחו בהתאם לשרתים השונים

28סימוכיןתאריך

$strSsis = 'dtexec /DTS "\MSDB\Maintenance Plans\Backup" '

$strSsis +='/SET "\package.Variables[User::BackupPath].Value;$BckPath" '

$strSsis +='/SET "\package.Variables[User::BackupType].Value;$BckType" '

$strSsis +='/SET "\package.Variables[User::BackupTypeID].Value;$BckTypeID" '

$strSsis +='/SET "\package.Variables[User::Extension].Value;$Ext" '

$strSsis +='/SET "\package.Variables[User::IsDifferntial].Value;$IsDif" '

$strSsis +='/SET "\package.Variables[User::ServerName].Value;$Server" '

# Execute the sring and save the log to file

Invoke-Expression $strSsis | Out-File $LogFile

Page 29: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

ניטור הפעולה

29סימוכיןתאריך

Page 30: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?מה בעצם נעשה–סיכום

איחוד של מספר קבצי תחזוקת מערכת לקובץ אחד •גנרי

ריכוז כל ההרצות למקום מרכזי אחד•

ריכוז כל הלוגים למקום מרכזי אחד•

שמירה על אחידות של בסיסי הנתונים•

פשוטה ומהירה שחוסכת עשרות שעות , תחזוקה קלה•עבודה

30סימוכיןתאריך

Page 31: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

?לאן מתקדמים מכאן

בין היתר )ייתן כלים חדשים Powershell V2.0-מעבר ל•

ויאפשר לייעל את הסקריפט ואת ( גם כלים גרפיים

(Send-Mailי פקודת "למשל ע)תחזוקתו

תריץ , SSISגנרית שתקבל כקלט שם פונקצייהכתיבת •

פעילות שלו ותוציא את תוצאת ההרצה logתכתוב , אותו

(תזמון מרכזי, ב"שו)למערכים השונים

31סימוכיןתאריך

Page 32: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

!תודה על ההקשבה

?שאלות

32סימוכיןתאריך

Page 33: Powershell  - ISUG 99 (Aviad Deri)

ס"בלמללא סיווג עסקי

מ"מערכות לחימה מתקדמות בע -קניין רפאל

קישורים מעניינים

• PowerShell wiki:

http://en.wikipedia.org/wiki/Windows_PowerShell

• Why This SQL Server DBA is Learning Powershell by Ron Dameron

http://www.simple-talk.com/sql/database-administration/why-this-sql-

server-dba-is-learning-powershell/

• SQLPSX Project on Codeplex

http://sqlpsx.codeplex.com/

33סימוכיןתאריך