$(Get-Exchange).pdf

download $(Get-Exchange).pdf

of 20

Transcript of $(Get-Exchange).pdf

  • 8/12/2019 $(Get-Exchange).pdf

    1/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 1/20

    $(Get-Exchange).Info()

    Encounters of an Exchange Administrator

    Home

    AboutLegal

    Type text to search here...

    Home> Exchange, Powershell> Powershell Scripting for Exchange Server Some Tips

    Powershell Scripting for Exchange Server Some Tips

    December 30th, 2012 SahalLeave a commentGo to comments

    Here is a consolidation of few features and tips from my scripting practice for Exchange Server.

    First thing any scripter need is a script editor, and when you talk about script editors for Powershell, there is a minimum feature requirement. Of them are Tab

    completion, Testing and debugging the script from the editor itself.

    Getting the Exchange cmdlets inside the editor, for this first thing required is to have Exchange Management Tools Installed. After that we open Powershell

    ISE and check the loaded PS Snapins

    010203040506070809

    PSC:\> Get-PSSnapin| Format-TableNameName----Microsoft.PowerShell.DiagnosticsMicrosoft.WSMan.ManagementMicrosoft.PowerShell.CoreMicrosoft.PowerShell.UtilityMicrosoft.PowerShell.Host

    http://www.get-exchange.info/author/sahal/http://www.get-exchange.info/legal/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/http://www.get-exchange.info/author/sahal/http://www.get-exchange.info/category/powershell/http://www.get-exchange.info/category/exchange/http://www.get-exchange.info/http://www.get-exchange.info/legal/http://www.get-exchange.info/about/http://www.get-exchange.info/http://www.get-exchange.info/
  • 8/12/2019 $(Get-Exchange).pdf

    2/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 2/20

    You can see from above all the loaded snapins, and you wont see Exchange Snapins.

    Now, lets check for the Registered but not loaded Snapins

    You can see above there are three snapins registered by Exchange Server 2010

    Now load the Registered Snapins to the current session

    1011

    Microsoft.PowerShell.ManagementMicrosoft.PowerShell.Security

    1234567

    PSC:\> Get-PSSnapin-Registered| Format-TableNameName----Microsoft.Exchange.Management.PowerShell.E2010Microsoft.Exchange.Management.PowerShell.SetupMicrosoft.Exchange.Management.Powershell.Support

    01020304050607080910111213141516

    PSC:\> Get-PSSnapin-Registered| Add-PSSnapinPSC:\> Get-PSSnapin| Format-TableNameName----Microsoft.PowerShell.DiagnosticsMicrosoft.WSMan.ManagementMicrosoft.PowerShell.CoreMicrosoft.PowerShell.UtilityMicrosoft.PowerShell.HostMicrosoft.PowerShell.ManagementMicrosoft.PowerShell.SecurityMicrosoft.Exchange.Management.PowerShell.E2010Microsoft.Exchange.Management.PowerShell.SetupMicrosoft.Exchange.Management.Powershell.Support

  • 8/12/2019 $(Get-Exchange).pdf

    3/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 3/20

    Now we have all the exchange cmdlets loaded in our session, good to go.

    Lets try a simple Exchange 2010 Cmdlet.

    Why is this error, whenever you start Exchange Management Console or Exchange Management Shell, it initiates a Powershell Remoting Session, and sets some

    default settings such as the Domain Controller, the Exchange Server to connect etc. In above case these things didnt happen as we have just loaded the raw

    cmdlets using PSSnapin.

    Another important point to note is RBAC, when you load just the snapins, you are loading the raw cmdlets to the session. Exchange is not intended to be

    managed like that. There is Robust Access Control layer built into the management tools, the Role Based Access Control (RBAC). When we do execute

    cmdlets by just loading PSSnapin it DOESNT RESPECT RBAC, and when RBAC is not respected the cmdlets may give unexpected results.

    PS: But this doenst block us from using the snapins to easily write or edit scripts, only thing is that you cannot run the scripts here.

    The solution is to use Implicit Remoting:

    In this method, we are not loading any Snapins, we just create an implicit remoting session using Import-PSSession and that session loads all the cmdlets we

    need, it also respects the RBAC (So you only get access to the Cmdlets you have been assigned inside the RBAC Roles).

    Creating an Implicit Remoting session to Exchange Server 2010

    #If you want to pass an alternate credential to connect to exchange you can use -Credentialparameter

    #To interactively pass the credentials use -Credential (Get-Credential)to theNew-PSSessionCmdlet

    12

    34567

    PSC:\> Get-MailboxGet-Mailbox: Value cannot be null.

    Parameter name: serverSettingsAt line:1 char:12+ Get-Mailbox

  • 8/12/2019 $(Get-Exchange).pdf

    4/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 4/20

    There is one warning always comes as powershell checks for the cmdlet verbs used, its due to the cmdlets Clean-MailboxDatabase, and Retry-Queue, bothClean and Retry are not in the Approved verbs you get when executing the cmdlet Get-Verb

    Now lets try Get-Mailbox

    All is well!

    Now lets see another difference to keep in mind while scripting for Exchange

    Lets see some examples from Exchange Management Shell

    234567

    WARNING: Some imported command names include unapproved verbs which might make them less discoverabre detail or typeGet-Verbto see the list of approved verbs.ModuleType Name ExportedCommands---------- ---- ----------------Script tmp_819a88a7-c59d-464e... {Get-IRMConfiguration, New-MailUser, Enable-CmdletExtensionAge

    123456

    PSC:\> Get-MailboxName Alias ServerName ProhibitSendQuota---- ----- ---------- -----------------Administrator Administrator ex2010mbx11 unlimitedDiscoverySearchMailbox... DiscoverySearchMa... ex2010mbx11 50 GB (53,687,091,200 bytes)

    12

    3456789

    [PS] C:\>$mbx= Get-Mailbox-IdentityAdministrator[PS] C:\>$mbx.EmailAddresses

    SmtpAddress : [email protected] : [email protected] : smtp:[email protected] : SMTPIsPrimaryAddress : FalsePrefixString : smtp

    1 SmtpAddress : [email protected]

  • 8/12/2019 $(Get-Exchange).pdf

    5/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 5/20

    you can see from above that you are getting a complete object of email address which has properties like prefixstring, IsPrimaryAddress etc. see the members of

    email address object

    Similarly you can see the members of the Mailbox itself, for readability i have remove most of them. The relevant member to our discussion is EmailAddressesproperyt, you can see here that its a ofProxyAddressCollection

    23456

    AddressString : [email protected] : SMTP:[email protected] : SMTPIsPrimaryAddress : TruePrefixString : SMTP

    01020304050607080910

    11121314151617181920

    [PS] C:\>$mbx.emailaddresses | Get-Member TypeName: Microsoft.Exchange.Data.SmtpProxyAddressName MemberType Definition---- ---------- ----------CompareTo Method int CompareTo(Microsoft.Exchange.Data.ProxyAddress otheEquals Method bool Equals(System.Object obj), bool Equals(Microsoft.EGetHashCode Method int GetHashCode()GetSimilarProxy Method Microsoft.Exchange.Data.ProxyAddressBase GetSimilarProxGetType Method typeGetType()

    ToPrimary Method Microsoft.Exchange.Data.ProxyAddressBase ToPrimary()ToSecondary Method Microsoft.Exchange.Data.ProxyAddressBase ToSecondary()ToString Method string ToString()TryDeencapsulate Method bool TryDeencapsulate(Microsoft.Exchange.Data.ProxyAddrAddressString Property System.String AddressString {get;}IsPrimaryAddress Property System.Boolean IsPrimaryAddress {get;}Prefix Property Microsoft.Exchange.Data.ProxyAddressPrefix Prefix {get;PrefixString Property System.String PrefixString {get;}ProxyAddressString Property System.String ProxyAddressString {get;}SmtpAddress Property System.String SmtpAddress {get;}

    010203040506

    [PS] C:\>$mbx| Get-Member TypeName: Microsoft.Exchange.Data.Directory.Management.MailboxName MemberType Definition---- ---------- ----------Clone Method System.Object Clone()

  • 8/12/2019 $(Get-Exchange).pdf

    6/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 6/20

    Now lets observe the same from Powershell Console or the ISE

    you can see here, that you are not getting anything like prefix or IsPrimary etc. you are just getting the data as string.

    To prove that lets useGet-Memberon the EmailAddressesproperty or you can also use

    07080910111213

    Equals Method bool Equals(System.Object obj)GetHashCode Method int GetHashCode()GetProperties Method System.Object[] GetProperties(SystGetType Method typeGetType()ToString Method string ToString()...EmailAddresses Property Microsoft.Exchange.Data.ProxyAddressCollection

    1234

    PSC:\> $mbx= Get-Mailbox-IdentityAdministratorPSC:\> $mbx.EmailAddressessmtp:[email protected]:[email protected]

    01020304050607080910

    111213141516171819

    # $mbx.EmailAddresses.GetType()PSC:\> $mbx.EmailAddresses | Get-Member TypeName: System.StringName MemberType Definition---- ---------- ----------Clone Method System.Object Clone()CompareTo Method int CompareTo(System.Object value), int CompareTo(string stContains Method bool Contains(string value)CopyTo Method System.Void CopyTo(int sourceIndex, char[] destination, int

    EndsWith Method bool EndsWith(string value), boolSo, having looked at all those details, just see if we see any difference in the Retried Object it

    PSC:\> $mbx| Get-Member TypeName: Deserialized.Microsoft.Exchange.Data.Directory.Management.MailboxName MemberType Definition---- ---------- ----------ToString Method string ToString(), string ToString(string form

  • 8/12/2019 $(Get-Exchange).pdf

    7/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 7/20

    Important information to look here is the word "Deserialized" in the beginning of Type Name and also in the definition of EmailAddressesproperty. This brings

    us another concept to understand, "How Powershell Remoting perform Data Transfer". This discussion is to not dig into that area, i will provide some reference

    links to read abou it at the end of this post. Its already explained by Powershell Experts out there.

    Deserialized Objects

    In short, it does somthing called serialization and deserializaion - a form of transporting data or live objects using XML. When objects get deserialized they loose

    their dynamic nature, so you cannot perform most of the method calls or explore dynamic nature of the Object.

    Lets understand this by looking at another example:

    Exploring maibox database object inside the script, lets first look at from Powershell Console or ISe

    the property EdbFilePath gives you the complete path to the Database File.

    you can see the type of this property is string

    2021222324252627

    282930313233

    PSComputerName NoteProperty System.String PSComputerName=ex2010mbx11RunspaceId NoteProperty System.Guid RunspaceId=1c8913bb-b202-4b52-8a13AcceptMessagesOnlyFrom Property Deserialized.Microsoft.Exchange.Data.Directory.AcceptMessagesOnlyFromDLMembers Property Deserialized.Microsoft.Exchange.Data.Directory.AcceptMessagesOnlyFromSendersOrMembers Property Deserialized.Microsoft.Exchange.Data.Directory.AddressBookPolicy Property {get;set;}AddressListMembership Property Deserialized.Microsoft.Exchange.Data.Directory.Alias Property System.String {get;set;}

    AntispamBypassEnabled Property System.Boolean {get;set;}ArbitrationMailbox Property {get;set;}ArchiveDatabase Property {get;set;}ArchiveDomain Property {get;set;}....EmailAddresses Property Deserialized.Microsoft.Exchange.Data.ProxyAddr

    1234

    $Db= Get-MailboxDatabaseMBX11-DB01PSC:\> $Db.EdbFilePathC:\MBX11-DB01\mbx11-db01.edb

  • 8/12/2019 $(Get-Exchange).pdf

    8/20

  • 8/12/2019 $(Get-Exchange).pdf

    9/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 9/20

    What is the take way from this is while writing the script keep in mind the differences, such that in EMS $Db.EdbFilePathis an object by itself and if you

    requirement is to just get the path you can use $Db.EdbFilePath.PathNameBut this will not work when you are executing from PowerShell ISE.

    Next thing to consider is testing and executing your Scripts for Exchange Environment, you can use PowerShell ISE to write scripts, but for testing run them from

    Exchange Management Shell, and keep in mind the difference like above and due to that the intellisence or tab completion will not show the nested properties.

    Scheduling Exchange Server Scripts

    Now a simple tip on how to schedule Exchange Server Scripts using Task Scheduler. Most of the times, you need to run scripts on a repeated intervel without

    user intervention. you can schedule your Exchange scripts and still use the EMS as the execution platform. i will just show the Action to trigger while creating a

    Scheuled Task for Exchange Server 2010 Script.

    The Program to Run will be Powershell.exe

    You should pass optional arguments to Powershell.exe to do things like running it in non-interactiveMode and/or hide the window etc. you can use -Command

    to say which command to run once powershell.exe is loaded

    Field Program to Run: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Field Optional Arguments:

    0506070809101112

    1314151617181920

    ---- ---------- ----------CompareTo Method int CompareTo(Microsoft.Exchange.Data.LoEquals Method bool Equals(System.Object value), bool EGetHashCode Method int GetHashCode()GetType Method typeGetType()ToString Method string ToString()ValidateDirectoryPathLength Method System.Void ValidateDirectoryPathLength(ValidateEdbFileExtension Method System.Void ValidateEdbFileExtension()

    ValidateFilePathLength Method System.Void ValidateFilePathLength()DriveName Property System.String DriveName {get;}IsLocalFull Property System.Boolean IsLocalFull {get;}IsPathInRootDirectory Property System.Boolean IsPathInRootDirectory {geIsUnc Property System.Boolean IsUnc {get;}PathName Property System.String PathName {get;}ServerName Property System.String ServerName {get;}[PS] C:\>

  • 8/12/2019 $(Get-Exchange).pdf

    10/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 10/20

    -NonInteractive -WindowStyle Hidden -command . C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1; Connect-ExchangeServer -

    auto; & C:\Scripts\Report-ServerHealth.ps1

    There different aspects in the optional arguments field:

    1.-NonInteractive Non Interactive Window

    2.-WindowStyle Hidden The Powershell windows is hidden (you can still the process in task manager)

    3.-command the command to execute after loading powershell.exe, this can be one or multiple cmdlets(seperated by ;)

    4.The first cmdlet . C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1; -> the is the default script loaded when you open EMS

    5.Connect-ExchangeServer -auto; -> this is the function which was loaded by the previous script called RemoteExchange.ps1

    6.& C:\Scripts\Report-ServerHealth.ps1 -> now the real script we have created (finally!!)

    Its the era of Powershell v3 now, which bring more interesting features for writing scripts, such as Intellisense, auto module loading, show command feature etc.

    PS v3 is not yet supported by Exchange server 2010 (that is at version SP2 RU5) so DO NOT go and install it on your Exchange Server 2010 Server, you will

    breat it.

    but you can use it for script editing, on your desktop or scripting machine. below are few useful features:

    The Improved Intellisense feature, this will help to discover cmdlets and parameter and even parameter values

  • 8/12/2019 $(Get-Exchange).pdf

    11/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 11/20

    Intellisense Examples:

  • 8/12/2019 $(Get-Exchange).pdf

    12/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 12/20

    Exploring Objects made easy (remember Deserialization EdbFilePath is a String here as you can see):

  • 8/12/2019 $(Get-Exchange).pdf

    13/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 13/20

    The Show-Command cmdlet to find out the syntax to use before you start scripting, you can fill out the GUI Form and then click on Copy to copy the syntax to

    clipboard.

    22/6/2014 $(G t E h ) I f () P h ll S i ti f E h S S Ti

  • 8/12/2019 $(Get-Exchange).pdf

    14/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 14/20

    Paste it back in the editor and you just got a complete syntax to use.

    Some PSRemoting References:

    About_Remot_Output

    How objects are send to and from remote sessions

    What else to look for while Writing or Editing Scripts for Exchange Server, do give your comments!

    22/6/2014 $(Get Exchange) Info() Powershell Scripting for Exchange Server Some Tips

    http://blogs.msdn.com/b/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspxhttp://technet.microsoft.com/en-us/library/dd347582.aspx
  • 8/12/2019 $(Get-Exchange).pdf

    15/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 15/20

    Share This: Tweet 8 4Like Compartir 0

    Categories: Exchange, PowershellTags: Scripting, Tips

    Comments (0)Leave a comment

    1. No comments yet.

    Name (required)

    E-Mail (will not be published) (required)

    Website

    CAPTCHA Code *

    Subscribe to comments feed

    Submit Comment

    Notify me of follow-up comments by email.

    Notify me of new posts by email.

    Exchange 2013 Step By Step: AD Preparation NotesNew Visio Stencils for Office 2013 Suite

    Share

    22/6/2014 $(Get-Exchange) Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/11/30/new-visio-stencils-for-office-2013-suite/http://www.get-exchange.info/2013/02/28/exchange-2013-step-by-step-ad-preparation-notes/http://www.get-exchange.info/comments/feed/http://www.get-exchange.info/tag/tips/http://www.get-exchange.info/tag/scripting/http://www.get-exchange.info/category/powershell/http://www.get-exchange.info/category/exchange/http://twitter.com/search?q=http%3A%2F%2Fwww.get-exchange.info%2F2012%2F12%2F30%2Fpowershell-scripting-for-exchange-server-some-tips%2Fhttps://twitter.com/intent/tweet?original_referer=http%3A%2F%2Fwww.get-exchange.info%2F2012%2F12%2F30%2Fpowershell-scripting-for-exchange-server-some-tips%2F&text=Powershell%20Scripting%20for%20Exchange%20Server%20-%20Some%20Tips%3A&tw_p=tweetbutton&url=http%3A%2F%2Fwww.get-exchange.info%2F2012%2F12%2F30%2Fpowershell-scripting-for-exchange-server-some-tips%2F
  • 8/12/2019 $(Get-Exchange).pdf

    16/20

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 16/20

    Get updates in your inbox

    note:your email address is not shared

    Join 12 other subscribers

    Email Address

    Subscribe

    Categories

    Community(4)

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/category/community/
  • 8/12/2019 $(Get-Exchange).pdf

    17/20

    22/6/2014 $(Get Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 17/20

    Directory Service(1)

    Exchange(10)

    General(7)

    Personal Thoughts(2)

    Powershell(7)

    ScriptingGames(1)

    Virtualization(6)

    Tag Cloud

    Active DirectoryAutomationBdotNetBITProEx2013StepByStepExchangeExchange 2013Exchange 2013 PreviewGeneralHyper-VKerala DHSELabMyBlogOfficeOraclePowershellPowershell PipelinePowershellV3PSH2013ScriptingSetupSQLSQLBangaloreSQLPlusTallyTechEdTechEdInTipsUserGroupVirtualizationVistual BasicWelcomeWindows 2008 R2Windows Server 2012

    Recent Posts

    Scripting Games Advanced Event 3 My Submission

    Exchange 2013 Step By Step: AD Preparation Notes

    Powershell Scripting for Exchange Server Some Tips

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/http://www.get-exchange.info/2013/02/28/exchange-2013-step-by-step-ad-preparation-notes/http://www.get-exchange.info/2013/05/15/scripting-games-advanced-event-3-my-submission/http://www.get-exchange.info/tag/windows-server-2012/http://www.get-exchange.info/tag/windows-2008-r2/http://www.get-exchange.info/tag/welcome/http://www.get-exchange.info/tag/vistual-basic/http://www.get-exchange.info/tag/virtualization/http://www.get-exchange.info/tag/usergroup/http://www.get-exchange.info/tag/tips/http://www.get-exchange.info/tag/techedin/http://www.get-exchange.info/tag/teched/http://www.get-exchange.info/tag/tally/http://www.get-exchange.info/tag/sqlplus/http://www.get-exchange.info/tag/sqlbangalore/http://www.get-exchange.info/tag/sql/http://www.get-exchange.info/tag/setup/http://www.get-exchange.info/tag/scripting/http://www.get-exchange.info/tag/psh2013/http://www.get-exchange.info/tag/powershellv3/http://www.get-exchange.info/tag/powershell-pipeline/http://www.get-exchange.info/tag/powershell/http://www.get-exchange.info/tag/oracle/http://www.get-exchange.info/tag/office/http://www.get-exchange.info/tag/myblog/http://www.get-exchange.info/tag/lab/http://www.get-exchange.info/tag/kerala-dhse/http://www.get-exchange.info/tag/hyper-v/http://www.get-exchange.info/tag/general/http://www.get-exchange.info/tag/exchange-2013-preview/http://www.get-exchange.info/tag/exchange-2013/http://www.get-exchange.info/tag/exchange/http://www.get-exchange.info/tag/ex2013stepbystep/http://www.get-exchange.info/tag/bitpro/http://www.get-exchange.info/tag/bdotnet/http://www.get-exchange.info/tag/automation/http://www.get-exchange.info/tag/active-directory/http://www.get-exchange.info/category/virtualization/http://www.get-exchange.info/category/scriptinggames/http://www.get-exchange.info/category/powershell/http://www.get-exchange.info/category/personal-thoughts/http://www.get-exchange.info/category/general/http://www.get-exchange.info/category/exchange/http://www.get-exchange.info/category/directory-service/
  • 8/12/2019 $(Get-Exchange).pdf

    18/20

    ( g ) () p g g p

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 18/20

    You mus t be willing to do the things

    today others don't do in order to have

    the things tomorrow others won't have.

    Les Brown #Quotes

    Retweeted by Sahal Omer

    Bille Baty

    @BilleBaty

    Expand

    #PoweshellDSC, MS App-V, Server

    2012BYOD, Get connected. Join us

    on 7th June. #bitpro#psbugUG Meet.

    At#Bangalorebit.ly/1ksy4zZ

    Sahal Omer

    @GetExchange

    Bengaluru, Karnataka, India

    Backup an Azure VM using Microsoft

    AzureAutomation #powershell

    buff.ly/1mOCQGy

    Jan Egil Ring@JanEgilRing

    21 Jun

    3 Jun

    16 May

    Tweets Follow

    Tweet to @GetExchange

    22/6/2014 $(Get-Exchange).Info() Powershell Scripting for Exchange Server Some Tips

    http://t.co/kNVqVouSyehttp://t.co/kNVqVouSyehttp://t.co/kNVqVouSyehttps://twitter.com/search?q=%23powershell&src=hashhttp://t.co/kNVqVouSyehttp://t.co/kNVqVouSyehttp://t.co/kNVqVouSyehttp://t.co/kNVqVouSyehttps://twitter.com/JanEgilRinghttps://twitter.com/JanEgilRinghttps://twitter.com/JanEgilRinghttps://twitter.com/intent/tweet?screen_name=GetExchangehttp://t.co/kNVqVouSyehttp://t.co/Jc8PkAn1hnhttp://t.co/Jc8PkAn1hnhttps://twitter.com/GetExchangehttps://twitter.com/GetExchangehttp://t.co/Jc8PkAn1hnhttp://t.co/Jc8PkAn1hnhttps://twitter.com/GetExchangehttp://t.co/Jc8PkAn1hnhttp://t.co/Jc8PkAn1hnhttp://t.co/Jc8PkAn1hnhttps://twitter.com/intent/tweet?screen_name=GetExchangehttps://twitter.com/GetExchangehttps://twitter.com/GetExchangehttps://twitter.com/JanEgilRing/statuses/467317308046999552https://twitter.com/GetExchange/statuses/473733388289847296https://twitter.com/BilleBaty/statuses/480540938335707137https://twitter.com/JanEgilRinghttp://t.co/kNVqVouSyehttps://twitter.com/search?q=%23powershell&src=hashhttps://twitter.com/GetExchangehttp://t.co/Jc8PkAn1hnhttps://twitter.com/search?q=%23Bangalore&src=hashhttps://twitter.com/search?q=%23psbug&src=hashhttps://twitter.com/search?q=%23bitpro&src=hashhttps://twitter.com/search?q=%23Poweshell&src=hashhttps://twitter.com/BilleBaty/statuses/480540938335707137https://twitter.com/BilleBatyhttps://twitter.com/GetExchangehttps://twitter.com/search?q=%23Quotes&src=hash
  • 8/12/2019 $(Get-Exchange).pdf

    19/20

    http://www.get-exchange.info/2012/12/30/powershell-scripting-for-exchange-server-some-tips/ 19/20

    Get-Exchange.Info

    A 18 personas les gusta Get-Exchange.Info.

    Plug-in socialde Facebook

    Me gusta

    Archives

    https://www.facebook.com/GetExchangehttps://www.facebook.com/mahdi.mansour.982https://www.facebook.com/prasanna.raju.5https://www.facebook.com/manohara.reddy.3https://www.facebook.com/kotteeshttps://www.facebook.com/ricardo.branhttps://www.facebook.com/kranthi441https://www.facebook.com/srinivasskchttps://www.facebook.com/shaikh109https://www.facebook.com/networkdisahttps://www.facebook.com/eliyas.khanhttps://www.facebook.com/help/?page=209089222464503https://www.facebook.com/GetExchangehttps://www.facebook.com/GetExchangehttps://www.facebook.com/help/?page=209089222464503https://www.facebook.com/GetExchange
  • 8/12/2019 $(Get-Exchange).pdf

    20/20