• How-to use Powershell to change the Network location type (to Private or Public)

     

    Here is how to change the Network type of a specific network (or networks) to Private or Public, to help you better master Firewall policies.

    This is especially useful if you have a bunch of Windows 2008 servers on a DMZ as it’s more and more the case, which are not controlled by GPOs then.

    Credits goes to Vladimir Averkin’s great Powershell post, that I slightly modified to  be a little bit more precise regarding the settings. I added the $PrivateNetwork and $PublicNetwork variables to better understand the use of the SetCategory() .Net method.

     

     

    #Static variables definition (never change them)

    $PrivateNetwork=1

    $PublicNetwork=3

     

    #####################################

    ##### CHANGES TO CUSTOMIZE ":   #####

    ##### - Network name(s)         #####

    ##### - Set to Private or Public#####

    #####################################

    #Change the network name on the line below to the network name you want to change:

    $NetworkNameFilter1 = "Partial name with wildcard or full network name"

    #Change the type you want to assign to the above named network :

    $NetworkTypeAssignment = $PrivateNetwork

    #######################################

    ##### End of changes customization#####

    #######################################

     

     

    # Better for error control - Script is working from Vista to upper OS versions, including server OS

    # => skip network location setting for pre-Vista operating systems

    if([environment]::OSVersion.version.Major -lt 6) { return }

     

    # Optionnal - skip network location setting if local machine is joined to a domain.

    #if(1,3,4,5 -contains (Get-WmiObject win32_computersystem).DomainRole) { return }

     

    # Get network connections

    $networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}"))

    $connections = $networkListManager.GetNetworkConnections()

     

     

    # Set network location to Private for all networks :

    #$connections | % {$_.GetNetwork().SetCategory(1)}

    #Set network location for networks matching the $NetworkNameFilter1 filter :

    $connections | % `

    {

    #Change the $NetworkNameFilter1 string variable earlier in the script to identify which network you want to set to public or private :

    If ($_.GetNetwork().GetName() -like $NetworkNameFilter1)

    {

    Write-Host "Network category of "$_.GetNetwork().GetName()"was perviously set to "$_.GetNetwork().GetCategory()

    $_.GetNetwork().SetCategory($NetworkTypeAssignment) #Category "1" is meant for Private Network, and Category "3" is for Public Network

    Write-Host "Network category of "$_.GetNetwork().GetName()"network changed to "$_.GetNetwork().GetCategory()

    }

    }

     

  • /Hosted mode or not /Hosted mode, that is the question … since Exchange 2010 SP2, recomended not !

     

    “If you haven’t yet deployed Exchange 2010, our recommendation is to avoid /hosting mode and go directly to Exchange 2010 SP2 using the on-premises configuration. This will allow you to offer the features customers are looking for, and avoid a cross forest migration down the road.”

    Source :

    Future of /Hosting Mode

    http://blogs.technet.com/b/exchange/archive/2011/10/13/future-of-hosting-mode.aspx