externalLibs/Carbon/RELEASE NOTES.txt

# 1.9.0 (8 November 2014)
 
This is the last minor release for version 1.0. Future 1.0-compatible releases will *only* contain bug fixes, no new features. It takes too much time to maintain two versions, and I'd rather spend my time getting 2.0 out the door. Carbon 2.0 will require PowerShell 4.0, so start planning.
 
## Enhancements
 
### Certificates
 
 * Added `KeyStorageFlags` parameter to [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) when loading a certificate from a file for better control when storing the certificate.
  
### Hosts File
 
 * [Set-HostsEntry](http://get-carbon.org/help/Set-HostsEntry.html) now handles writing to an in-use/locked hosts file, retrying up to 10 times before writing an error, waiting a random amount of time (from 0 to 1000 milliseconds) between each retry attempt.
 
### IIS
 
 * [Get-IisMimeMap](http://get-carbon.org/help/Get-IisMimeMap.html), [Remove-IisMimeMap](http://get-carbon.org/help/Remove-IisMimeMap.html), and [Set-IisMimeMap](http://get-carbon.org/help/Set-IisMimeMap.html) now support managing MIME types for websites, virtual directories, and applications.
 
### Scheduled Tasks
 
 * Created [Get-ScheduledTask](http://get-carbon.org/help/Get-ScheduledTask.html) function for getting the scheduled tasks on the local computer using `schtasks.exe`.
 * Created [Install-ScheduledTask](http://get-carbon.org/help/Install-ScheduledTask.html) function for installing a scheduled task using `schtasks.exe`.
 * Created [Test-ScheduledTask](http://get-carbon.org/help/Test-ScheduledTask.html) function for testing if a scheduled tasks on the local computer exists using `schtasks.exe`.
 * Created [Uninstall-ScheduledTask](http://get-carbon.org/help/Uninstall-ScheduledTask.html) function for deleting a scheduled task using `schtasks.exe`.
  
### Services
 
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) now supports setting a command to run when a service fails.
  
## Bug Fixes
 
### General
 
 * `Import-Carbon` fails when `-WhatIf` switch is used.
 * Importing Carbon no longer writes an error if the `PATH` environment variable contains a path to a non-existent drive (issue [#134](https://bitbucket.org/splatteredbits/carbon/issue/134/import-carbon-fails-with-path-environment)).
  
### INI
 
 * [Set-IniEntry](http://get-carbon.org/help/Set-IniEntry.html) fails when adding the first section-less setting to a file.
  
### Internet Explorer
 
 * [Enable-IEActivationPermission](http://get-carbon.org/help/Enable-IEActivationPermission.html) no longer returns the `hkcr:` drive.
  
### Security
 
 * Fixed an error that occurs when setting permissions on a private key fails: the error message is created using an invalid format string (issue [#133](https://bitbucket.org/splatteredbits/carbon/issue/133/set-cryptokeysecurity-invalid-parameters)).
 * Fixed an exception that gets thrown when setting a private key's permissions and the only certificate key is AT_SIGNATURE (issue [#132](https://bitbucket.org/splatteredbits/carbon/issue/132/set-cryptokeysecurity-throws-exception)).
  
### Services
 
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) stops Windows service even when no settings/configuration has changed (fixes issue [#131](https://bitbucket.org/splatteredbits/carbon/issue/131/install-service-always-restarts-service)).
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) didn't clear services depended on during a re-install.
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) wasn't restarting a manual service if it was running when configuration began.
 * [Uninstall-Service](http://get-carbon.org/help/Uninstall-Service.html) hard codes the path to the Windows directory (fixes issue [#143](https://bitbucket.org/splatteredbits/carbon/issue/143/uninstall-service-script-has-hard-coded)). Thanks to [Travis Mathison](https://bitbucket.org/tdmathison) for the fix.
 
  
# 1.8.0 (7 September 2014)
 
## Enhancements
 
### General
 
 * The following functions now write messages with `Write-Verbose` instead of `Write-Host`. See [Write-Host Considered Harmful](http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/).
    * [Add-GroupMember](http://get-carbon.org/help/Add-GroupMember.html)
    * [Clear-TrustedHost](http://get-carbon.org/help/Clear-TrustedHost.html)
    * [Convert-XmlFile](http://get-carbon.org/help/Convert-XmlFile.html)
    * [Disable-FirewallStatefulFtp](http://get-carbon.org/help/Disable-FirewallStatefulFtp.html)
    * [Disable-IEEnhancedSecurityConfiguration](http://get-carbon.org/help/Disable-IEEnhancedSecurityConfiguration.html)
    * [Disable-IisSecurityAuthentication](http://get-carbon.org/help/Disable-IisSecurityAuthentication.html)
    * [Disable-NtfsCompression](http://get-carbon.org/help/Disable-NtfsCompression.html)
    * [Enable-FirewallStatefulFtp](http://get-carbon.org/help/Enable-FirewallStatefulFtp.html)
    * [Enable-IEActivationPermission](http://get-carbon.org/help/Enable-IEActivationPermission.html)
    * [Enable-IisSecurityAuthentication](http://get-carbon.org/help/Enable-IisSecurityAuthentication.html)
    * [Enable-NtfsCompression](http://get-carbon.org/help/Enable-NtfsCompression.html)
    * [Grant-ComPermission](http://get-carbon.org/help/Grant-ComPermission.html)
    * [Grant-MsmqMessageQueuePermission](http://get-carbon.org/help/Grant-MsmqMessageQueuePermission.html)
    * [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html)
    * [Grant-ServiceControlPermission](http://get-carbon.org/help/Grant-ServiceControlPermission.html)
    * [Install-Group](http://get-carbon.org/help/Install-Group.html)
    * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html)
    * [Install-MsmqMessageQueue](http://get-carbon.org/help/Install-MsmqMessageQueue.html)
    * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html)
    * [Install-RegistryKey](http://get-carbon.org/help/Install-RegistryKey.html)
    * [Install-Service](http://get-carbon.org/help/Install-Service.html)
    * [Install-User](http://get-carbon.org/help/Install-User.html)
    * [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html)
    * [Invoke-WindowsInstaller](http://get-carbon.org/help/Invoke-WindowsInstaller.html)
    * [Lock-IisConfigurationSection](http://get-carbon.org/help/Lock-IisConfigurationSection.html)
    * [New-Junction](http://get-carbon.org/help/New-Junction.html)
    * [Protect-Acl](http://get-carbon.org/help/Protect-Acl.html)
    * [Remove-IniEntry](http://get-carbon.org/help/Remove-IniEntry.html)
    * [Remove-Junction](http://get-carbon.org/help/Remove-Junction.html)
    * [Remove-SslCertificateBinding](http://get-carbon.org/help/Remove-SslCertificateBinding.html)
    * [Reset-HostsFile](http://get-carbon.org/help/Reset-HostsFile.html)
    * [Reset-MsmqQueueManagerID](http://get-carbon.org/help/Reset-MsmqQueueManagerID.html)
    * [Revoke-ComPermission](http://get-carbon.org/help/Revoke-ComPermission.html)
    * [Revoke-ServicePermission](http://get-carbon.org/help/Revoke-ServicePermission.html)
    * [Set-IisHttpHeader](http://get-carbon.org/help/Set-IisHttpHeader.html)
    * [Set-IisMimeMap](http://get-carbon.org/help/Set-IisMimeMap.html)
    * [Set-IisWebsiteID](http://get-carbon.org/help/Set-IisWebsiteID.html)
    * [Set-IisWindowsAuthentication](http://get-carbon.org/help/Set-IisWindowsAuthentication.html)
    * [Set-IniEntry](http://get-carbon.org/help/Set-IniEntry.html)
    * [Set-RegistryKeyValue](http://get-carbon.org/help/Set-RegistryKeyValue.html)
    * [Set-SslCertificateBinding](http://get-carbon.org/help/Set-SslCertificateBinding.html)
    * [Uninstall-IisAppPool](http://get-carbon.org/help/Uninstall-IisAppPool.html)
    * [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html)
    * [Unlock-IisConfigurationSection](http://get-carbon.org/help/Unlock-IisConfigurationSection.html)
 * The following internal functions (which we warned you not to use!) are no longer exported:
    * Add-IisServerManagerMember
    * Get-IdentityPrincipalContext
    * Invoke-ConsoleCommand
    * ConvertTo-ProviderAccessControlRights
    * Assert-WindowsFeatureFunctionsSupported
    * Resolve-WindowsFeatureName
     
### Certificates
 
 * Improving error handling when [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) fails to load a certificate from a file.
 * [Install-Certificate](http://get-carbon.org/help/Install-Certificate.html) now supports installing with an `X509Certificate2` object instead of just a path to a certificate.
 * [Remove-SslCertificateBinding](http://get-carbon.org/help/Remove-SslCertificateBinding.html): improved error handling.
 * [Set-SslCertificateBinding](http://get-carbon.org/help/Set-SslCertificateBinding.html): improved error handling.
 * Improved documentation for [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html).
 * Added extended script property `StoreName` to `X509Store` objects to return the store's `System.Security.Cryptography.X509Certificates.StoreName` value.
 * Added a table view/format for `X509Store` objects. PowerShell's default view is a list, so you'll have to explicitly format the objects as a table, e.g. `dir cert:\LocalMachine | Format-Table`.
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html)'s `Path` parameter now supports wildcards and certificate provider paths, e.g. `cert:\`.
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) now writes an error if a certificate isn't found when getting a certificate by its path.
 
### Computer
 
 * Created [Get-ProgramInstallInfo](http://get-carbon.org/help/Get-ProgramInstallInfo.html) function to get the information displayed by the `Programs and Features` UI.
 
### Cryptography
 
 * [Protect-String](http://get-carbon.org/help/Protect-String.html) can now encrypt strings as a specific user. Use the `Credential` parameter.
 * Created [New-RsaKeyPair](http://get-carbon.org/help/New-RsaKeyPair.html) for creating public/private RSA key pair using `makecert.exe` and `pkv2pfx.exe`. Requires that you've installed a Windows SDK.
 * [Protect-String](http://get-carbon.org/help/Protect-String.html) can now encrypt strings using an RSA public key.
 * [Unprotect-String](http://get-carbon.org/help/Unprotect-String.html) can now decrypt strings using an RSA private key.
  
### File System
 
 * [Disable-NtfsCompression](http://get-carbon.org/help/Disable-NtfsCompression.html): improved error handling.
 * [Enable-NtfsCompression](http://get-carbon.org/help/Enable-NtfsCompression.html): improved error handling.
 * Created [Compress-Item](http://get-carbon.org/help/Compress-Item.html) function for compressing files/directories into a ZIP file.
 * Created [Test-ZipFile](http://get-carbon.org/help/Test-ZipFile.html) function for testing if a file is a ZIP file.
 * Created [Expand-Item](http://get-carbon.org/help/Expand-Item.html) function for decompressing a ZIP file.
 * [New-TempDirectory](http://get-carbon.org/help/New-TempDirectory.html) now supports adding a prefix to the temporary directory's name, so you can more easily track down those scripts/processes that don't clean up after themselves.
 
### Firewall
 
 * [Disable-FirewallStatefulFtp](http://get-carbon.org/help/Disable-FirewallStatefulFtp.html): improved error handling.
 * Added `Name` and `LiteralName` parameters to [Get-FirewallRule](http://get-carbon.org/help/Get-FirewallRule.html) to return specific rules instead of all of them.
 * [Get-FirewallRule](http://get-carbon.org/help/Get-FirewallRule.html), now returns `Carbon.Firewall.Rule` objects, instead of anonymous hashes.
 * Added default table format for [Get-FirewallRule](http://get-carbon.org/help/Get-FirewallRule.html) output.
 * [Get-FirewallRule](http://get-carbon.org/help/Get-FirewallRule.html) now returns additional rule information: interface type, security, source, description, program, and service. Who knew `netsh advfirewall firewall rule show` had a `verbose` switch? RTFM.
 
### INI
 
 * [Remove-IniEntry](http://get-carbon.org/help/Remove-IniEntry.html) now handles case-sensitive INI files.
 * [Set-IniEntry](http://get-carbon.org/help/Set-IniEntry.html) now handles case-sensitive INI files.
 * [Split-Ini](http://get-carbon.org/help/Split-Ini.html) now handles case-sensitive INI files.
 
### MSI
 
 * [Invoke-WindowsInstaller](http://get-carbon.org/help/Invoke-WindowsInstaller.html): improved error message if installation fails.
 
### Security
 
 * Creating [Revoke-Permission](http://get-carbon.org/help/Revoke-Permission.html) function for revoking a user's permission to a file, directory, registry key, or certificate's private key/key container.
 * Creating [ConvertTo-ContainerInheritanceFlags](http://get-carbon.org/help/ConvertTo-ContainerInheritanceFlags.html) function for converting `System.Security.AccessControl.InheritanceFlags` and `System.Security.AccessControl.PropagationFlag` values into a `Carbon.Security.ContainerInheritanceFlags` value.
 * [Get-Permission](http://get-carbon.org/help/Get-Permission.html) now supports returning the permissions on private keys/key containers.
 * [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html) now supports granting permissions on private keys//key containers.
 * [Test-Permission](http://get-carbon.org/help/Test-Permission.html) now supports testing permissions on certificate private keys/key containers.
 
### Services
 
 * Created [Get-ServiceConfiguration](http://get-carbon.org/help/Get-ServiceConfiguration.html) function for loading a service's configuration: description, account name/username, failure actions, etc.
 * Added the following extended type data to `System.ServiceController.Service`:
   * Description
   * ErrorControl
   * FailureProgram
   * FirstFailure
   * LoadOrderGroup
   * Path
   * RebootDelay
   * RebootDelayMinutes
   * RebootMessage
   * ResetPeriod
   * ResetPeriodDays
   * RestartDelay
   * RestartDelayMinutes
   * SecondFailure
   * StartMode
   * StartType
   * TagID
   * ThirdFailure
   * UserName
 
 
## Bug Fixes
 
### General
 
 * Importing Carbon gives an error if `PATH` environment variable contains an empty path.
 * Improved the error handling in the following functions so they properly catch exceptions and write friendlier errors:
   * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html)
   * [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html)
   * [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html)
 
### Certificates
 
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) couldn't open CA/CertificateAuthority store (fixes issue [#130](https://bitbucket.org/splatteredbits/carbon/issue/130/get-certificate-doesnt-find-any)).
 * Extended script property `DisplayName` on `X509Store` objects returning wrong store name for custom stores, now returns an empty string.
 
### File System
 
 * [Disable-NtfsCompression](http://get-carbon.org/help/Disable-NtfsCompression.html) now *really* supports multiple paths.
 * [Enable-NtfsCompression](http://get-carbon.org/help/Enable-NtfsCompression.html) now *really* supports multiple paths.
 
### Path
 
 * [Resolve-PathCase](http://get-carbon.org/help/Resolve-PathCase.html) didn't work under Windows 2012 R2.
 
### Users and Groups
 
 * The `Carbon.Identity.FindByName` method and the [Resolve-IdentityName](http://get-carbon.org/help/Resolve-IdentityName.html) and [Test-Identity](http://get-carbon.org/help/Test-Identity.html) functions now handle identity names with `.` for the domain/machine name, e.g. `.\Administrator`.
 * The `Carbon.Identity.FullName` property returns the wrong value when domain is empty/null, e.g. `Resolve-IdentityName -Name 'Everyone'` returns `\Everyone`, when it should return `Everyone`.
 * The `Carbon.Identity.FindByName` method and the [Resolve-IdentityName](http://get-carbon.org/help/Resolve-IdentityName.html) and [Test-Identity](http://get-carbon.org/help/Test-Identity.html) functions unable to resolve `LocalSystem` account (which is actually `NT AUTHORITY\SYSTEM`).
  
 
# 1.7.0 (30 April 2014)
 
There is now [a Carbon support mailing list](http://www.freelists.org/list/carbon).
 
## Enhancements
 
### General
 
 * Import-Carbon.ps1 now supports the `-WhatIf` switch.
 * Import-Carbon.ps1 now hides verbose log messages when removing/importing Carbon even when supplying the `-Verbose` switch because I think the verbose output is too verbose and not helpful at all.
 * Import-Carbon.ps1 now supports adding a prefix when importing the Carbon module (with the `Prefix` parameter) to avoid name collisions and [follow best practices](http://blogs.msdn.com/b/powershell/archive/2014/04/07/what-s-in-a-name-using-the-ps-prefix.aspx).
 
### Certificates
 
 * [Get-CertificateStore](http://get-carbon.org/help/Get-CertificateStore.html) now supports non-standard, custom certificate stores.
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) now supports non-standard, custom certificate stores.
 * [Install-Certificate](http://get-carbon.org/help/Install-Certificate.html) now supports non-standard, custom certificate stores.
 * [Uninstall-Certificate](http://get-carbon.org/help/Uninstall-Certificate.html) now supports non-standard, custom certificate stores.
 
## Bug Fixes
 
### General
 
 * No more silent errors when importing Carbon on Windows 2012 R2.
 
### Certificates
 
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) no longer writes a silent error when a certificate does not exist. Instead, no error is written.
 
### File System
 
 * [Install-Junction](http://get-carbon.org/help/Install-Junction.html) fails when target path is hidden.
 * [Test-NtfsCompression](http://get-carbon.org/help/Test-NtfsCompression.html) fails when file/directory is hidden.
 * [Test-PathIsJunction](http://get-carbon.org/help/Test-PathIsJunction.html) fails when tested directory is hidden.
 
### Security
 
 * [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html) fails when item is hidden.
 * [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html) doesn't handle non-existent paths, causing cascading errors.
 * [Test-Permission](http://get-carbon.org/help/Test-Permission.html) always returns `$false` when testing leaf-level permissions and the `ApplyTo` parameter is provided, i.e. it doesn't ignore inheritance/propagation flags on leaves.
 
# 1.6.0 (1 February 2014)
 
## Bug Fixes
 
### Certificates
 
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) fails when passed a relative path.
 * [Install-Certificate](http://get-carbon.org/help/Install-Certificate.html) fails when passed a relative path.
 
### File System
 
 * [Remove-Junction](http://get-carbon.org/help/Remove-Junction.html) doesn't delete a junction when given a relative path to the junction.
 
### Services
 
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) doesn't properly resolve a service's path.
 
### Shares
 
 * Fixed [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) example to use correct syntax. [#111.](https://bitbucket.org/splatteredbits/carbon/issue/111)
 
## Enhancements
 
### Hosts File
 
 * Created [Remove-HostsEntry](http://get-carbon.org/help/Remove-HostsEntry.html) function for removing hostnames from a hosts file.
 
### IIS
 
 * Created [Join-IisVirtualPath](http://get-carbon.org/help/Join-IisVirtualPath.html) for joining paths used by the IIS APIs.
 * Renamed all IIS `Path` parameters which represented virtual paths to `VirtualPath` (with backwards-compatible aliases):
    * [Disable-IisSecurityAuthentication](http://get-carbon.org/help/Disable-IisSecurityAuthentication.html)
    * [Enable-IisDirectoryBrowsing](http://get-carbon.org/help/Enable-IisDirectoryBrowsing.html)
    * [Enable-IisSecurityAuthentication](http://get-carbon.org/help/Enable-IisSecurityAuthentication.html)
    * [Enable-IisSsl](http://get-carbon.org/help/Enable-IisSsl.html)
    * [Get-IisApplication](http://get-carbon.org/help/Get-IisApplication.html)
    * [Get-IisConfigurationSection](http://get-carbon.org/help/Get-IisConfigurationSection.html)
    * [Get-IisHttpHeader](http://get-carbon.org/help/Get-IisHttpHeader.html)
    * [Get-IisHttpRedirect](http://get-carbon.org/help/Get-IisHttpRedirect.html)
    * [Get-IisMimeMap](http://get-carbon.org/help/Get-IisMimeMap.html)
    * [Get-IisSecurityAuthentication](http://get-carbon.org/help/Get-IisSecurityAuthentication.html)
    * [Set-IisHttpHeader](http://get-carbon.org/help/Set-IisHttpHeader.html)
    * [Set-IisHttpRedirect](http://get-carbon.org/help/Set-IisHttpRedirect.html)
    * [Set-IisWindowsAuthentication](http://get-carbon.org/help/Set-IisWindowsAuthentication.html)
    * [Test-IisConfigurationSection](http://get-carbon.org/help/Test-IisConfigurationSection.html)
    * [Test-IisSecurityAuthentication](http://get-carbon.org/help/Test-IisSecurityAuthentication.html)
 * Renamed [Get-IisWebsite](http://get-carbon.org/help/Get-IisWebsite.html)'s `SiteName` parameter to `Name` (with a backwards-compatible alias).
 * Renamed all IIS `Name` parameters which represented virtual paths to `VirtualPath` (with backwards-compatible aliases):
    * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html)
    * [Install-IisVirtualDirectory](http://get-carbon.org/help/Install-IisVirtualDirectory.html)
 * Renamed all IIS `Path` parameters which represented physical paths to `PhysicalPath` (with backwards-compatible aliases):
    * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html)
    * [Install-IisVirtualDirectory](http://get-carbon.org/help/Install-IisVirtualDirectory.html)
    * [Install-IisWebsite](http://get-carbon.org/help/Install-IisWebsite.html)
 
### .NET
 
 * Created [Test-DotNet](http://get-carbon.org/help/Test-DotNet.html) for testing if v2 or v4 of the .NET framework is installed.
 
### Path
 
 * Created [Get-PathProvider](http://get-carbon.org/help/Get-PathProvider.html) function for getting a path's PowerShell provider.
 
### PowerShell
 
 * Updated [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) to test if the appropriate .NET framework is installed if the user chooses an explicit runtime to use.
 
### Security
 
 * Created [Test-Permission](http://get-carbon.org/help/Test-Permission.html) function for checking if a user/group has a set of permissions and, optionally, a set of inheritance and propagation flags on a file, directory, or registry key.
 * [Test-Permission](http://get-carbon.org/help/Test-Permission.html) now automatically includes the `Synchronize` permission when checking for exact permissions, since this permission is always on and can never be removed from a file/directory.
 
### Services
 
 * [Install-Service](http://get-carbon.org/help/Install-User.html) no longer requires a password, in order to support [managed service accounts and virtual accounts](http://technet.microsoft.com/en-us/library/dd548356.aspx). We have no idea if this works, since we can't test locally. Please let us know if this fix works for you. [#114](https://bitbucket.org/splatteredbits/carbon/issue/114)
 
### Users and Groups
 
 * Updated [Install-User](http://get-carbon.org/help/Install-User.html) to support passwords longer than 14 characters. Thanks to [James Crowley](http://www.jamescrowley.co.uk/) for the fix.
 
### Windows Features
 
 * Marked Assert-WindowsFeatureFunctionsSupported as an internal function. Please don't use. It will be removed from future versions of PowerShell.
 * Updated [Test-WindowsFeature](http://get-carbon.org/help/Invoke-PowerShell.html) to work on Windows 8/2012.
 * Created new `Carbon.Identity` class for representing identities. It also contains a static `FindByName` method which uses The Windows `LookupAccountName` function to find full account names, domains, and sids.
 * Updated [Test-Identity](http://get-carbon.org/help/Test-Identity.html) to use `[Carbon.Identity]::FindByName` to find identities so it no longer throws exceptions when an identity can't be found.
 * Updated [Resolve-IdentityName](http://get-carbon.org/help/Resolve-IdentityName.html) to use `[Carbon.Identity]::FindByName` to find identities so it no longer throws exceptions when an identity can't be found.
 
 
 # 1.5.1 (3 October 2013)
 
## Bug Fixes
 
### IIS
 
 * [Set-IisWebsiteID](http://get-carbon.org/help/Set-IisWebsiteID.html) wasn't consistently starting a website after changing its ID.
 
### Shares
 
 * [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) has an unused variable which uses an undefined variable to create its value. When running in strict mode, PowerShell writes an error about using the undefined variable. Removed the unused variable.
 
 
# 1.5.0 (6 September 2013)
 
## Enhancements
 
### IIS
 
 * [Set-IisWebsiteID](http://get-carbon.org/help/Set-IisWebsiteID.html) now attempts to start a website whose ID has changed, since IIS stops a website whenever its ID changes.
 
### Network
 
 * Added [Get-IPAddress](http://get-carbon.org/help/Get-IPAddress.html) function for getting the IPv4/IPv6 addresses currently in use on the local computer's network interfaces.
 * Added [Test-IPAddress](http://get-carbon.org/help/Test-IPAddress.html) function for testing if an IP address is in use on one the local computer's network interfaces.
 
### Path
 
 * Added [Test-UncPath](http://get-carbon.org/help/Test-UncPath.html) function for testing if a path is a UNC or not.
 
### PowerShell
 
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) now runs script blocks in PowerShell 3 under a v2.0 CLR.
 
### Shares
 
 * [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) now creates the share's directory if it doesn't exist.
 
## Bug Fixes
 
### Certificates
 
 * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html) throws an exception and halts script execution when loading a certificate file with a private key and the user doesn't have permission to write to Windows' MachineKeys directory. It now writes an error instead.
 
### PowerShell
 
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) doesn't run under a v2.0 CLR when using parameters `-Runtime 'v2.0'`.
 
 
# 1.4.0 (10 August 2013)
 
## Enhancements
 
### File System
 
 * Created [Install-Junction](http://get-carbon.org/help/Install-Junction.html) function for creating new and/or updating existing junctions. This is a more idempotent way of creating junctions, as opposed to [New-Junction](http://get-carbon.org/help/New-Junction.html) and [Remove-Junction](http://get-carbon.org/help/Remove-Junction.html) which report errors if a junction already exists or doesn't exist, respectively.
 
### IIS
 
 * Objects returned by [Get-IisWebsite](http://get-carbon.org/help/Get-IisWebsite.html) now have a dynamic `PhysicalPath` script property, so you don't have to traverse down into the default application's default virtual directory object to get it.
 * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html), [Install-IisWebsite](http://get-carbon.org/help/Install-IisWebsite.html), and [Install-IisVirtualDirectory](http://get-carbon.org/help/Install-VirtualDirectory.html) now canonicalize physical paths, i.e. they convert any path with a relative part (e.g. '..') to a full path. It turns out IIS doesn't like paths with relative parts.
 * Created [Get-IisApplication](http://get-carbon.org/help/Get-IisApplication.html) function to get `Microsoft.Web.Administration.Application` objects for all or specific applications under a website.
 * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html) now uses the `Microsoft.Web.Administration` API instead of `appcmd.exe`.
 
### PowerShell
 
 * Added `ExecutionPolicy` parameter to [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) to allow setting a custom exeuction policy when using [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) to run a script.
 
## Bug Fixes
 
### IIS
 
 * [Install-IisApplication](http://get-carbon.org/help/Install-IisApplication.html) not updating/changing physical path on existing application.
 
### .NET
 
 * [Set-DotNetAppSetting](http://get-carbon.org/help/Set-DotNetAppSetting.html) and [Set-DotNetConnectionString](http://get-carbon.org/help/Set-DotNetConnectionString.html) failed if setting .NET configuration under an architecture where the PowerShell execution policy doesn't allow running scripts.
 
 
# 1.3.0 (8 July 2013)
 
## Enhancements
 
### PowerShell
 
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) now supports running an external script.
 * Added `OutputFormat` argument to [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) so your scripts/script blocks can return XML results instead of plain text.
 * Renamed [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html)'s `Args` parameter to `ArgumentList` (with backwards compatibile `Args` alias).
 * Renamed [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html)'s `Command` parameter to `ScriptBlock` (with backwards-compatible `Command` alias).
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) now runs 64-bit PowerShell from 32-bit PowerShell.
 * [Get-PowerShellPath](http://get-carbon.org/help/Invoke-PowerShell.html) now returns path for 64-bit PowerShell when running 32-bit PowerShell.
 
### Text
 
 * Created new [ConvertTo-Base64](http://get-carbon.org/help/ConvertTo-Base64.html) function for encoding strings in base-64.
 * Created new [ConvertFrom-Base64](http://get-carbon.org/help/ConvertFrom-Base64.html) function for decoding base-64 strings.
 
 
## Bug Fixes
 
### .NET
 
 * [Set-DotNetAppSetting](http://get-carbon.org/help/Set-DotNetAppSetting.html) and [Set-DotNetConnectionString](http://get-carbon.org/help/Set-DotNetConnectionString.html) weren't able to set .NET 2.0 app settings and connections string when running under PowerShell 3.
 
 
# 1.2.0 (25 June 2013)
 
## Enhancements
 
### General
 
 * Carbon should now work under PowerShell v3.0!
 
### Certificates
 
 * Added support for IPv6 addresses to [Get-SslCertificateBinding](http://get-carbon.org/help/Get-SslCertificateBinding.html), [Remove-SslCertificateBinding](http://get-carbon.org/help/Remove-SslCertificateBinding.html), and [Set-SslCertificateBinding](http://get-carbon.org/help/Set-SslCertificateBinding.html).
 
### .NET
 
 * Added `ProviderName` parameter to [Set-DotNetConnectionString ](http://get-carbon.org/help/Set-DotNetConnectionString.html) for setting a connection string's `providerName` attribute/value.
 
### File System
 
 * Created [Disable-NtfsCompression](http://get-carbon.org/help/Disable-NtfsCompression.html) function for disabling NTFS compression on files/directories.
 * Created [Enable-NtfsCompression](http://get-carbon.org/help/Enable-NtfsCompression.html) function for enabling NTFS compression on files/directories.
 * Created [Test-NtfsCompression](http://get-carbon.org/help/Test-NtfsCompression.html) function for testing if NTFS compression is enabled on a file/directory.
 
### IIS
 * The [site object](http://msdn.microsoft.com/en-us/library/microsoft.web.administration.site.aspx) returned by [Get-IisWebsite](http://get-carbon.org/help/Get-IisWebsite.html) now as a `CommitChanges` method so you can persist modifications you make to the site.
 * [Get-IisWebsite](http://get-carbon.org/help/Get-IisWebsite.html) now returns all websites if no `SiteName` is given.
 * Created [Set-IisWebsiteID](http://get-carbon.org/help/Set-IisWebsiteID.html) function for explicitly setting a website's ID.
 
### INI
 
 * Created [Remove-IniEntry](http://get-carbon.org/help/Remove-IniEntry.html) function for removing entries/settings from an INI file.
 
### Performance Counters
 
 * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html) now supports installing a base performance counter. Thanks to Philip Teilmeier for the contribution.
 * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html)'s `Description` parameter is now optional.
 
### PowerShell
 
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) now defaults to running under the current CLR, instead of defaulting to a v2.0 CLR. This makes upgrading to PowerShell v3.0 easier.
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) now writes an error and returns if running PowerShell v3.0 and you want to run under a v2.0 CLR. Unfortunately, PowerShell v3.0 requires .NET 4.0, so you can't run anything on an earlier CLR.
 
### Privileges
 
 * [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html) now supports case-insensitive privilege names.
 * Updated [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html) to better handle when passing a privilege name with the wrong case.
 * Updated [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html) documentation to make it clear privilege names are case-sensitive.
 
### XML
 
 * New [Convert-XmlFile](http://get-carbon.org/help/Convert-XmlFile.html), for transforming an XML file with Microsoft's XDT (XML Data Transformation) technology. Thanks to Mark Sargent for the contribution.
 
 
## Bug Fixes
 
### General
 
 * Deleted the obsolete variable `$CarbonImported`. Carbon no longer exports any of its variables.
 
### Certificates
 
 * [Get-SslCertificateBinding](http://get-carbon.org/help/Get-SslCertificateBinding.html) can't parse bindings to IPv6 addresses.
 
### Performance Counters
 
 * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html) couldn't be used to create counters that used/required a base counter. Thanks to Philip Teilmeier for the contribution.
 
 
# 1.1.0 (1 April 2013)
 
## Upgrade Instructions
 
 * On Windows 2008 R2, custom identies that run IIS app pools need the `SeBatchLogonRight`. [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) now grants this privilege on all operating systems. If this won't work in your environment, you can remove these privileges with [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html).
 
## Enhancements
 
### General
 
 * Fixed some typos and ommissions in the v0.5.0.1 and v0.5.0.0 sections of the release notes.
 * Updated `Import-Carbon.ps1` script to import Carbon regardless of the name of the directory Carbon is installed in.
 
### Certificates
 
 * Added `IssuedTo` and `IssuedBy` properties to [X509Certificate2](http://msdn.microsoft.com/en-us/library/ms148409(v=vs.90).aspx) objects. The values match what the Certificates MMC snap-in displays.
 * Added `DisplayName` property to [X509Store](http://msdn.microsoft.com/en-us/library/d228271e(v=vs.90).aspx) objects, to show the names of the stores as they are displayed in the Certificates MMC snap-in.
 
### Computer
 
 * Created [Resolve-NetPath](http://get-carbon.org/help/Resolve-NetPath.html) for getting the path to the Windows `net.exe` command/application. Updated all functions that call `net.exe` to use this function to resolve its path. Thanks to Paul Aage Aasheim for discovering that when running login scripts, `net.exe` isn't in the path.
 
### IIS
 
 * Created [Get-IisHttpHeader](http://get-carbon.org/help/Get-IisHttpHeader.html) for getting the custom HTTP headers for a website or one of its sub-directories.
 * Created [Set-IisHttpHeader](http://get-carbon.org/help/Set-IisHttpHeader.html) for creating/setting a custom HTTP header for a website or one of its sub-directories.
 * Created [Get-IisMimeMap](http://get-carbon.org/help/Get-IisMimeMap.html) for getting the file extension to MIME type mappings for the IIS web server.
 * Created [Remove-IisMimeMap](http://get-carbon.org/help/Remove-IisMimeMap.html) for removing a file extension to MIME type mapping for the IIS web server.
 * Created [Set-IisMimeMap](http://get-carbon.org/help/Set-IisMimeMap.html) for creating/setting a file extension to MIME type mapping for the IIS web server.
 * When creating an app pool that runs under a custom, non-service account, [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) grants that user the `SeBatchLogonRight`.
 * [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) writes an error if its user account doesn't exist (i.e. if the value of the `Username` parameter doesn't exist).
 
### Privileges
 
 * Improved exception handling in [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html) and [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html).
 * [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html) and [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html) now write an error message if an identity doesn't exist.
 
 
## Bug Fixes
 
### Computer
 
 * [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) can't find `net.exe` when running as part of a Windows logon script. Thanks to Paul Aage Aasheim for identifying and reporting this bug. All usages of the `net.exe` application were updated to use the new [Resolve-NetPath](http://get-carbon.org/help/Resolve-NetPath.html) function, which get the path to `net.exe` without assuming it is in the user's `PATH` environment variable.
 
 
### Users and Groups
 
 * [Test-Identity](http://get-carbon.org/help/Test-Identity.html) no longer writes an error if it can't find a fully-qualified local user, e.g. `$env:COMPUTERNAME\Username`.
 
 
# 1.0.0 (6 March 2013)
 
## Upgrade Instructions
 
 * Remove the `Quiet` parameter from calls to the `Import-Carbon.ps1` script.
 * If you're nesting Carbon as a sub-module of another module, ***STOP***. This causes havoc. Create an `Import-*.ps1` script for your module which imports Carbon before importing your own module. Update your scripts to import your module with your fancy new `Import-*.ps1` script. See [Best Practices for Importing PowerShell Modules](http://pshdo.com/archive/2012/6/4/best-practices-for-importing-powershell-modules.html) for details.
 
## Enhancements
 
### General
 
 * The `Import-Carbon.ps1` script no longer checks if Carbon is a sub-module of another module, so the `Quiet` parameter was removed. ***Please don't nest Carbon in your modules!*** It will cause havoc.
 * `Import-Carbon.ps1` will no longer stop execution if an error occurs during an import (i.e. the `$ErrorActionPreference = 'Stop'` line was removed).
 
### IIS
 
 * Added `Test-IisWebsiteExists` alias for [Test-IisWebsite](http://get-carbon.org/help/Test-IisWebsite.html), for backwards-compatibility with earlier releases.
 
### Security
 
 * Added `Unprotect-AclAccessRules` alias for [Protect-Acl](http://get-carbon.org/help/Protect-Acl.html), for backwards-compatibility with earlier releases.
 * Added rename of `Unprotect-AclAccessRules` to [Protect-Acl](http://get-carbon.org/help/Protect-Acl.html) to v0.5.0.0 section of release notes.
 
### Services
 
 * Renamed [Install-Service](http://get-carbon.org/help/Install-Service.html)'s `Dependencies` parameter to `Dependency` (with backwards-compatible alias), to follow PowerShell naming standards.
 
### Users and Groups
 
 * [Install-User](http://get-carbon.org/help/Install-User.html): you can now set a user's full name with the optional `FullName` parameter.
 
## Bug Fixes
 
### Security
 
 * [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html) returns boolean values to the pipeline when clearing access rules.
 
### Service
 
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) fails if `Dependency` parameter doesn't have a value. Sometimes.
 
### Shares
 
 * [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) fails if a principal name contains a space.
 
### Users and Groups
 
 * [Add-GroupMember](http://get-carbon.org/help/Add-GroupMember.html) doesn't handle when the .NET Active Directory throws an exception when adding members to a group, causing script termination.
 
 
# 0.5.0.1 (9 January 2013)
 
## Enhancements
 
### Active Directory
 
 * Renamed `Format-ADSpecialCharacters` to [Format-ADSearchFilterValue](http://get-carbon.org/help/Format-ADSearchFilterValue.html), with backwards-compatible alias.
 
### Certificates
 
 * Renamed `Get-SslCertificateBindings` to [Get-SslCertificateBinding](http://get-carbon.org/help/Get-SslCertificateBinding.html), with backwards-compatible alias.
 * Added `Remove-Certificate` alias for [Uninstall-Certificate](http://get-carbon.org/help/Uninstall-Certificate.html), for backwards-compatibility with earlier releases.
 
### COM
 
 * Renamed `Get-ComPermissions` to [Get-ComPermission](http://get-carbon.org/help/Get-ComPermission.html), with backwards-compatible alias.
 * Renamed `Grant-ComPermissions` to [Grant-ComPermission](http://get-carbon.org/help/Grant-ComPermission.html), with backwards-compatible alias.
 * Renamed `Revoke-ComPermissions` to [Revoke-ComPermission](http://get-carbon.org/help/Revoke-ComPermission.html), with backwards-compatible alias.
 
### Firewall
 
 * Renamed `Get-FirewallRules` to [Get-FirewallRule](http://get-carbon.org/help/Get-FirewallRule.html), with backwards-compatible alias.
 
### IIS
 
 * Renamed `Add-IisServerManagerMembers` to [Add-IisServerManagerMembers](http://get-carbon.org/help/Add-IisServerManagerMembers.html), with backwards-compatible alias.
 * Added `StatusCode` alias for [Set-IisHttpRedirect's](http://get-carbon.org/help/Set-IisHttpRedirect.html) `HttpResponseStatus` parameter, for backwards-compatibility with earlier releases.
 * Added `Test-IisAppPoolExists` alias for [Test-IisAppPool](http://get-carbon.org/help/Test-IisAppPool.html), for backwards-compatibility with earlier releases.
 * Added `Remove-IisWebsite` alias for [Uninstall-IisWebsite](http://get-carbon.org/help/Uninstall-IisWebsite.html), for backwards-compatibility with earlier releases.
 
### Internet Explorer
 
 * Renamed `Enable-IEActivationPermissions` to [Enable-IEActivationPermission](http://get-carbon.org/help/Enable-IEActivationPermission.html), with backwards-compatible alias.
 
### MSMQ
 
 * Renamed `Grant-MsmqMessageQueuePermissions` to [Grant-MsmqMessageQueuePermission](http://get-carbon.org/help/Grant-MsmqMessageQueuePermission.html), with backwards-compatible alias.
 * Added `Remove-MsmqMessageQueue` alias for [Uninstall-MsmqMessageQueue](http://get-carbon.org/help/Uninstall-MsmqMessageQueue.html), for backwards-compatibility with earlier releases.
 
### Path
 
 * Added `ConvertTo-FullPath` alias for [Resolve-FullPath](http://get-carbon.org/help/Resolve-FullPath.html), for backwards-compatibility with earlier releases.
 * Added `Get-PathCanonicalCase` alias for [Resolve-PathCase](http://get-carbon.org/help/Resolve-PathCase.html), for backwards-compatibility with earlier releases.
 
### Performance Counters
 
 * Renamed `Get-PerformanceCounters` to [Get-PerformanceCounter](http://get-carbon.org/help/Get-PerformanceCounter.html), with backwards-compatible alias.
 
### PowerShell
 
 * Renamed `Add-TrustedHosts` to [Add-TrustedHost](http://get-carbon.org/help/Add-TrustedHost.html), with backwards-compatible alias.
 * Renamed `Add-TrustedHost`'s `Entries` parameter to `Entry`, with backwards-compatible alias.
 * Renamed `Clear-TrustedHosts` to [Clear-TrustedHost](http://get-carbon.org/help/Clear-TrustedHost.html), with backwards-compatible alias.
 * Renamed `Complete-Jobs` to [Complete-Job](http://get-carbon.org/help/Complete-Job.html), with backwards-compatible alias.
 * Renamed `Complete-Job`'s `Jobs` parameter to `Job`, with backwards-compatible alias.
 * Renamed `Get-TrustedHosts` to [Get-TrustedHost](http://get-carbon.org/help/Get-TrustedHost.html), with backwards-compatible alias.
 * Renamed `Set-TrustedHosts` to [Set-TrustedHost](http://get-carbon.org/help/Set-TrustedHost.html), with backwards-compatible alias.
 * Renamed `Set-TrustedHost`'s `Entries` parameter to `Entry`, with backwards-compatible alias.
 
### Security
 
 * Renamed `Assert-AdminPrivileges` to [Assert-AdminPrivilege](http://get-carbon.org/help/Assert-AdminPrivilege.html), with backwards-compatible alias.
 * Renamed `ConvertTo-InheritanceFlags` to [ConvertTo-InheritanceFlag](http://get-carbon.org/help/ConvertTo-InheritanceFlag.html), with backwards-compatible alias.
 * Renamed `ConvertTo-InheritanceFlag`'s `ContainerInheritanceFlags` parameter to `ConvertTo-InheritanceFlag`, with backwards-compatible alias.
 * Renamed `ConvertTo-PropagationFlags` to [ConvertTo-PropagationFlag](http://get-carbon.org/help/ConvertTo-PropagationFlag.html), with backwards-compatible alias.
 * Renamed `ConvertTo-PropagationFlag`'s `ContainerInheritanceFlags` parameter to `ConvertTo-InheritanceFlag`, with backwards-compatible alias.
 * Renamed `Get-Permissions` to [Get-Permission](http://get-carbon.org/help/Get-Permission.html), with backwards-compatible alias.
 * Renamed `Grant-Permissions` to [Grant-Permission](http://get-carbon.org/help/Grant-Permission.html), with backwards-compatible alias.
 * Renamed `Grant-Permission`'s `Permissions` parameter to `Permission`, with backwards-compatible alias.
 * Renamed `Test-AdminPrivileges` to [Test-AdminPrivilege](http://get-carbon.org/help/Test-AdminPrivilege.html), with backwards-compatible alias.
 
### Service
 
 * Renamed `Get-ServicePermissions` to [Get-ServicePermission](http://get-carbon.org/help/Get-ServicePermission.html), with backwards-compatible alias.
 * Added `Remove-Service` alias for [Uninstall-Service](http://get-carbon.org/help/Uninstall-Service.html), for backwards-compatibility with earlier releases.
 
### Users and Groups
 
 * Renamed `Add-GroupMembers` to [Add-GroupMember](http://get-carbon.org/help/Add-GroupMember.html), with backwards-compatible alias.
 * Renamed `Add-GroupMember`'s `Members` parameter to `Member`.
 * Added `Remove-User` alias for [Uninstall-User](http://get-carbon.org/help/Uninstall-User.html), for backwards-compatibility with earlier releases.
 
### Windows Features
 
 * Added `Install-WindowsFeatures` alias for [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html), for backwards-compatibility with earlier releases.
 * Added `Features` alias for [Install-WindowsFeature's](http://get-carbon.org/help/Install-WindowsFeature.html) `Name` parameter, for backwards-compatibility with earlier releases.
 * Added `Uninstall-WindowsFeatures` alias for [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html), for backwards-compatibility with earlier releases.
 * Added `Features` alias for [Uninstall-WindowsFeature's](http://get-carbon.org/help/Uninstall-WindowsFeature.html) `Name` parameter, for backwards-compatibility with earlier releases.
 
# 0.5.0.0 (7 January 2013)
 
## Upgrade Instructions
 
This release contains many backwards incompatible changes. We apologize for this inconvenience. We are making these changes so we can get ready for the v1.0 release. One of our goals for v1.0 is to get the functions and their interfaces internally consistent and consistent with PowerShell naming schemes. Once v1.0 is out the door, backwards-incompatible changes will be phased in as much as possible.
 
Take the following steps to get your scripts to work with this release.
 
### Certificates
 
Replaces usages of:
 
 * `Get-SslCertificateBindings` with `Get-SslCertificateBinding`
 * `Get-SslCertificateBinding -IPPort '0.0.0.0:443'` with `Get-SslCertificateBinding`
 * `Get-SslCertificateBinding -IPPort '10.1.1.1:8001` with `Get-SslCertificateBinding -IPAddress '10.1.1.1' -Port 8001`
 * `Test-SslCertificateBinding -IPPort '0.0.0.0:443` with `Test-SslCertificateBinding`
 * `Test-SslCertificateBinding -IPPort '10.1.1.1:8001` with `Test-SslCertificateBinding -IPAddress '10.1.1.1' -Port 8001`
 * `Set-SslCertificateBinding -IPPort '0.0.0.0:443` with `Set-SslCertificateBinding`
 * `Set-SslCertificateBinding -IPort '1.2.3.4:8001' with `Set-SslCertificateBinding -IPAddress '1.2.3.4' -Port 8001
 * `Remove-SslCertificateBinding -IPPort '0.0.0.0:443` with `Remove-SslCertificateBinding`
 * `Remove-SslCertificateBinding -IPPort '10.1.1.1:8001` with `Remove-SslCertificateBinding -IPAddress '10.1.1.1' -Port 8001`
 
### Computer
 
Replace usages of
 
 * `Set-EnvironmentVariable -Scope 'Process'` with `Set-EnvironmentVariable -ForProcess`
 * `Set-EnvironmentVariable -Scope 'User'` with `Set-EnvironmentVariable -ForUser`
 * `Set-EnvironmentVariable -Scope 'ForComputer'` with `Set-EnvironmentVariable -ForComputer`
 * `Remove-EnvironmentVariable -Scope 'Process'` with `Remove-EnvironmentVariable -ForProcess`
 * `Remove-EnvironmentVariable -Scope 'User'` with `Remove-EnvironmentVariable -ForUser`
 * `Remove-EnvironmentVariable -Scope 'ForComputer'` with `Remove-EnvironmentVariable -ForComputer`
 
### Cryptography
 
 * `Protect-String -Scope CurrentUser` with `Protect-String -ForUser`
 * `Protect-String -Scope LocalMachine` with `Protect-String -ForComputer`
 
### IIS
 
 * Renamed the `StatusCode` property on the object returned by [Get-IisHttpRedirect](http://get-carbon.org/help/Get-IisHttpRedirect.html) to `HttpResponseStatus`. Update usages accordingly.
 * The `Bindings` property returned by `Get-IisWebsite` is now a collection of `Microsoft.Web.Administration.Binding` objects. Update usages of `$site.Bindings[$idx].IPAddress` and `$site.Bindings[$idx].Port` to `$site.Bindings[$idx].Endpoint.Address` and `$site.Bindings[$idx].Endpoint.Port`, respectively.
 
Replace usages of:
 
 * `Set-IisAnonymousAuthentication` with `Enable-IisSecurityAuthentication -Anonymous`
 * `Set-IisAnonymousAuthentication -Disabled` with `Disable-IisSecurityAuthentication -Anonymous`
 * `Set-IisBasicAuthentication` with `Enable-IisSecurityAuthentication -Basic`
 * `Set-IisBasicAuthentication -Disabled` with `Disable-IisSecurityAuthentication -Basic`
 * `Set-IisWindowsAuthentication` with `Enable-IisSecurityAuthentication -Windows` and `Set-IisWindowsAuthentication -DisableKernelMode`
 * `Set-IisWindowsAuthentication -UseKernelMode` with `Set-IisWindowsAuthentication`
 * `Set-IisWindowsAuthentication -Disabled` with `Disable-IisSecurityAuthentication -Windows`
 * `Unlock-IisConfigSection -Name <string>` with `Unlock-IisConfigurationSection -SectionPath <string>` (run `appcmd.exe lock config -section:?` for values to the new `SectionPath` parameter)
 * `Unlock-IisBasicAuthentication` with `Unlock-IisConfigurationSection -SectionPath 'system.webServer/security/authentication/basicAuthentication'`
 * `Unlock-IisCgi` with `Unlock-IisConfigurationSection -SectionPath 'system.webServer/cgi'`
 * `Unlock-IisWindowsAuthentication` with `Unlock-IisConfigurationSection -SectionPath 'system.webServer/security/authentication/windowsAuthentication'`
 
 
### INI
 
Replace usages of:
 
 * `Split-Ini -Path <string>` with `Split-Ini -Path <string> -AsHashtable` (hashtable is no longer returned by default)
 * `Split-Ini -Path <string> -PassThru` with `Split-Ini -Path <string>` (per-line objects are now returned by default)
 
 
### Path
 
Replace usages of
 
 * `Get-PathRelativeTo -To <string> -From <string>'` with `Resolve-RelativePath -Path <string> -FromDirectory <string>`
 * `Get-PathRelativeTo -To <string> -From <string> -FromType 'File'` with `Resolve-RelativePath -Path <string> -FromFile <string>`
 
### Performance Counters
 
 * [Get-PerformanceCounters](http://get-carbon.org/help/Get-PerformanceCounters.html) no longer returns an empty list if there are zero counters or a single element list if there is one counter. It now returns `null` and a single object, respectively. Update usages accordingly.
 
### PowerShell
 
 * [Get-TrustedHosts](http://get-carbon.org/help/Get-TrustedHosts.html) no longer returns an empty list if there are no trusted hosts. It now return nothing/`null`. Update usages accordingly.
 
### Security
 
 * [Assert-AdminPrivileges](http://get-carbon.org/help/Assert-AdminPrivileges.html) now returns `True` or `False` if the user doesn't have admin privileges. It also no longer throws an exception, but writes an error. If you want to preserve current behavior where it stops script execution, replace usages with `Assert-AdminPrivileges -ErrorAction Stop`.
 
### Shares
 
Replace usages of:
 
 * `Install-Share -Permissions '"ShareAdmins,FULL"','"ShareWriters,CHANGE"','"ShareReaders,READ"'` with `Install-SmbShare -FullAccess ShareAdmins -ChangeAccess ShareWriters -ReadAccess ShareReaders`.
 
### Windows Features
 
Replace usages of:
 
 * `Test-WindowsFeature` with `Test-WindowsFeature -Installed`
 * `Install-WindowsFeatureIis` with `Install-WindowsFeature -Iis`
 * `Install-WindowsFeatureIis -HttpRedirection` with `Install-WindowsFeature -Iis -IisHttpRedirection`
 * `Install-WindowsFeatureMsmq` with `Install-WindowsFeature -Msmq`
 * `Install-WindowsFeatureMsmq -HttpSupport` with `Install-WindowsFeature -Msmq -MsmqHttpSupport`
 * `Install-WindowsFeatureMsmq -ActiveDirectoryIntegration` with `Install-WindowsFeature -MsmqActiveDirectoryIntegration`
 
## New Features
 
### IIS
 * Created [Get-IisConfigurationSection](http://get-carbon.org/help/Get-IisConfigurationSection.html) function for getting a site's (and optional sub-directory's) [Microsoft.Web.Administration.ConfigurationSection](http://msdn.microsoft.com/en-us/library/microsoft.web.administration.configurationsection(v=vs.90).aspx) objects for an arbitrary IIS configuration section.
 * Created [Get-IisSecurityAuthentication](http://get-carbon.org/help/Get-IisSecurityAuthentication.html) function for getting a site's (and optional sub-directory's) [anonymous, basic, digest, or Windows authentication configuration section](http://msdn.microsoft.com/en-us/library/microsoft.web.administration.configurationsection(v=vs.90).aspx).
 * Created [Test-IisSecurityAuthentication](http://get-carbon.org/help/Test-IisSecurityAuthentication.html) function for testing if anonymous, basic, digest, or Windows authentication is enabled for a website (and optional sub-directory).
 * Created [Get-IisConfigurationSection](http://get-carbon.org/help/Get-IisConfigurationSection.html) function for returning an arbitrary IIS configuration section using the Microsoft.Web.Administration API.
 * Created [Lock-IisConfigurationSection](http://get-carbon.org/help/Lock-IisConfigurationSection.html) function for locking arbitrary global IIS configuration sections.
 * Created [Test-IisConfigurationSection](http://get-carbon.org/help/Test-IisConfigurationSection.html) function for testing if an configuration section exists or is locked or not.
 * Created function [Get-IisAppPool](http://get-carbon.org/help/Get-IisAppPool.html) for getting a `Microsoft.Web.Administration.AppPool` object for an application pool.
 * Created function [Uninstall-IisAppPool](http://get-carbon.org/help/Uninstall-IisAppPool.html) for removing an IIS application pool.
 
### Windows Features
 * Created new [Get-WindowsFeature](http://get-carbon.org/help/Get-WindowsFeature.html) function for getting a list of available Windows features.
 
 
## Bug Fixes
 
### Service
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) not granting default service identity, Network Service, the correct permissions.
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) not correctly resolving local identity account names.
 
 
## Enhancements
 
### Certificates
 * Moved functionality of `Get-SslCertificateBinding` into [Get-SslCertificateBindings](http://get-carbon.org/help/Get-SslCertificateBindings.html). Can now filter by `IPAddress` and/or `Port`.
 * [Get-SslCertificateBindings](http://get-carbon.org/help/Get-SslCertificateBindings.html) now returns `Carbon.Certificates.SslCertificateBinding` objects. All information displayed by the `netsh http show sslcert` command is returned as part of those objects.
 * [Get-SslCertificateBindings](http://get-carbon.org/help/Get-SslCertificateBindings.html) now supports filtering by `IPAddress` and `Port` separately, instead of requiring both. The old `IPPort` parameter is replaced with `IPAddress` and `Port` parameters.
 * [Test-SslCertificateBinding](http://get-carbon.org/help/Test-SslCertificateBinding.html) now supports testig by `IPAddress` and `Port` separately, instead of requiring both. The old `IPPort` parameter is replaced with `IPAddress` and `Port` parameters.
 * Replaced `IPPort` parameter on `Get-SslCertificateBinding` with separate `IPAddress` and `Port` parameters on [Get-SslCertificateBindings](http://get-carbon.org/help/Get-SslCertificateBindings.html). Set `IPAddress` only if you want to bind to a specific IP address (i.e. *not* 0.0.0.0). Set `Port` if *not* binding to port 443.
 * Replaced `IPPort` parameter on [Remove-SslCertificateBinding](http://get-carbon.org/help/Remove-SslCertificateBinding.html) with separate `IPAddress` and `Port` parameters. Set `IPAddress` only if you want to remove a binding for a specific IP address (i.e. *not* 0.0.0.0). Set `Port` if the binding is *not* on port 443.
 * Renamed `Remove-Certificate` to [Uninstall-Certificate](http://get-carbon.org/help/Uninstall-Certificate.html) (added backwards-compatible alias in v0.5.0.1).
 
### Computer
 * Replaced the `Scope` parameter on [Set-EnvironmentVariable](http://get-carbon.org/help/Set-EnvironmentVariable.html) and [Remove-EnvironmentVariable](http://get-carbon.org/help/Remove-EnvironmentVariable.html) with scope-specific `ForProcess`, `ForUser`, and `ForComputer` switches.
 
### Cryptography
 * Replaced [Protect-String](http://get-carbon.org/help/Protect-String.html)'s `Scope` parameteter with the `ForUser` or `ForComputer` scope-specific switches.
 
### Hosts File
 * [Set-HostsEntry](http://get-carbon.org/help/Set-HostsEntry.html) no longer throws an exception if the hosts file contains an invalid line. Instead, a warning is written and the line is commented out.
 
### INI
 * [Split-Ini](http://get-carbon.org/help/Split-Ini.html) now returns strongly-typed `Carbon.Ini.IniNode` objects instead of hashtables.
 * The line numbers returned by [Split-Ini](http://get-carbon.org/help/Split-Ini.html) start at 1 instead of 0.
 * [Split-Ini](http://get-carbon.org/help/Split-Ini.html) now returns name/value objects by default (the `PassThru` switch is no longer needed for this behaviro). This makes it more PowerShell-y. The old behavior of returning a `Hashtable` is available be using the new `AsHashtable` switch.
 
### IIS
 * Replaced `Set-IisAnonymousAuthentication` with [Enable-IisSecurityAuthentication](http://get-carbon.org/help/Enable-IisSecurityAuthentication.html) and [Disable-IisSecurityAuthentication](http://get-carbon.org/help/Disable-IisSecurityAuthentication.html).
 * Replaced `Set-IisBasicAuthentication` with [Enable-IisSecurityAuthentication](http://get-carbon.org/help/Enable-IisSecurityAuthentication.html) and [Disable-IisSecurityAuthentication](http://get-carbon.org/help/Disable-IisSecurityAuthentication.html).
 * Moved code to enable/disable Windows authentication from [Set-IisWindowsAuthentication](http://get-carbon.org/help/Set-IisWindowsAuthentication.html) to [Enable-IisSecurityAuthentication](http://get-carbon.org/help/Enable-IisSecurityAuthentication.html) and [Disable-IisSecurityAuthentication](http://get-carbon.org/help/Disable-IisSecurityAuthentication.html).
 * Switched the default behavior of [Set-IisWindowsAuthentication](http://get-carbon.org/help/Set-IisWindowsAuthentication.html) to enable kernel mode. To disable kernel mode, use the `DisableKernelMode` switch.
 * Renamed `Unlock-IisConfigSection` to [Unlock-IisConfigurationSection](http://get-carbon.org/help/Unlock-IisConfigurationSection.html).
 * Removed [Unlock-IisConfigurationSection](http://get-carbon.org/help/Unlock-IisConfigurationSection.html)'s `Name` parameter and replaced it with `SectionPath`, which takes a list of full path to the configuration section(s) to unlock.
 * Removed `Unlock-IisBasicAuthentication` in favor of `Unlock-IisConfigurationSection -SectionPath 'system.webServer/security/authentication/basicAuthentication'`.
 * Removed `Unlock-IisCgi` in favor of `Unlock-IisConfigurationSection -SectionPath 'system.webServer/cgi'`.
 * Removed `Unlock-IisWindowsAuthentication` in favor of `Unlock-IisConfigurationSection -SectionPath 'system.webServer/security/authentication/windowsAuthentication'`.
 * Renamed `Remove-Service` to [Uninstall-Service](http://get-carbon.org/help/Uninstall-Service.html) (added backwards-compatible alias in v0.5.0.1).
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) writes errors instead of throwing exceptions.
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) grants `ReadAndExecute` file system permissions on the service executable to the service identity instead of `FullControl`.
 * Improved [Install-Service](http://get-carbon.org/help/Install-Service.html)'s `WhatIf` support.
 * Renamed `Test-IisAppPoolExists` to [Test-IisAppPool](http://get-carbon.org/help/Uninstall-Service.html) (added backwards-compatible alias in v0.5.0.1).
 * Renamed `Remove-IisWebsite` with [Uninstall-IisWebsite](http://get-carbon.org/help/Uninstall-IisWebsite.html) (added backwards-compatible alias in v0.5.0.1).
 * [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) now always sets the application pool to run as the system's default application pool identity if the `ServiceAccount` parameter isn't given.
 * [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) now starts an IIS application pool if it is stoppped.
 * [Get-IisHttpRedirect](http://get-carbon.org/help/Get-IisHttpRedirect.html) now returns a `Carbon.Iis.HttpRedirectConfigurationSection` object. The `StatusCode` property on the old object is now named `HttpResponseStatus`.
 * Renamed the `StatusCode` parameter on [Set-IisHttpRedirect](http://get-carbon.org/help/Set-IisHttpRedirect.html) to `HttpResponseStatus` (added backwards-compatible alias in v0.5.0.1).
 * [Get-IisWebsite](http://get-carbon.org/help/Get-IisWebsite.html) now returns a `Microsoft.Web.Administration.Site` object.
 
### MSMQ
 * Renamed `Remove-MsmqMessageQueue` to [Uninstall-MsmqMessageQueue](http://get-carbon.org/help/Uninstall-MsmqMessageQueue.html) (added backwards compatible alias in v0.5.0.1).
 
### Path
 * Renamed `Get-PathRelativeTo` to [Resolve-RelativePath](http://get-carbon.org/help/Resolve-RelativePath.html). Renamed its `To` parameter to `Path`, and moved it to position 0. Replaced/combined the `From` and `FromType` parameters with `FromDirectory` and `FromFile` parameters.
 * Renamed `ConvertTo-FullPath` to [Resolve-FullPath](http://get-carbon.org/help/Resolve-FullPath.html) (added backwards-compatible alias in v0.5.0.1). Added support for converting unrooted paths using the current location.
 * Renamed `Get-PathCanonicalCase` with [Resolve-PathCase](http://get-carbon.org/help/Resolve-PathCase.html) (added backwards-compatible alias in v0.5.0.1). Added support for piping in `Get-Item` and `Get-ChildItem` output, e.g. `Get-Item C:\WINDOWS | Resolve-PathCase` returns C:\Windows.
 
### Performance Counters
 * [Get-PerformanceCounters](http://get-carbon.org/help/Get-PerformanceCounters.html) now returns nothing/`null` or a single object instead of an empty/single element array when there are no or one performance counters.
 * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html) no longer re-installs a counter if a counter with its name, description, and type already exist.
 
### PowerShell
 * [Get-TrustedHosts](http://get-carbon.org/help/Get-TrustedHosts.html) now returns nothing/`null` if there are no trusted hosts. (It used to return an empty array.)
 
### Security
 * [Assert-AdminPrivileges](http://get-carbon.org/help/Assert-AdminPrivileges.html) no longer throws an exception if the user doesn't have administrative privileges. Instead, it writes an error and returns `False`. It returns `True` if the user has privileges.
 * Renamed `Unprotect-AclAccessRules` to [Protect-Acl](http://get-carbon.org/help/Protect-Acl.html) (added backwards-compatible alias in v1.0.0).
 
### Shares
 * Replaced the `Permissions` parameter on [Install-SmbShare](http://get-carbon.org/help/Install-SmbShare.html) with `FullAccess`, `ChangeAccess`, and `ReadAccess` parameters. Previously, to set share permissions, you passed in specially-formatted values to the `Permission` parameter, e.g. `"MyGroup,FULL","MyOtherGroup,READ"`. Now, just pass a list of identity name(s) to the `FullAccess`, `ChangeAccess`, or `ReadAccess` parameters to grant those identies full, change, or read access, e.g. `-FullAccess MyGroup -ReadAccess MyOtherGroup`.
 
### Users and Groups
 * Renamed `Remove-User` to [Uninstall-User](http://get-carbon.org/help/Uninstall-User.html) (added backwards-compatible alias in v0.5.0.1).
 
### Windows Features
 * [Test-WindowsFeature](http://get-carbon.org/help/Test-WindowsFeature.html) now tests if a Windows feature exists, instead of if it is installed. Added an `Installed` switch to detect if a feature exists *and* if it is installed.
 * Renamed `Install-WindowsFeatures` to [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html) (added backwards-compatible alias in v0.5.0.1).
 * Renamed [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html)'s `Features` parameter to `Name` (added backwards-compatible alias in v0.5.0.1).
 * Removed `Install-WindowsFeatureIis` and replaced with `Iis` and `IisHttpRedirection` switches on [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html).
 * Removed `Install-WindowsFeatureMsmq` and replaced with `Msmq`, `MsmqHttpSupport`, and `MsmqActiveDirectoryIntegration` switches on [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html).
 * Renamed `Uninstall-WindowsFeatures` to [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html) (added backwards-compatible alias in v0.5.0.1).
 * Renamed [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html)'s `Features` parameter to `Name` (added backwards-compatible alias in v0.5.0.1).
 * Added `Iis`, `IisHttpRedirection`, `Msmq`, `MsmqHttpSupport`, and `HttpActiveDirectoryIntegration` switches to [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html).
 * [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html), [Test-WindowsFeature](http://get-carbon.org/help/Test-WindowsFeature.html), and [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html) are now available even if the current operating system doesn't support managing Windows features. They don't do anything in those situations, but they exist.
 * [Install-WindowsFeature](http://get-carbon.org/help/Install-WindowsFeature.html), [Test-WindowsFeature](http://get-carbon.org/help/Test-WindowsFeature.html), and [Uninstall-WindowsFeature](http://get-carbon.org/help/Uninstall-WindowsFeature.html) are not available if the PowerShell v3.0 server manager cmdlets exists (on Windows 8/2012).
 
### Miscellaneous
 * Replaced all instances where functions were throwing exceptions with `Write-Error`.
 * The Carbon assembly is now versioned and signed.
 
 
# 0.4.0.1 (18 December 2012)
 
## Bug fixes
 * [Enable-IisSsl](http://get-carbon.org/help/Reset-MsmqQueueManagerID.html) not setting SSL flags correctly when requiring client certificates.
 
# 0.4.0.0 (17 November 2012)
 
## Upgrade Instructions
 * If you install a manual or disabled Windows service with [Install-Service](http://get-carbon.org/help/Install-Service.html), you now have to call `Start-Service` yourself. `Install-Service` only starts services whose startup type is set to `Automatic` (which is the default).
 * We've stopped distributing Microsoft's `subinacl.exe` program. We didn't have permission to distribute. Plus its no longer supported. If any of your scripts used `Invoke-SubInAcl`, you'll want to [download `subinacl.exe` yourself](http://www.microsoft.com/en-us/download/details.aspx?id=23510) and copy `Invoke-SubInAcl` before upgrading (you can find it in the Carbon directory in the `Services.ps1` file.
 * If you're using `Grant-Permission` without named parameters, the `Path` parameter moved from position 3 to position 1. Re-order your parameters accordingly.
 * Rename usages of `Set-IisDirectoryBrowsing` to `Enable-IisDirectoryBrowsing`. If you use named parameters, rename its `Directory` paremter to `Path`.
 * Replace usages of `Set-HgrcDefaultPushUrl` with `Set-IniEntry` instead, e.g. `Set-IniEntry -Path 'Path\to\repo\.hg\hgrc' -Section paths -Name 'default.push' -Value 'DefaultPushUrl'`
 * Rename usages of `Get-FullPath` with `ConvertTo-FullPath`.
 
## Enhancements
 
 * Created [Get-Privileges](http://get-carbon.org/help/Get-Privileges.html), [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html), [Revoke-Privilege](http://get-carbon.org/help/Revoke-Privilege.html), and [Test-Privilege](http://get-carbon.org/help/Test-Privilege.html) for managing an identity's security operation privileges.
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) now uses [Grant-Privilege](http://get-carbon.org/help/Grant-Privilege.html) to grant custom service identities the `SeServiceLogonRight` privilege. This replaces usage of Microsoft's legacy [ntrights.exe](http://support.microsoft.com/kb/315276), which we probably didn't have permission to distribute.
 * Created [Get-ServicePermissions](http://get-carbon.org/help/Get-ServicePermissions.html) function for getting the permissions for a service, i.e. what users can control a service.
 * Created [Assert-Service](http://get-carbon.org/help/Assert-Service.html) function to write an error if a service doesn't exist.
 * Created [Get-ServiceAcl](http://get-carbon.org/help/Get-ServiceAcl.html) function to get the discretionary access control list (DACL) for a service.
 * Created [Get-ServiceSecurityDescriptor](http://get-carbon.org/help/Get-ServiceSecurityDescriptor.html) function to get the raw security descriptor for a service.
 * Created [Grant-ServicePermission](http://get-carbon.org/help/Grant-ServicePermission.html) function to grant service control permissions to an identity.
 * Created [Revoke-ServicePermission](http://get-carbon.org/help/Revoke-ServicePermission.html) function to revoke all of an identity's permissioms to control a service.
 * Created [Set-ServiceAcl](http://get-carbon.org/help/Set-ServiceAcl.html) function to set a service's discretionary access control list (DACL).
 * Created [Test-Service](http://get-carbon.org/help/Test-Service.html) function to check if a service exists *without* writing an error.
 * Removed `Invoke-SubInAcl` function and the `subinacl.exe` program. Use the [Grant-ServicePermission](http://get-carbon.org/help/Grant-ServicePermission.html) and [Revoke-ServicePermission](http://get-carbon.org/help/Revoke-ServicePermission.html) functions instead. If you still need `subinacl.exe`, please [download it from Microsoft](http://www.microsoft.com/en-us/download/details.aspx?id=23510).
 * [Grant-Permissions](http://get-carbon.org/help/Grant-Permissions.html) now supports controlling inheritance and propagation flags via the `ApplyTo` parameter, which should be a value of the new `Carbon.Security.ContainerInheritanceFlags` enumeration, which encapsualtes all the valid combinations of inheritance/propagation flags. See the help for `Grant-Permissions` for more information. Thanks to Jonathan Valdez for the feature request and initial code.
 * Created [ConvertTo-InheritanceFlags](http://get-carbon.org/help/ConvertTo-InheritanceFlags.html) function for converting a `Carbon.Security.ContainerInheritanceFlags` to the necessary/applicable `System.Security.AccessControl.InheritanceFlags`.
 * Created [ConvertTo-PropagationFlags](http://get-carbon.org/help/ConvertTo-PropagationFlags.html) function for converting a `Carbon.Security.ContainerInheritanceFlags` to the necessary/applicable `System.Security.AccessControl.PropagationFlags`.
 * Created [Get-Permissions](http://get-carbon.org/help/Get-Permissions.html) function for getting the non-inherited permissions on a file, directory, registry key, or registry value with the ability to return a specific identity's permissions and/or inherited permissions.
 * Renamed `Set-IisDirectoryBrowsing` to [Enable-IisDirectoryBrowsing](http://get-carbon.org/help/Enable-IisDirectoryBrowsing.html) and renamed its `Directory` parameter to `Path`.
 * Removed `Set-HgrcDefaultPushUrl`. Use [Set-IniEntry](http://get-carbon.org/help/Enable-IisDirectoryBrowsing.html) instead.
 * Renamed `Test-IisWebsiteExists` to [Test-IisWebsite](http://get-carbon.org/help/Test-IisWebsite.html) to adhere to PowerShell naming conventions (added backwards-compatible alias in v1.0.0).
 * Renamed `Get-FullPath` to [ConvertTo-FullPath](http://get-carbon.org/help/ConvertTo-FullPath.html) to adhere to PowerShell naming conventions.
 
## Bug fixes
 * [Install-Service](http://get-carbon.org/help/Install-Service.html) no longer tries to start a service if its `StartupType` is set to `Manual` or `Disabled`.
 * `Path` is now the first parameter to [Grant-Permissions](http://get-carbon.org/help/Grant-Permissions.html) (it was the third) to match PowerShell standards/patterns.
 * [Find-ADUser](http://get-carbon.org/help/Find-ADUser.html) writes an error and returns null instead of throwing an exception.
 
 
# 0.3.1.0 (29 October 2012)
 
## Enhancements
 * Improved [Disable-IEEnhancedSecurityConfiguration](http://get-carbon.org/help/Disable-IEEnhancedSecurityConfiguration.html) and [Enable-IEActivationPermissions](http://get-carbon.org/help/Enable-IEActivationPermissions.html) for enabling Internet Explorer to run headless by non-priveleged users.
 * Changed the way [Invoke-WindowsInstaller](http://get-carbon.org/help/Invoke-WindowsInstaller.html) waits for MSI to finish installing: instead of searching for any MSI process, it now searches for an MSI process that is a child of the current PowerShell process.
 * Simplified how [Add-GroupMembers](http://get-carbon.org/help/Add-GroupMembers.html) adds group members.
 * The version number in the module manifest now gets updated correctly for each release. You should now be able to tell what version you're running by looking in `Carbon\Carbon.psd1`, or, if Carbon is imported in your console, running `Get-Module Carbon | Select-Object Version`.
 * Created [Get-ComPermissions](http://get-carbon.org/help/Get-ComPermissions.html) function for getting COM Access or Launch and Activation Permissions. These are the permissions you see in Component Services (i.e. dcomcnfg) when you right-click `My Computer`, select `Properties`, click the `COM Security` tab then click the `Edit Default..` or `Edit Limits...` buttons under **Access Permissions** or **Launch and Activation Permissions**, respectively.
 * Created [Grant-ComPermissions](http://get-carbon.org/help/Grant-ComPermissions.html) for granting COM Access and/or Launch and Activation permissions.
 * Created [Revoke-ComPermissions](http://get-carbon.org/help/Revoke-ComPermissions.html) for revoking COM Access and/or Launch and ACtivation permissions.
 * Created [Test-Identity](http://get-carbon.org/help/Test-Identity.html) function for testing if user or group exists on the local computer or in a domain.
 * Created [Resolve-IdentityName](http://get-carbon.org/help/Resolve-IdentityName.html) function for determinig a user/group's canonical name. For example, it converts `Administrators` into `BUILTIN\Administrators`.
 * Improved the way the Windows Features functions detect the best way to manage Windows features. The old way would write an error to the error stream, which bubbled up at weird times and made diagnosing real errors harder.
 * Added a `Quiet` parameter to [Set-RegistryKeyValue](http://get-carbon.org/help/Set-RegistryKeyValue.html) so that `Write-Host` output is muffled.
 * Created [Reset-MsmqQueueManagerID](http://get-carbon.org/help/Reset-MsmqQueueManagerID.html) function, which resets MSMQ's Queue Manager ID.
 
# 0.3.0 (28 September 2012)
 
## Upgrade Instructions
 
This release contains backwards-**incompatible** changes to the following functions:
 
 * [Set-IisSslFlags](http://get-carbon.org/help/Set-IisSslFlags.html)
 * [Set-TrustedHosts](http://get-carbon.org/help/Set-TrustedHosts.html)
 * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html)
 
### Set-IisSslFlags
 
This function was renamed to `Enable-IisSsl`. Its `Enable128BitSsl` parameter was renamed to `Require128BitSsl`.
 
Configuring client certificates is now a little stricter/clearer. You can no longer specify both `AcceptClientCertificates` and `RequireClientCertificates`. Also, if you specify `RequireClientCertificates`, you must now also supply the `RequireSsl` switch (before, setting the `RequireClientCertificates` switch implicitly set the `RequireSsl` switch).
 
### Set-TrustedHosts
 
Make sure you're not calling `Set-TrustedHosts` with an empty array/value for the `Entries` parameter. The function now throw an error in that situation. If you need to clear the list of trusted hosts, use `Clear-TrustedHosts`.
 
### Invoke-PowerShell
 
If you call `Invoke-PowerShell` without the `x86` switch and PowerShell is 32-bit, you'll get an error. Under Windows x64, 32-bit PowerShell can't start the 64-bit instance because Windows redirects all access from C:\Windows\system32 to C:\Windows\SysWOW64. If anyone knows how to get around this, let me know!
 
## Enhancements
 * Renamed `Set-IisSslFlags` to `Enable-IisSsl` to better reflect what it does. Also, created parameter sets around client certificate settings so you can't configure them incorrectly. ([Fixes #25: Set-IisSslFlags: Create parameter sets to accurately reflect what flags are allowed to be set simultaneously.](https://bitbucket.org/splatteredbits/carbon/issue/25/set-iissslflags-create-parameter-sets-to))
 * Added `WhatIf` support to [Install-MsmqMessageQueue](http://get-carbon.org/help/Install-MsmqMessageQueue.html).
 * Created new [Clear-TrustedHosts](http://get-carbon.org/help/Clear-TrustedHosts.html) for clearing PowerShell's trusted hosts list.
 
## Bug Fixes
 * Rename [Enable-IisSsl/Set-IisSslFlags's](http://get-carbon.org/help/Set-IisSslFlags.html) `Enable128BitSsl` parameter to `Require128BitSsl`] ([Fix #24 Set-IisSslFlags: Rename the Enable128BitSsl parameter to Require128BitSsl](https://bitbucket.org/splatteredbits/carbon/issue/24/set-iissslflags-rename-the-enable128bitssl)).
 * [Fix issue #19](https://bitbucket.org/splatteredbits/carbon/issue/19/install-iisapppool-doesnt-change-an): [Install-IisAppPool](http://get-carbon.org/help/Install-IisAppPool.html) doesn't change an existing 32-bit app pool to be a 64-bit app pool.
 * [Fix issue #33](https://bitbucket.org/splatteredbits/carbon/issue/33/install-msmqmessagequeue-can-wait-forever): [Install-MsmqMessageQueue](http://get-carbon.org/help/Install-MsmqMessageQueue.html): Can wait forever for a queue to get created. It now waits 10 seconds.
 * [Fix issue #36](https://bitbucket.org/splatteredbits/carbon/issue/36/get-powershellpath-returns-the-wrong-path): [Get-PowerShellPath](http://get-carbon.org/help/Get-PowershellPath.html) returns the wrong path when running x86 PowerShell on x64 computers.
 * [Fix issue #37](https://bitbucket.org/splatteredbits/carbon/issue/37/invoke-powershell-should-write-an-error): [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html) should write an error when running as x86 on Windows x64 without the x86 flag (i.e. 32-bit PowerShell can't launch a 64-bit PowerShell, so throw an error in that situation).
 * [Fix issue #38](https://bitbucket.org/splatteredbits/carbon/issue/38/set-trustedhosts-passing-an-empty-value): [Set-TrustedHosts](http://get-carbon.org/help/Set-TrustedHosts.html): passing an empty value for the Entries parameter clears the hosts list. The `Entries` parameter is now required. To clear the trusted hosts list, use `Clear-TrustedHosts`.
 
 
# 0.2.7 (3 September 2012)
 
## Enhancements
 * New functions for working with the registry:
  * [Get-RegistryKeyValue](http://get-carbon.org/help/Get-RegistryKeyValue.html): Get a value from a registry key.
  * [Install-RegistryKey](http://get-carbon.org/help/Install-RegistryKey.html): Create a new registry key.
  * [Remove-RegistryKeyValue](http://get-carbon.org/help/Remove-RegistryKeyValue.html): Remove a value from a registry key.
  * [Set-RegistryKeyValue](http://get-carbon.org/help/Set-RegistryKeyValue.html): Set/create a value in a registry key.
  * [Test-RegistryKeyValue](http://get-carbon.org/help/Test-RegistryKeyValue.html): Test if a value exists in a registry key.
 * [Unprotect-AclAccessRules](http://get-carbon.org/help/Unprotect-AclAccessRules.html): Turns off inherited access rules on an item in the file system or registry.
 * Added a `Clear` parameter to the [Grant-Permissions](http://get-carbon.org/help/Grant-Permissions.html) function for clearing any non-inherited permissions on a file system/registry item.
 
# 0.2.6 (30 June 2012)
 
## Enhancements
 * Improved documentation for:
  * [Grant-ServiceControlPermission](http://get-carbon.org/help/Grant-ServiceControlPermission.html)
  * [Install-Service](http://get-carbon.org/help/Install-Service.html)
  * [Invoke-SubInAcl](http://get-carbon.org/help/Invoke-SubInAcl.html)
  * [Remove-Service](http://get-carbon.org/help/Remove-Service.html)
  * [Restart-RemoteService](http://get-carbon.org/help/Restart-RemoteService.html)
  * [Install-Share](http://get-carbon.org/help/Install-Share.html)
  * [Add-GroupMembers](http://get-carbon.org/help/Add-GroupMembers.html)
  * [Get-WmiLocalUserAccount](http://get-carbon.org/help/Get-WmiLocalUserAccount.html)
  * [Install-Group](http://get-carbon.org/help/Install-Group.html)
  * [Install-User](http://get-carbon.org/help/Install-User.html)
  * [Remove-User](http://get-carbon.org/help/Remove-User.html)
  * [Test-User](http://get-carbon.org/help/Test-User.html)
  * [Install-WindowsFeatureIis](http://get-carbon.org/help/Install-WindowsFeatureIis.html)
  * [Install-WindowsFeatureMsmq](http://get-carbon.org/help/Install-WindowsFeatureMsmq.html)
  * [Install-WindowsFeatures](http://get-carbon.org/help/Install-WindowsFeatures.html)
  * [Test-WindowsFeature](http://get-carbon.org/help/Test-WindowsFeature.html)
  * [Uninstall-WindowsFeatures](http://get-carbon.org/help/Uninstall-WindowsFeatures.html)
  * [Assert-FirewallConfigurable](http://get-carbon.org/help/Assert-FirewallConfigurable.html)
  * [Disable-FirewallStatefulFtp](http://get-carbon.org/help/Disable-FirewallStatefulFtp.html)
  * [Enable-FirewallStatefulFtp](http://get-carbon.org/help/Enable-FirewallStatefulFtp.html)
  * [Get-FirewallRules](http://get-carbon.org/help/Get-FirewallRules.html)
  * [Test-FirewallStatefulFtp](http://get-carbon.org/help/Test-FirewallStatefulFtp.html)
  * [Find-ADUser](http://get-carbon.org/help/Find-ADUser.html)
  * [Format-ADSpecialCharacters](http://get-carbon.org/help/Format-ADSpecialCharacters.html)
  * [Get-Certificate](http://get-carbon.org/help/Get-Certificate.html)
  * [Get-CertificateStore](http://get-carbon.org/help/Get-CertificateStore.html)
  * [Set-HgrcDefaultPushUrl](http://get-carbon.org/help/Set-HgrcDefaultPushUrl.html)
 * Help files and example scripts now included in Carbon download package.
 * Added test to help ensure all functions have proper documentation.
 
## Bug fixes
 * [Install-IisWebsite](http://get-carbon.org/help/Install-IisWebsite.html) now validates website bindings
 
# 0.2.5 (29 June 2012)
 
## Enhancements
 * Improved documentation for:
  * [Test-IisAppPool](http://get-carbon.org/help/Test-IisAppPool.html)
  * [Test-IisWebsiteExists](http://get-carbon.org/help/Test-IisWebsiteExists.html)
  * [Unlock-IisBasicAuthentication](http://get-carbon.org/help/Unlock-IisBasicAuthentication.html)
  * [Unlock-IisCgi](http://get-carbon.org/help/Unlock-IisCgi.html)
  * [Unlock-IisConfigSection](http://get-carbon.org/help/Unlock-IisConfigSection.html)
  * Import-Carbon.ps1
  * [Set-IniEntry](http://get-carbon.org/help/Set-IniEntry.html)
  * [Split-Ini](http://get-carbon.org/help/Split-Ini.html)
  * [Set-HgrcDefaultPushUrl](http://get-carbon.org/help/Set-HgrcDefaultPushUrl.html)
  * [Get-MsmqMessageQueue](http://get-carbon.org/help/Get-MsmqMessageQueue.html)
  * [Get-MsmqMessageQueuePath](http://get-carbon.org/help/Get-MsmqMessageQueuePath.html)
  * [Grant-MsmqMessageQueuePermissions](http://get-carbon.org/help/Grant-MsmqMessageQueuePermissions.html)
  * [Install-Msmq](http://get-carbon.org/help/Install-Msmq.html)
  * [Install-MsmqMessageQueue](http://get-carbon.org/help/Install-MsmqMessageQueue.html)
  * [Remove-MsmqMessageQueue](http://get-carbon.org/help/Remove-MsmqMessageQueue.html)
  * [Test-MsmqMessageQueue](http://get-carbon.org/help/Test-MsmqMessageQueue.html)
  * [Get-PerformanceCounters](http://get-carbon.org/help/Get-PerformanceCounters.html)
  * [Install-PerformanceCounter](http://get-carbon.org/help/Install-PerformanceCounter.html)
  * [Test-PerformanceCounter](http://get-carbon.org/help/Test-PerformanceCounter.html)
  * [Test-PerformanceCounterCategory](http://get-carbon.org/help/Test-PerformanceCounterCategory.html)
  * [Uninstall-PerformanceCounterCategory](http://get-carbon.org/help/Uninstall-PerformanceCounterCategory.html)
  * [Complete-Jobs](http://get-carbon.org/help/Complete-Jobs.html)
  * [Get-PowershellPath](http://get-carbon.org/help/Get-PowershellPath.html)
  * [Invoke-PowerShell](http://get-carbon.org/help/Invoke-PowerShell.html)
  * [Test-PowerShellIs32Bit](http://get-carbon.org/help/Test-PowerShellIs32Bit.html)
  * [Test-PowerShellIs64Bit](http://get-carbon.org/help/Test-PowerShellIs64Bit.html)
  * [Add-TrustedHosts](http://get-carbon.org/help/Add-TrustedHosts.html)
  * [Get-TrustedHosts](http://get-carbon.org/help/Get-TrustedHosts.html)
  * [Set-TrustedHosts](http://get-carbon.org/help/Set-TrustedHosts.html)
  * [Assert-AdminPrivileges](http://get-carbon.org/help/Assert-AdminPrivileges.html)
  * [Convert-SecureStringToString](http://get-carbon.org/help/Convert-SecureStringToString.html)
  * [Grant-Permissions](http://get-carbon.org/help/Grant-Permissions.html)
  * [New-Credential](http://get-carbon.org/help/New-Credential.html)
  * [Test-AdminPrivileges](http://get-carbon.org/help/Test-AdminPrivileges.html)
* Improved whitespace in HTML documentation code samples.
 
 
# 0.2.4 (28 June 2012)
 
## Enhancements
 * Improved documentation for:
  * Get-PathCanonicalCase
  * Get-PathRelativeTo
  * New-Junction
  * New-TempDir
  * Remove-Junction
  * Test-PathIsJunction
  * Reset-HostsFile
  * Set-HostsEntry
  * Add-IisDefaultDocument
  * Get-IisHttpRedirect
  * Get-IisVersion
  * Get-IisWebsite
  * Install-IisApplication
  * Install-IisAppPool
  * Install-IisVirtualDirectory
  * Install-IisWebsite
  * Invoke-AppCmd
  * Remove-IisWebsite
  * Set-IisAnonymousAuthentication
  * Set-IisBasicAuthentication
  * Set-IisDirectoryBrowsing
  * Set-IisHttpRedirect
  * Set-IisSslFlags
  * Set-IisWebsiteSslCertifiate
  * Set-IisWindowsAuthentication
 
# 0.2.3 (27 June 2012)
 
## Enhancements
 * Improved documentation for:
  * Disable-IEEnhancedSecurityConfiguration
  * Enable-IEActivationPermissions
  * Get-FullPath
  * Invoke-WindowsInstaller
  * Protect-String
  * Remove-EnvironmentVariable
  * Set-DotNetAppSetting
  * Set-DotNetConnectionString
  * Set-EnvironmentVariable
  * Test-OSIs32Bit
  * Test-OSIs64Bit
  * Unprotect-String
 
## Bug fixes
 * Invoke-WindowsInstaller doesn't validate that installer path ends in '.msi'.
 * Invoke-WindowsInstaller not showing correct exit code when installation fails.
 
# 0.2.2 (19 June 2012)
 
## Enhancements
 * Created Import-Carbon script to help users properly import Carbon.
 
## Bug fixes
 * Add-GroupMembers fails to add Administrators and ANONYMOUS LOGON built-in accounts.
 * Add-GroupMembers fails when adding built-in accounts multiple times.
 * Add-GroupMembers fails to add domain user to a local group.
 
# 0.2.1 (28 April 2012)
 * Added IsJunction property to DirectoryInfo objects. Returns true if a directory is a junction/reparse point.
 * Created a Carbon assembly for compiled code. Moved P/Invoke functions from FileSystem.ps1 into assembly. This is a backwards compatible change.
 * Created a Carbon.IO.JunctionPoint helper class for creating/removing/getting junction/reparse points. Updated New-Junction and Remove-Junction to use the new helper class.
 * Added TargetPath property to DirectoryInfo objects. If the directory is a junction/reparse points, returns the path to the junction's target. Otherwise, $null.
 
# 0.2.0 (4 April 2012)
 
## Enhancements
  * fix issue #3: Added -Runtime switch to Invoke-PowerShell function for running PowerShell under .NET 2.0 or 4.0. Valid values are 'v2.0' (for .NET 2) and 'v4.0' (for .NET 4).
  * **BREAKING CHANGE:** Added -Clr2 and -Clr4 switches to Set-DotNetAppSetting and Set-DotNetConnectionString functions for modifying the .NET 2 and/or 4 machine.config files. One or both of these parameters is required.
 
## Bug fixes
  * Improved documentation for Get-ADDomainController, Get-ADUser, Format-ADSpecialCharacters, Get-Certificate, Invoke-PowerShell, Set-DotNetAppSetting, and Set-DotNetConnectionString functions.
  * fix issue #2: Get-PowerShellPath Returns Wrong Value on x86 Systems
 
 
# 0.1.0 (2 April 2012):
 * First packaged release.