Table of Contents
Carbon
Carbon is a PowerShell module for automating the configuration of Windows and automating the setup of Windows workstations and servers. More information is available at https://get-carbon.org.
- Carbon is a PowerShell module for automating the configuration of 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.
Installation
Install From Powershell Gallery
To install from the PowerShell Gallery, you must be running PowerShell 5 or PowerShell 4 with the Package Management PowerShell Modules Preview installed.
To install, run:
PS> Install-Module -Name 'Carbon' -AllowClobber
Note: You need the -AllowClobber PowerShell switch because Windows 10 / Windows Server 2016 ships with PowerShell modules that contain PowerShell functions with the same name as some of Carbon's functions.
You can now import Carbon by running:
PS> Import-Module 'Carbon'
Via PowerShell
https://get-carbon.org/about_Carbon_Installation.html
PS C:\all> Install-Module -Name 'Carbon' -AllowClobber
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or 'C:\Users\USERNAME\AppData\Local\PackageManagement\ProviderAssemblies'.
You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is “Y”): Y
You are installing PowerShell modules from an untrusted repository. If you trust this PowerShell repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the PowerShell modules from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is “N”): A
Install With Chocolatey
To install with Chocolatey, you'll need Chocolatey installed. With Chocolatey installed, run:
PS> choco install Carbon
This will install Carbon into one of PowerShell's module paths. You can now import Carbon by running:
PS> Import-Module 'Carbon'
Install With Nuget
To install with NuGet, you'll need NuGet installed. With NuGet installed, run:
This will create a Carbon-X.Y.Z directory in your current directory (or the output directory you specified with Nuget's OutputDirectory parameter). You can import Carbon from that directory using the `Import-Carbon.ps1 PowerShell script:
PS> .\Carbon-X.Y.Z\Carbon\Import-Carbon.ps1
Or with PowerShell's Import-Module command:
PS> Import-Module '.\Carbon-X.Y.Z\Carbon'
If you want Carbon available so you can run Import-Module Carbon, copy the Carbon-X.Y.Z\Carbon directory into one of PowerShell's module paths. This command will give you a list:
PS> $env:PSModulePath -split ';'
Error on Installation on December 10, 2021
Import-Module 'Carbon'
At C:\Program Files\WindowsPowerShell\Modules\Carbon\2.11.0\Functions\Initialize-Lcm.ps1:280 char:23 + configuration Lcm + ~~~
System.Management.Automation.PSArgumentException: Cannot process argument because the value of argument “fullFilePath” is not valid.
Change the value of the “fullFilePath” argument and run the operation again.
at Microsoft.PowerShell.[[DesiredStateConfiguration]].[[CimDSCParser]].[[GetFileContent]]([[String]] [[fullFilePath]])
at Microsoft.PowerShell.DesiredStateConfiguration.CimDSCParser.[[ParseSchemaMof]](String filePath) at Microsoft.PowerShell.DesiredStateConfiguration.Internal.[[DscClassCache]].[[ImportClasses]]([[String]] path, [[Tuple]]`2 moduleInfo,Collection`1 errors, Boolean importInBoxResourcesImplicitly)
at Microsoft.PowerShell.DesiredStateConfiguration.Internal.DscClassCache.Initialize(Collection`1 errors, List`1 modulePathList)
at Microsoft.PowerShell.DesiredStateConfiguration.Internal.DscClassCache.LoadDefaultCimKeywords(Dictionary`2 functionsToDefine,
Collection`1 errors, List`1 modulePathList, Boolean cacheResourcesFromMultipleModuleVersions)
at System.Management.Automation.Language.Parser.ConfigurationStatementRule(IEnumerable`1 customAttributes, TokenconfigurationToken)
At C:\Program Files\WindowsPowerShell\Modules\Carbon\2.11.0\Functions\Initialize-Lcm.ps1:277 char:5 + { + ~
Missing closing '}' in statement block or type definition.
At C:\Program Files\WindowsPowerShell\Modules\Carbon\2.11.0\Functions\Initialize-Lcm.ps1:279 char:35 + $WhatIfPreference = $false + ~
The PowerShell Try statement is missing its PowerShell Catch or PowerShell Finally block.
At C:\Program Files\WindowsPowerShell\Modules\Carbon\2.11.0\Functions\Initialize-Lcm.ps1:367 char:1 + }
+ ~
Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : ParserError
Enable-NtfsCompression
NTFS Compression - Enable-NtfsCompression - Enable-NtfsCompression
https://get-carbon.org/Enable-NtfsCompression.html
Turns on NTFS compression on a file/directory.
Syntax Enable-NtfsCompression [-Path] <String[]> [-Recurse] [-WhatIf] [-Confirm] [<CommonParameters>] Description By default, when enabling compression on a directory, only new files/directories created after enabling compression will be compressed. To compress everything, use the -Recurse switch.
Uses Windows' compact.exe command line utility to compress the file/directory. To see the output from compact.exe, set the Verbose switch.
Related Commands
Examples
EXAMPLE 1:
Enable-NtfsCompression -Path C:\Projects\Carbon
Turns on NTFS compression on and compresses the C:\Projects\Carbon directory, but not its sub-directories.
EXAMPLE 2:
Enable-NtfsCompression -Path C:\Projects\Carbon -Recurse
Turns on NTFS compression on and compresses the C:\Projects\Carbon directory and all its sub-directories.
EXAMPLE 3:
- | Where-Object { $_.PsIsContainer } | Enable-NtfsCompression
Demonstrates that you can pipe the path to compress into Enable-NtfsCompression.