using module ../software-report-base/SoftwareReport.psm1 using module ../software-report-base/SoftwareReport.Nodes.psm1 param ( [Parameter(Mandatory)] [string] $OutputDirectory ) $global:ErrorActionPreference = "Stop" $global:ErrorView = "NormalView" Set-StrictMode -Version Latest Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Common.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "Common.Helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking # Restore file owner in user profile sudo chown -R ${env:USER}: $env:HOME # Software report $softwareReport = [SoftwareReport]::new("Ubuntu-Slim") $softwareReport.Root.AddToolVersion("OS Version:", $(Get-OSVersionFull)) $softwareReport.Root.AddToolVersion("Kernel Version:", $(Get-KernelVersion)) $softwareReport.Root.AddToolVersion("Image Version:", $env:IMAGE_VERSION) $softwareReport.Root.AddToolVersion("Systemd version:", $(Get-SystemdVersion)) $installedSoftware = $softwareReport.Root.AddHeader("Installed Software") # Language and Runtime $languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime") $languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion)) $languageAndRuntime.AddToolVersion("Dash", $(Get-DashVersion)) $languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion)) $languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion)) $languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion)) # Package Management $packageManagement = $installedSoftware.AddHeader("Package Management") $packageManagement.AddToolVersion("Npm", $(Get-NpmVersion)) $packageManagement.AddToolVersion("Pip", $(Get-PipVersion)) $packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version)) $packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion)) # Tools $tools = $installedSoftware.AddHeader("Tools") $tools.AddToolVersion("AzCopy", $(Get-AzCopyVersion)) $tools.AddToolVersion("Bicep", $(Get-BicepVersion)) $tools.AddToolVersion("Git", $(Get-GitVersion)) $tools.AddToolVersion("Git LFS", $(Get-GitLFSVersion)) $tools.AddToolVersion("Git-ftp", $(Get-GitFTPVersion)) $tools.AddToolVersion("jq", $(Get-JqVersion)) $tools.AddToolVersion("nvm", $(Get-NvmVersion)) $tools.AddToolVersion("OpenSSL", $(Get-OpensslVersion)) $tools.AddToolVersion("yq", $(Get-YqVersion)) $tools.AddToolVersion("zstd", $(Get-ZstdVersion)) # CLI Tools $cliTools = $installedSoftware.AddHeader("CLI Tools") $cliTools.AddToolVersion("AWS CLI", $(Get-AWSCliVersion)) $cliTools.AddToolVersion("AWS CLI Session Manager Plugin", $(Get-AWSCliSessionManagerPluginVersion)) $cliTools.AddToolVersion("AWS SAM CLI", $(Get-AWSSAMVersion)) $cliTools.AddToolVersion("Azure CLI", $(Get-AzureCliVersion)) $cliTools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion)) $cliTools.AddToolVersion("GitHub CLI", $(Get-GitHubCliVersion)) $cliTools.AddToolVersion("Google Cloud CLI", $(Get-GoogleCloudCLIVersion)) # PowerShell Tools $powerShellTools = $installedSoftware.AddHeader("PowerShell Tools") $powerShellTools.AddToolVersion("PowerShell", $(Get-PowershellVersion)) $installedSoftware.AddHeader("Installed apt packages").AddTable($(Get-AptPackages)) $softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM $softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/software-report.md" -Encoding UTF8NoBOM