Carbon 2.1.0

Carbon is a PowerShell module for automating the configuration Windows 7, 8, 2008, and 2012 and automation the installation and configuration of Windows applications, websites, and services. It can configure and manage:

* Local users and groups
* IIS websites, virtual directories, and applications
* File system, registry, and certificate permissions
* Certificates
* Privileges
* Services
* Encryption
* Junctions
* Hosts file
* INI files
* Performance counters
* Shares
* .NET connection strings and app settings
* And much more!

All functions are idempotent: when run multiple times with the same arguments, your system will be in the same state without failing or producing errors.

There is a newer version of this package available.
See the version list below for details.
Install-Package Carbon -Version 2.1.0
dotnet add package Carbon --version 2.1.0
<PackageReference Include="Carbon" Version="2.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Carbon --version 2.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

## New Functions

* `Get-HttpUrlAcl`: uses Windows API to return HTTP URL ACLs; replaces the `netsh http show urlacl` command.
* `Grant-HttpUrlPermission`: uses Windows API to grant listen/delegate permissions on HTTP URLs; replaces the `netsh http add urlacl` command.
* `Revoke-HttpUrlPermission`: uses Windows API to revoke all a user or group's permissions on HTTP URLs; replaces the `netsh http delete urlacl` command.
* `Install-Directory`: creates a directory (and any missing parents), if it doesn't exist already. Finally!
* `Uninstall-Directory`: removes a directory, if it exists. Finally!
* `Uninstall-Group`: uses the `DirectoryServices.AccountManagement` .NET API to remove a group, if it exists.
* `Test-GroupMember`: uses the `DirectoryServices.AccountManagemetn` .NET API to test if a principal is a member of a group.

## New DSC Resource

* `Carbon_Group`: resource for configuring local groups.

## Bug Fixes

* Fixed: `Install-FileShare` always re-configures existing shares; it doesn't properly detect permissions that need to be removed.
* Fixed: `Set-IniEntry` fails to preserve unicode characters with diacritics in INI entry names and values.
* Fixed: `Remove-IniEntry` fails to preserve unicode characters with diacritics in INI entry names and values.
* Fixed: `Set-HostsEntry` leaves trailing tabs and whitespace after all but the last line.
* Fixed: `Get-PowerShellModuleInstallPath` returns wrong path for PowerShell 4.
* Fixed: `Protect-String` fails when Carbon is installed in a module path that contains spaces ([fixes issue #174](https://bitbucket.org/splatteredbits/carbon/issues/174/protect-string-throws-when-module-path)).
* Fixed: `New-RsaKeyPair` generates a key pair that isn't supported for encrypting/decrypting DSC credentials or supported by the CMS message cmdlets.
* Fixed: `Get-ScheduledTask` returns invalid task commands when those commands contain quotes (works around an issue where `schtasks.exe` CSV output can't be parsed correctly by `ConvertFrom-Csv`).
* Fixed: `Add-GroupMember` and `Remove-GroupMember` fail when adding `Everyone` or `NT Service\*` accounts to a group ([fixes issue #177](https://bitbucket.org/splatteredbits/carbon/issues/177/add-groupmembers-201-doesnt-like-vsa-names)).
* Fixed: `Get-SheduledTask` writes an error if a scheduled task's XML definition is for an executable and doesn't contain an arguments element.

## Other Improvements

* Obsolete function parameters will no longer show in Intellisense (added the `DontShow` parameter property).
* `Test-AdminPrivilege`: changed its verbose message to a debug message.
* `Set-HostsEntry`:
   * only updates hosts file if it needs to change
   * added an improved verbose message when setting a hosts entry
   * improved error handling when hosts file can't be opened for reading
* `Install-Certificate` can now install a certificate on a remote computer.
* `Initialize-Lcm` now uses `Install-Certificate` to install the decryption certificate on the remote computer.
* `Uninstall-Certificate` can now uninstall a certificate on a remote computer.
* The following functions now write warning if you pass them a plain-text password. You should pass a `SecureString` instead.
   * `Install-Certificate`
   * `Initialize-Lcm`
* `New-RsaKeyPair`:
   * Refactored to use `certreq.exe` instead of `makecert.exe` and `pvk2pfx.exe`.
   * Can now run non-interactively: added a `-Password` parameter used to protect the private key (it used to prompt you).
   * Fixed: generates a key pair that isn't supported for encrypting/decrypting DSC credentials or supported by the CMS message cmdlets.
   * Made the `-ValidFrom` and `-Authority` parameters obsolete.
* Added some verbose messages to `Install-Group` and `Add-MemberToGroup` when they create/modify their objects.
* `Install-Group` only saves changes to a group if changes were made.

Dependencies

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
2.8.1 1,586 3/26/2019
2.8.0 288 3/25/2019
2.7.0 671 12/11/2018
2.6.0 2,261 7/8/2018
2.5.4 1,156 6/2/2018
2.5.3 423 6/1/2018
2.5.2 410 6/1/2018
2.5.1 419 6/1/2018
2.5.0 17,610 6/18/2017
2.4.1 8,155 2/21/2017
2.4.0 1,796 11/9/2016
2.3.0 727 9/29/2016
2.2.0 61,391 5/12/2016
2.1.1 718 2/25/2016
2.1.0 597 2/9/2016
2.0.1 795 10/20/2015
2.0.0 670 10/11/2015
1.8.0 1,625 9/22/2014
1.7.0 1,011 5/3/2014
Show less