Anda di halaman 1dari 38

5/13/2009 1 Dejan Foro dejan.foro@exchangemaster.

net Speaker 16 years of years of experience with MS technologies 11 years and 5 generations of experience with Exchange (5.5, 2000, 2003, 2007, 2010) MCP, MCP+I, MCSE NT40, MCSE+I, MCSE 2000, MCSE 2000:Messaging, MCSA 2003, MCSA 2003:Messaging, MCSE 2003, MCSE 2003:Messaging, MCT

5/13/2009 Speaker Communities Exchange User Group Europe (founder) Swiss IT Pro User Group Rewards MCP Hall of Fame (1 of 6 worldwide) Microsoft MVP -Exchange (1 of 120 worldwide, the only 1 in Switzerland) MCP Success Stories Agenda Introduction Doing common tasks in Exchange Users related tasks Testing and troubleshooting Setting up your own PowerShell enviroment Additional resources 3rd party tools, web sites, communities, books, webcasts... Q&A

5/13/2009 Presentation dowlnoad This presentation will be available for download from: www.exchangemaster.net Introduction How it used to be .... Problems of Scripting in Windows enviroment Many things could be done through command line VBScript programming knowledge required, knowledge of VB, WMI, WBEM, ADSI, object models security voulnearable

5/13/2009 Introduction How it is today ... Scripting with PowerShell in Exchange Command line interface developed first, than GUI EVERYTHING can be done via command line Exchange managment GUI actually executes PowerShell commands and shows you the syntax Single line commands replace pages of VB code Symple syntax Better security exectution of powershell scripts completely disabled by default, require scripts to be signed, etc. Example

5/13/2009 Introduction Windows Powershell -129 commands Get-Command Exchange Powershell additional 394 commands Get-Excommand Don t worry, you will be cool with approx. 20 . Why are you going to love PowerShell Task example : Get a list of mailboxes and export into .csv file

5/13/2009 Why you are going to love PowerShell VBScript Dim SWBemlocator Dim objWMIService Dim colItems Dim objFSO Dim objFile strTitle="Mailbox Report" strComputer = MyServer" UserName = "" Password = "" strLog="Report.csv" Set objFSO=CreateObject("Scripting.FileSystemObject") Set objFile=objFSO.CreateTextFile(strLog,True) strQuery="Select * from Exchange_Mailbox" Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\MicrosoftExchangeV2",UserName,Pass word) Set colItems = objWMIService.ExecQuery(strQuery,,48) For Each objItem In colItems objFile.writeline objItem.ServerName & "," &objItem.StorageGroupName &_ "," & objItem.StoreName & "," & Chr(34) & objItem.MailboxDisplayName Next objFile.close Why you are going to love PowerShell PowerShell . Get-mailbox | export-csv c:\report.csv

5/13/2009 .... And Action !!! Command Syntax New-Mailbox Get-Mailbox Set-Mailbox Move-Mailbox Remove-Mailbox ...

5/13/2009 Getting help List of all available PowerShell commands Get-Command List of only Exchange commands Get-Excommand Getting help about specific command Get-HelpGet-MailboxGet-HelpGet-Mailbox detailedGet-HelpGet-Mailbox full Getting info about users/mailboxes List of all mailboxes in organisation Get-MailboxGet-Mailbox-ResultSizeunlimited

5/13/2009 Getting all available properties Get-Mailbox|Format-ListGet-Mailbox ResultSize1|Format-List Getting just a list of properties names Get-Mailbox|Get-Member-MemberType*Property| Select-ObjectName

5/13/2009 Selecting & Sorting Get-Mailbox|Select-Object-PropertyDisplayName,PrimarySMTPAddressGet-Mailbox|Sele ct-Object-PropertyDisplayName, PrimarySMTPAddress|Sort-Object-PropertyDisplayName Examples List all mailboxes, sort by name, and export into a CSV file Get-Mailbox|Sort-Object-PropertyName| Export-csvc:\mailboxes.csv Get a list of mailboxes from Active Directory OU named Users Get-Mailbox-OrganizationalUnitUsers

5/13/2009 Examples Count mailboxes in organisation (Get-mailbox).count Getting all properties for a specific user Get-Mailbox|where{$_.DisplayName-eq"DejanForo"}|format-list Who is the postmaster ? Get-Mailbox|where{$_.EmailAddressescontains"postmaster@exchangemaster.net"} Examples Who is the user with GUID e65a6ff3-d193-4563-9a8e26a22315a686 ? Get-Mailbox|where{$_.guid-eq"e65a6ff3-d193-4563-9a8e-26a22315a686"} Who has UM extention 200 ? Get-Mailbox|where{$_.extensionscontains"200"}

5/13/2009 Getting info about servers Give me a list of Exchange servers Get-ExchangeserverGet-ExchangeServer|Select-Object-PropertyName,Edition, AdminDisplayVersion,ServerRole|format-list Examples Give me a list of mailbox servers Get-ExchangeServer|where{$_.ServerRole-ilike"*Mailbox*"} Do we have servers running on trial version of Exchange and if yes when do they expire ? Get-ExchangeServer|where{$_.IsExchange2007TrialEdition-eq"True"}|Select-Object-P ropertyFQDN,RemainingTrialPeriod

5/13/2009 Getting membership of a group Get-DistributionGroupMember -identity "Swiss IT Pro User Group Moderators" Managing the user lifecycle Creating users -Importing from a .csv file Modifing users move to another database Removing mailboxes and users

5/13/2009 Importing users from a .CSV file Task Import users from a file c:\users.csv For every user Create user account in AD of form First.Last@exchangemaster.net Put them in Organizational Unit VIP Create a mailbox in database Standard users Enter his first and last name Set all users with password Password123 and require the users to change the password at first logon Importing users from a .CSV file Import-CSV c:\users.csv

5/13/2009 Procesing values from a csv file Processing each row of data from .CSV file Import-CSVc:\users.csv|ForEach-Object{SOMEACTION} Command for creating Users New-MailboxGet-HelpNew-Mailbox full Processing values from .CSV file Referencing column names from the .CSV file $_.columnname Converting Password text into secure string $Password=ConvertTo-SecureStringString"Password123"-asplaintext-force

5/13/2009 Importing users from a .CSV file Putted all together $Password=ConvertTo-SecureString-String"Password123"asplaintext-forceImport-Csvc:\users.csv|ForEach-Object{ $Name=$_.First+""+$_.Last$UPN=$_.First+"."+$_.Last+"@exchangemaster.net" New-Mailbox-Name$Name-UserPrincipalName$UPN-Password$Password-OrganizationalUnit VIP-Database'standardusers'FirstName$_.First-LastName$_Last-ResetPasswordOnNextLogon$True} Making changes to users Apply policies Assing to groups Enable or disable features Changing attributes Moving mailboxes ....

5/13/2009 Moving mailboxes Moving mailoboxes of users in OU VIP to a new database for VIPs Get-Mailbox-OrganizationalUnit"VIP"| Move-Mailbox-TargetDatabase"VIPusers" Moving mailboxes Checking for mailbox location after move Get-Mailbox|Select-ObjectName,Database

5/13/2009 Removing mailboxes Check before deleting ! Get-Mailbox-OrganizationalUnitVIP| Remove-Mailbox-WhatIf Remove them Get-Mailbox-OrganizationalUnitVIP| Remove-Mailbox Recommendation 3rd party snap-in for better manipulation of ADobjects Quest Software ActiveRoles Management Shell for Active Directoy

5/13/2009 Managing queues Removing spam messages from the queue Remove-Message-Filter{FromAddress-like"*spammer.com* }-withNDR$false Testing Get a list of test commands Get-Command test*

5/13/2009 Testing Script example Report on Exchange database backups with Powershell http://www.exchangemaster.net/index.php?option=com_conte nt&task=view&id=68&Itemid=57

5/13/2009 Setting up your Exchange PowerShell learning enviroment Prerequisites Supported OS Microsoft Windows Server 2003 R2, or Microsoft Windows Server 2003 with SP1 or SP2 Windows XP with Service Pack 2 Windows Vista Windows 2008 The Microsoft .NET Framework 2.0 (2.0.50727) Powershell Exchange 2007 Setting up your Exchange PowerShell learning enviroment Alternative if you don t want to bother: Microsoft Virtual PC Ready-made Microsoft Virtual Hard drive Exchange 2007 Exchange 2007 SP1 beta

5/13/2009 PowerShell security and common problems for beginners How do I run PowerShell script? When you try to run a PowerShell script from the Run dialog box or by double clicking it, the script does not execute, but opens in Notepad. Answer: Invoke PowerShell.exe with full path to script PowerShell.exec:\scripts\MyScript.ps1 PowerShell security and common problems for beginners

5/13/2009 PowerShell security and common problems for beginers Script blocked due to execution policy Policy Types Restricted, AllSigned RemoteSigned Unrestricted Commands Get-ExecutionPolicySet-ExecutionPolicyUnrestricted Setting to Unrestricted is not recommended in production !!! PowerShell and Common problems for beginers Problem script will not execute if contains Exchange commands Solution -create a PowerShell profile which will load Exchange snap-ins for instructions see: FAQ 000037 -error when executing PowerShell script which contains Exchange PowerShell commands

5/13/2009 Communicating with user from the script Prompting user Write-Host-ForegroundColorred-BackgroundColoryellow"Formatingyourdrivec:..." Write-Host-ForegroundColorblue-BackgroundColorgreen"BecoolIamjustkidding" Getting user input Read-Host 3rd party editors Primal Script 2009 Autocomplete, Shows you syntax as you type List of switches Color coding Debugging Script signing with a one button click Comparing scripts Source control FTP transfer Code reusing Etc.

5/13/2009 Primal Script Editors and enhancments Primal Script http://www.primalscript.com/ PowerShell IDE http://powershell.de/ PowerShell Analyzer www.powershellanalyzer.com PowerShell Plus http://www.powershell.com/plus/

5/13/2009 I don t like comand line Alternatives to PowerShell Power GUI http://www.powergui.org/index.jspa AD Infinitum http://www.newfawm.com/adi2.htm Scriptlogic http://www.scriptlogic.com/ PowerGUI

5/13/2009 PowerGUI PowerGUI

5/13/2009 PowerGUI Additional Exchange resources Microsoft Exchange server web site http://www.microsoft.com/exchange Microsoft Exchange Team Blog (You had me at EHLO) http://msexchangeteam.com Technet Microsoft Exchange Server TechCenter http://www.microsoft.com/technet/prodtechnol/exchange/defa ult.mspx Virtual labs http://www.microsoft.com/technet/prodtechnol/exchange/virtu allab/default.mspx Webcasts http://www.microsoft.com/technet/prodtechnol/exchange/2007 /webcasts.mspx

5/13/2009 PowerShell books Lite Frank Koch, Microsoft Switzerland German version English version PowerShell books medium PowerShell documentation Pack Manuals that comes with Powershell http://www.microsoft.com/downloads/details.aspx?Famil yID=b4720b00-9a66-430f-bd56ec48bfca154f&DisplayLang=en

5/13/2009 Powershell Books Advanced Converting VBScript Commands to Windows PowerShell Commands http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/default. mspx

5/13/2009 Webcasts in German Klickst Du noch oder skriptest Du schon? Frank Rder MVP Windows Server System -Directory Services Teil 1 Windows PowerShell Einfhrung Teil 2 Server-Administration mit Windows PowerShell Teil 3 Exchange Server 2007 Administration mit Windows PowerShell Websites and blogs Windows PowerShell Home http://www.microsoft.com/windowsserver2003/technologies/management/po wershell/default.mspx Blog of Windows Powershell team http://Blogs.msdn.com/powershell The Microsoft Exchange Team blog: http://msexchangeteam.com/default.aspx Vivek Sharma s blog: http://www.viveksharma.com/techlog/category/scripts/ The PowerShell Guy http://thepowershellguy.com/blogs/posh/pages/powertab.aspx

5/13/2009 Websites and blogs Glen Scales development blog http://gsexdev.blogspot.com/ Webcasts Introduction to Windows PowerShell Scripting in Exchange Server 2007 (Level 200) TechNet Webcast: 24 Hours of Exchange Server 2007 (Part 09 of 24): Using PowerShell for Exchange Management (Level 200) Microsoft Windows PowerShell Scripting for Microsoft Exchange Server 2007 (Level 300)

5/13/2009 Community PowerShell Anwendergruppe www.powershell-ag.de Community PowerShell Live Get-Community|Where{$_.passion-eq"PowerShell } http://powershelllive.com

5/13/2009 Community Swiss IT Pro user group www.swisitpro.ch Exchange User Group Europe http://www.eugeurope.org Speakers wanted Get-speaker | where {$._passion Contact dejan.foro@eugeurope.org

eq

commnunity }

5/13/2009 Questions ? Questions and Answers Q -Can powershell be used against Exchange 2003 machines ? A yes, but not with all functionality and looks ugly http://blog.sapien.com/current/2007/2/21/managingexchange-2003-servers-with-powershell.html

5/13/2009 Questions and Answers Q Can PowerShell be used from .NET Languages like IronPhyton ? A PowerShell is based on .NET framework and therefore can be embeded in other .NET languages and vice versa. Here are some examples: Using IronPython from PowerShell Part 1 : Watch folder for changes without blocking Console http://thepowershellguy.com/blogs/posh/archive/2007/02/10/usingironpython-from-powershell-part-1-watch-folder-for-changeswithout-blocking-console.aspx Embedding PowerShell in IronPython and vice versa -- two great tastes that taste great together http://stevegilham.blogspot.com/2008/02/embedding-powershellin-ironpython.html Presentation dowlnoad This presentation will be available for download from: www.exchangemaster.net

5/13/2009 Contact: E-mail: dejan.foro@exchangemaster.net LinkedIn: http://www.linkedin.com/in/dejanforo Xing (OpenBC): http://www.xing.com/profile/Dejan_Foro

Anda mungkin juga menyukai