Files
runner-images/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
T

320 lines
9.6 KiB
PowerShell
Raw Normal View History

$global:ErrorActionPreference = "Stop"
$global:ProgressPreference = "SilentlyContinue"
$ErrorView = "NormalView"
Set-StrictMode -Version Latest
Import-Module MarkdownPS
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Android.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Browsers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.CachedTools.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Common.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Databases.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking
2021-01-18 19:45:17 +07:00
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Java.psm1") -DisableNameChecking
2021-02-01 06:03:49 -08:00
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.WebServers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.VisualStudio.psm1") -DisableNameChecking
$markdown = ""
$OSName = Get-OSName
$markdown += New-MDHeader "$OSName" -Level 1
$OSVersion = Get-OSVersion
$markdown += New-MDList -Style Unordered -Lines @(
"$OSVersion"
"Image Version: $env:IMAGE_VERSION"
)
2021-09-08 15:44:10 +03:00
if ((Test-IsWin19) -or (Test-IsWin22))
2020-07-14 00:09:57 +03:00
{
$markdown += New-MDHeader "Enabled windows optional features" -Level 2
$markdown += New-MDList -Style Unordered -Lines @(
2020-11-16 19:13:37 +03:00
"Windows Subsystem for Linux [WSLv1]"
2020-07-14 00:09:57 +03:00
)
}
2020-07-09 11:57:02 +05:00
$markdown += New-MDHeader "Installed Software" -Level 2
$markdown += New-MDHeader "Language and Runtime" -Level 3
$languageTools = @(
2020-12-14 09:24:20 +03:00
(Get-BashVersion),
(Get-GoVersion),
(Get-JuliaVersion),
2021-09-23 09:52:11 +01:00
(Get-LLVMVersion),
2021-01-15 17:30:09 +03:00
(Get-NodeVersion),
2021-12-27 13:43:52 +03:00
(Get-PerlVersion)
2021-01-15 17:30:09 +03:00
(Get-PHPVersion),
(Get-PythonVersion),
2021-08-04 12:19:55 +03:00
(Get-RubyVersion),
(Get-KotlinVersion)
)
$markdown += New-MDList -Style Unordered -Lines ($languageTools | Sort-Object)
$packageManagementList = @(
(Get-ChocoVersion),
2021-11-11 15:27:09 +03:00
(Get-CondaVersion),
2021-01-15 17:30:09 +03:00
(Get-ComposerVersion),
(Get-HelmVersion),
(Get-NPMVersion),
2021-01-15 17:30:09 +03:00
(Get-NugetVersion),
(Get-PipxVersion),
(Get-PipVersion),
(Get-RubyGemsVersion),
2021-01-15 17:30:09 +03:00
(Get-VcpkgVersion),
(Get-YarnVersion)
)
$markdown += New-MDHeader "Package Management" -Level 3
$markdown += New-MDList -Style Unordered -Lines ($packageManagementList | Sort-Object)
$markdown += New-MDHeader "Environment variables" -Level 4
$markdown += Build-PackageManagementEnvironmentTable | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Project Management" -Level 3
$projectManagementTools = @(
(Get-AntVersion),
(Get-GradleVersion),
(Get-MavenVersion),
(Get-SbtVersion)
)
$markdown += New-MDList -Style Unordered -Lines ($projectManagementTools | Sort-Object)
$markdown += New-MDHeader "Tools" -Level 3
$toolsList = @(
2021-01-15 17:30:09 +03:00
(Get-7zipVersion),
2021-08-05 17:16:04 +02:00
(Get-Aria2Version),
(Get-AzCopyVersion),
(Get-BazelVersion),
(Get-BazeliskVersion),
2021-06-23 09:52:45 -05:00
(Get-BicepVersion),
2021-01-15 17:30:09 +03:00
(Get-CabalVersion),
(Get-CMakeVersion),
(Get-CodeQLBundleVersion),
(Get-DockerVersion),
(Get-DockerComposeVersion),
2022-05-10 10:23:19 +02:00
(Get-DockerComposeVersionV2),
2021-11-19 12:44:22 +01:00
(Get-DockerWincredVersion),
2021-01-15 17:30:09 +03:00
(Get-GHCVersion),
(Get-GitVersion),
(Get-GitLFSVersion),
(Get-InnoSetupVersion),
(Get-JQVersion),
(Get-KindVersion),
2021-01-15 17:30:09 +03:00
(Get-KubectlVersion),
(Get-MercurialVersion),
2021-01-15 17:30:09 +03:00
(Get-MinGWVersion),
2020-07-07 08:37:15 +00:00
(Get-NewmanVersion),
(Get-NSISVersion),
(Get-OpenSSLVersion),
(Get-PackerVersion),
2020-08-28 10:34:51 +03:00
(Get-PulumiVersion),
2021-01-15 17:30:09 +03:00
(Get-RVersion),
(Get-ServiceFabricSDKVersion),
(Get-StackVersion),
2021-01-15 17:30:09 +03:00
(Get-SVNVersion),
(Get-VSWhereVersion),
2021-06-07 12:23:47 +03:00
(Get-SwigVersion),
(Get-WinAppDriver),
(Get-WixVersion),
(Get-ZstdVersion),
(Get-YAMLLintVersion)
)
if ((Test-IsWin16) -or (Test-IsWin19)) {
$toolsList += @(
(Get-GoogleCloudSDKVersion),
(Get-ParcelVersion)
)
}
$markdown += New-MDList -Style Unordered -Lines ($toolsList | Sort-Object)
$markdown += New-MDHeader "CLI Tools" -Level 3
$cliTools = @(
2021-01-15 17:30:09 +03:00
(Get-AlibabaCLIVersion),
(Get-AWSCLIVersion),
(Get-AWSSAMVersion),
2020-07-06 10:42:34 +03:00
(Get-AWSSessionManagerVersion),
2021-01-15 17:30:09 +03:00
(Get-AzureCLIVersion),
(Get-AzureDevopsExtVersion),
(Get-GHVersion),
(Get-HubVersion)
)
if ((Test-IsWin16) -or (Test-IsWin19)) {
$cliTools += @(
(Get-CloudFoundryVersion)
)
}
$markdown += New-MDList -Style Unordered -Lines ($cliTools | Sort-Object)
2020-07-22 13:17:15 +03:00
$markdown += New-MDHeader "Rust Tools" -Level 3
2021-01-15 17:30:09 +03:00
$markdown += New-MDList -Style Unordered -Lines (@(
"Rust $(Get-RustVersion)",
"Rustup $(Get-RustupVersion)",
"Cargo $(Get-RustCargoVersion)",
"Rustdoc $(Get-RustdocVersion)"
2021-01-15 17:30:09 +03:00
) | Sort-Object
2020-07-22 13:17:15 +03:00
)
2021-01-15 17:30:09 +03:00
2020-07-22 13:17:15 +03:00
$markdown += New-MDHeader "Packages" -Level 4
2021-01-15 17:30:09 +03:00
$markdown += New-MDList -Style Unordered -Lines (@(
2020-07-09 10:53:31 +03:00
(Get-BindgenVersion),
(Get-CargoAuditVersion),
(Get-CargoOutdatedVersion),
2021-01-20 10:30:01 +03:00
(Get-CbindgenVersion),
"Rustfmt $(Get-RustfmtVersion)",
"Clippy $(Get-RustClippyVersion)"
2021-01-15 17:30:09 +03:00
) | Sort-Object
2020-07-09 10:53:31 +03:00
)
$markdown += New-MDHeader "Browsers and webdrivers" -Level 3
$markdown += New-MDList -Style Unordered -Lines @(
(Get-BrowserVersion -Browser "chrome"),
(Get-SeleniumWebDriverVersion -Driver "chrome"),
(Get-BrowserVersion -Browser "edge"),
(Get-SeleniumWebDriverVersion -Driver "edge"),
(Get-BrowserVersion -Browser "firefox"),
(Get-SeleniumWebDriverVersion -Driver "firefox"),
(Get-SeleniumWebDriverVersion -Driver "iexplorer"),
(Get-SeleniumVersion)
)
$markdown += New-MDHeader "Environment variables" -Level 4
$markdown += Build-BrowserWebdriversEnvironmentTable | New-MDTable
$markdown += New-MDNewLine
2021-01-18 19:45:17 +07:00
$markdown += New-MDHeader "Java" -Level 3
$markdown += Get-JavaVersions | New-MDTable
$markdown += New-MDNewLine
2021-01-15 13:42:37 +03:00
$markdown += New-MDHeader "Shells" -Level 3
$markdown += Get-ShellTarget
$markdown += New-MDNewLine
$markdown += New-MDHeader "MSYS2" -Level 3
$markdown += "$(Get-PacmanVersion)" | New-MDList -Style Unordered
$markdown += New-MDHeader "Notes:" -Level 5
$reportMsys64 = @'
```
Location: C:\msys64
Note: MSYS2 is pre-installed on image but not added to PATH.
```
'@
$markdown += New-MDParagraph -Lines $reportMsys64
if (Test-IsWin19)
{
$markdown += New-MDHeader "BizTalk Server" -Level 3
$markdown += "$(Get-BizTalkVersion)" | New-MDList -Style Unordered
}
$markdown += New-MDHeader "Cached Tools" -Level 3
$markdown += (Build-CachedToolsMarkdown)
$markdown += New-MDHeader "Databases" -Level 3
$markdown += Build-DatabasesMarkdown
$markdown += New-MDHeader "Database tools" -Level 3
$databaseTools = @(
(Get-AzCosmosDBEmulatorVersion),
2020-10-05 08:11:58 -07:00
(Get-DacFxVersion),
2021-01-15 17:30:09 +03:00
(Get-MySQLVersion),
(Get-SQLPSVersion)
)
if (-not (Test-IsWin16))
{
$databaseTools += Get-SQLOLEDBDriverVersion
}
$markdown += New-MDList -Style Unordered -Lines ($databaseTools | Sort-Object)
2021-02-01 06:03:49 -08:00
$markdown += Build-WebServersSection
$vs = Get-VisualStudioVersion
$markdown += New-MDHeader "$($vs.Name)" -Level 3
$markdown += $vs | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Workloads, components and extensions:" -Level 4
2020-09-10 17:04:24 +03:00
$markdown += ((Get-VisualStudioComponents) + (Get-VisualStudioExtensions)) | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Microsoft Visual C++:" -Level 4
$markdown += Get-VisualCPPComponents | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Installed Windows SDKs" -Level 4
$sdk = Get-WindowsSDKs
$markdown += "``Location $($sdk.Path)``"
$markdown += New-MDNewLine
$markdown += New-MDList -Lines $sdk.Versions -Style Unordered
$markdown += New-MDHeader ".NET Core SDK" -Level 3
$sdk = Get-DotnetSdks
$markdown += "``Location $($sdk.Path)``"
$markdown += New-MDNewLine
$markdown += New-MDList -Lines $sdk.Versions -Style Unordered
$markdown += New-MDHeader ".NET Core Runtime" -Level 3
Get-DotnetRuntimes | Foreach-Object {
$path = $_.Path
$versions = $_.Versions
2020-06-22 16:41:34 +07:00
$markdown += "``Location: $path``"
$markdown += New-MDNewLine
$markdown += New-MDList -Lines $versions -Style Unordered
}
$markdown += New-MDHeader ".NET Framework" -Level 3
2020-06-29 01:11:01 +07:00
$markdown += "``Type: Developer Pack``"
$markdown += New-MDNewLine
Get-DotnetFrameworkTools | Foreach-Object {
$path = $_.Path
$versions = $_.Versions
$markdown += "``Location: $path``"
$markdown += New-MDNewLine
$markdown += New-MDList -Lines $versions -Style Unordered
}
2022-01-18 13:31:51 +00:00
$markdown += New-MDHeader ".NET tools" -Level 3
$tools = Get-DotnetTools
$markdown += New-MDList -Lines $tools -Style Unordered
# PowerShell Tools
$markdown += New-MDHeader "PowerShell Tools" -Level 3
$markdown += New-MDList -Lines (Get-PowershellCoreVersion) -Style Unordered
$markdown += New-MDHeader "Azure Powershell Modules" -Level 4
$markdown += Get-PowerShellAzureModules | New-MDTable
$reportAzPwsh = @'
```
Azure PowerShell module 2.1.0 and AzureRM PowerShell module 2.1.0 are installed
and are available via 'Get-Module -ListAvailable'.
All other versions are saved but not installed.
```
'@
$markdown += New-MDParagraph -Lines $reportAzPwsh
$markdown += New-MDHeader "Powershell Modules" -Level 4
$markdown += Get-PowerShellModules | New-MDTable
$markdown += New-MDNewLine
# Android section
2020-09-14 11:01:14 +03:00
$markdown += New-MDHeader "Android" -Level 3
$markdown += Build-AndroidTable | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Environment variables" -Level 4
$markdown += Build-AndroidEnvironmentTable | New-MDTable
$markdown += New-MDNewLine
2020-10-02 11:50:58 +03:00
# Docker images section
$cachedImages = Get-CachedDockerImagesTableData
if ($cachedImages) {
$markdown += New-MDHeader "Cached Docker images" -Level 3
$markdown += $cachedImages | New-MDTable
}
2020-10-02 11:50:58 +03:00
Test-BlankElement -Markdown $markdown
$markdown | Out-File -FilePath "C:\InstalledSoftware.md"