Add-Type -AssemblyName System.Security $entropyBytes = [System.Text.UTF8Encoding]::UTF8.GetBytes("Chocolatey") Function Unprotect-Arguments { param([string]$data) $encryptedByteArray = [System.Convert]::FromBase64String($data) $decryptedByteArray = [System.Security.Cryptography.ProtectedData]::Unprotect( $encryptedByteArray, $entropyBytes, [System.Security.Cryptography.DataProtectionScope]::LocalMachine ) return [System.Text.UTF8Encoding]::UTF8.GetString($decryptedByteArray) } Function Read-Arguments { param([string]$packageName) $directory = Get-ChildItem $env:ChocolateyInstall\.chocolatey -Directory -Filter "$packageName*" | ` Where-Object { $_.Name -match ("$packageName" + "\.[\d\.]+") } | Select-Object -Last 1 If (!($directory)) { return } $argsFile = Join-Path $directory.fullname ".arguments" If (Test-Path $argsFile) { $argsData = Get-Content $argsFile #Implicitly return result from Unprotect-Arguments Unprotect-Arguments -data $argsData } } Function Get-LocalPackageInfo { & choco list -lo -r -y } Function Get-PackagesConfigBody($SaveArguments = $false) { Get-LocalPackageInfo | ForEach-Object { $packageName = $($_.SubString(0, $_.IndexOf("|"))) $line = ' ' $line } } Function Write-PackagesConfig($OutputFile, $SaveArguments = $false) { $header = "`n" $footer = "" $body = Get-PackagesConfigBody -SaveArguments $SaveArguments Write-Output $header $body $footer | Out-File $OutputFile -Encoding ASCII } # choco export -o="choco-packages.config" --include-install-args Write-PackagesConfig -OutputFile "choco-packages.config" -SaveArguments $true