diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c2860e0..1450b87 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -2,7 +2,7 @@ name: Bug Report description: File a bug report labels: ["bug"] assignees: - - rebelinux + - childebrandt42 body: - type: textarea id: bug-description diff --git a/.github/ISSUE_TEMPLATE/change_request.yml b/.github/ISSUE_TEMPLATE/change_request.yml index d5b4ea0..31c1676 100644 --- a/.github/ISSUE_TEMPLATE/change_request.yml +++ b/.github/ISSUE_TEMPLATE/change_request.yml @@ -2,7 +2,7 @@ name: Change Request description: Request a new change or an improvement labels: ["change request"] assignees: - - rebelinux + - childebrandt42 body: - type: textarea id: description diff --git a/.github/workflows/Codeql.yml b/.github/workflows/Codeql.yml new file mode 100644 index 0000000..cadfeb5 --- /dev/null +++ b/.github/workflows/Codeql.yml @@ -0,0 +1,47 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# +# https://github.com/microsoft/action-psscriptanalyzer +# For more information on PSScriptAnalyzer in general, see +# https://github.com/PowerShell/PSScriptAnalyzer + +name: CodeQL + +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + +permissions: + contents: read + +jobs: + build: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: PSScriptAnalyzer + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run PSScriptAnalyzer + uses: microsoft/psscriptanalyzer-action@v1.1 + with: + # Check https://github.com/microsoft/action-psscriptanalyzer for more info about the options. + # The below set up runs PSScriptAnalyzer to your entire repository and runs some basic security rules. + path: .\ + recurse: true + # Include your own basic security rules. Removing this option will run all the rules + excludeRule: '"PSAvoidUsingPlainTextForPassword", "PSAvoidUsingUsernameAndPasswordParams", "PSAvoidUsingConvertToSecureStringWithPlainText"' + output: results.sarif + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 6514d39..ef48eb0 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -29,7 +29,7 @@ jobs: needs: publish-to-gallery runs-on: ubuntu-latest steps: - - uses: Eomm/why-don-t-you-tweet@v1 + - uses: Eomm/why-don-t-you-tweet@v2 # We don't want to tweet if the repository is not a public one if: ${{ !github.event.repository.private }} with: @@ -41,4 +41,13 @@ jobs: TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} - + bsky-post: + needs: publish-to-gallery + runs-on: ubuntu-latest + steps: + - uses: zentered/bluesky-post-action@v0.1.0 + with: + post: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #VMware #AppVolumes #vExpert #AsBuiltReport #PowerShell" + env: + BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }} + BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }} \ No newline at end of file diff --git a/AsBuiltReport.VMware.AppVolumes.psd1 b/AsBuiltReport.VMware.AppVolumes.psd1 index e97a54c..b88a7d4 100644 --- a/AsBuiltReport.VMware.AppVolumes.psd1 +++ b/AsBuiltReport.VMware.AppVolumes.psd1 @@ -8,120 +8,120 @@ @{ -# Script module or binary module file associated with this manifest. -RootModule = 'AsBuiltReport.VMware.AppVolumes.psm1' + # Script module or binary module file associated with this manifest. + RootModule = 'AsBuiltReport.VMware.AppVolumes.psm1' -# Version number of this module. -ModuleVersion = '1.1.0' + # Version number of this module. + ModuleVersion = '1.2.0' -# Supported PSEditions -# CompatiblePSEditions = @() + # Supported PSEditions + # CompatiblePSEditions = @() -# ID used to uniquely identify this module -GUID = 'd194e1c4-5fe2-4773-aac9-36ace0599df1' + # ID used to uniquely identify this module + GUID = 'd194e1c4-5fe2-4773-aac9-36ace0599df1' -# Author of this module -Author = 'Chris Hildebrandt' + # Author of this module + Author = 'Chris Hildebrandt' -# Company or vendor of this module -#CompanyName = '' + # Company or vendor of this module + #CompanyName = '' -# Copyright statement for this module -Copyright = '(c) 2024 Chris.Hildebrandt. All rights reserved.' + # Copyright statement for this module + Copyright = '(c) 2024 Chris.Hildebrandt. All rights reserved.' -# Description of the functionality provided by this module -Description = 'A PowerShell module to generate As built reports on the configuration of VMware AppVolumes' + # Description of the functionality provided by this module + Description = 'A PowerShell module to generate As built reports on the configuration of VMware AppVolumes' -# Minimum version of the Windows PowerShell engine required by this module -PowerShellVersion = '5.1' + # Minimum version of the Windows PowerShell engine required by this module + PowerShellVersion = '5.1' -# Name of the Windows PowerShell host required by this module -# PowerShellHostName = '' + # Name of the Windows PowerShell host required by this module + # PowerShellHostName = '' -# Minimum version of the Windows PowerShell host required by this module -# PowerShellHostVersion = '' + # Minimum version of the Windows PowerShell host required by this module + # PowerShellHostVersion = '' -# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# DotNetFrameworkVersion = '' + # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. + # DotNetFrameworkVersion = '' -# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. -# CLRVersion = '' + # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. + # CLRVersion = '' -# Processor architecture (None, X86, Amd64) required by this module -# ProcessorArchitecture = '' + # Processor architecture (None, X86, Amd64) required by this module + # ProcessorArchitecture = '' -# Modules that must be imported into the global environment prior to importing this module -RequiredModules = @( - @{ - ModuleName = 'AsBuiltReport.Core'; - ModuleVersion = '1.3.0' - } -) -# Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() + # Modules that must be imported into the global environment prior to importing this module + RequiredModules = @( + @{ + ModuleName = 'AsBuiltReport.Core'; + ModuleVersion = '1.4.0' + } + ) + # Assemblies that must be loaded prior to importing this module + # RequiredAssemblies = @() -# Script files (.ps1) that are run in the caller's environment prior to importing this module. -# ScriptsToProcess = @() + # Script files (.ps1) that are run in the caller's environment prior to importing this module. + # ScriptsToProcess = @() -# Type files (.ps1xml) to be loaded when importing this module -# TypesToProcess = @() + # Type files (.ps1xml) to be loaded when importing this module + # TypesToProcess = @() -# Format files (.ps1xml) to be loaded when importing this module -# FormatsToProcess = @() + # Format files (.ps1xml) to be loaded when importing this module + # FormatsToProcess = @() -# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess -# NestedModules = @() + # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess + # NestedModules = @() -# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = @('Invoke-AsBuiltReport.VMware.AppVolumes') + # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. + FunctionsToExport = @('Invoke-AsBuiltReport.VMware.AppVolumes') -# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = @() + # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. + CmdletsToExport = @() -# Variables to export from this module -VariablesToExport = '*' + # Variables to export from this module + VariablesToExport = '*' -# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. -AliasesToExport = @() + # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. + AliasesToExport = @() -# DSC resources to export from this module -# DscResourcesToExport = @() + # DSC resources to export from this module + # DscResourcesToExport = @() -# List of all modules packaged with this module -# ModuleList = @() + # List of all modules packaged with this module + # ModuleList = @() -# List of all files packaged with this module -# FileList = @() + # List of all files packaged with this module + # FileList = @() -# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. -PrivateData = @{ + # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. + PrivateData = @{ - PSData = @{ + PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - Tags = @('AsBuiltReport', 'Report', 'VMware', 'AppVolumes', 'App-Volumes','Windows','VDI','Horizon', 'Documentation', 'PScribo', 'PSEdition_Desktop') + # Tags applied to this module. These help with module discovery in online galleries. + Tags = @('AsBuiltReport', 'Report', 'VMware', 'AppVolumes', 'App-Volumes', 'Windows', 'VDI', 'Horizon', 'Documentation', 'PScribo', 'PSEdition_Desktop') - # A URL to the license for this module. - LicenseUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/master/LICENSE' + # A URL to the license for this module. + LicenseUri = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/master/LICENSE' - # A URL to the main website for this project. - ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes' + # A URL to the main website for this project. + ProjectUri = 'https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes' - # A URL to an icon representing this module. - IconUri = 'https://github.com/AsBuiltReport.png' + # A URL to an icon representing this module. + IconUri = 'https://github.com/AsBuiltReport.png' - # ReleaseNotes of this module - ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/master/CHANGELOG.md' + # ReleaseNotes of this module + ReleaseNotes = 'https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/master/CHANGELOG.md' - } # End of PSData hashtable + } # End of PSData hashtable -} # End of PrivateData hashtable + } # End of PrivateData hashtable -# HelpInfo URI of this module -# HelpInfoURI = '' + # HelpInfo URI of this module + # HelpInfoURI = '' -# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. -# DefaultCommandPrefix = '' + # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. + # DefaultCommandPrefix = '' } diff --git a/CHANGELOG.md b/CHANGELOG.md index 944032b..c96a92a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # :arrows_clockwise: VMware AppVolumes As Built Report Changelog +## [1.2.0] - 2023-11-21 + +### Added + +- Tested Report with App Volumes v2410 +- Added code to properly display space information + +### Changed + +- Changed Required Modules to AsBuiltReport.Core v1.4.0 +- Improved detection of empty fields in tables +- Improved detection of true/false elements in tables +- Updated GitHub release workflow to add post to Bluesky social platform + ## [1.1.0] - 2023-1-1 ### Added @@ -14,7 +28,7 @@ ### Fixed -- Fixed issue with ssl certificate verification in PwSh <= 5 +- Fixed issue with ssl certificate verification in PwSh <= 5 ## [0.2.0] - 2022-10-12 diff --git a/README.md b/README.md index 23d7cd9..a420fb9 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,6 @@ Please refer to the AsBuiltReport [website](https://www.asbuiltreport.com) for m Sample VMware AppVolumes As Built report HTML file: [Sample VMware AppVolumes As Built Report.html](https://htmlpreview.github.io/?https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/dev/Samples/Sample%20VMware%20AppVolumes%20As%20Built%20Report.html) -Sample VMware AppVolumes As Built report PDF file: [Sample VMware AppVolumes As Built Report.pdf](https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/dev/Samples/Sample%20VMware%20AppVolumes%20As%20Built%20Report.pdf) - # :beginner: Getting Started Below are the instructions on how to install, configure and generate a VMware AppVolumes As Built report. @@ -49,14 +47,14 @@ Below are the instructions on how to install, configure and generate a VMware Ap The VMware AppVolumes As Built Report supports the following AppVolumes versions; - Should work on version 4.+ -- Has been tested on all 230# Builds +- Has been tested on all new Builds ### PowerShell This report is compatible with the following PowerShell versions; -| Windows PowerShell 5.1 | PowerShell 7 | -|:----------------------:|:--------------------:| +| Windows PowerShell 5.1 | PowerShell 7 | +| :--------------------: | :----------------: | | :white_check_mark: | :white_check_mark: | ## :wrench: System Requirements @@ -110,15 +108,15 @@ The following provides information of how to configure each schema within the re ### Report The **Report** schema provides configuration of the VMware AppVolumes report information. -| Sub-Schema | Setting | Default | Description | -|---------------------|--------------|--------------------------------|--------------------------------------------------------------| +| Sub-Schema | Setting | Default | Description | +| ------------------- | ------------ | --------------------------------- | ------------------------------------------------------------ | | Name | User defined | VMware AppVolumes As Built Report | The name of the As Built Report | -| Version | User defined | 1.0 | The report version | -| Status | User defined | Released | The report release status | -| ShowCoverPageImage | true / false | true | Toggle to enable/disable the display of the cover page image | -| ShowTableOfContents | true / false | true | Toggle to enable/disable table of contents | -| ShowHeaderFooter | true / false | true | Toggle to enable/disable document headers & footers | -| ShowTableCaptions | true / false | true | Toggle to enable/disable table captions/numbering | +| Version | User defined | 1.0 | The report version | +| Status | User defined | Released | The report release status | +| ShowCoverPageImage | true / false | true | Toggle to enable/disable the display of the cover page image | +| ShowTableOfContents | true / false | true | Toggle to enable/disable table of contents | +| ShowHeaderFooter | true / false | true | Toggle to enable/disable document headers & footers | +| ShowTableCaptions | true / false | true | Toggle to enable/disable table captions/numbering | ### Options The **Options** schema allows certain options within the report to be toggled on or off. @@ -129,39 +127,39 @@ The **InfoLevel** schema allows configuration of each section of the report at a There are 3 levels (0-2) of detail granularity for each section as follows; -| Setting | InfoLevel | Description | -|:-------:|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------| -| 0 | Disabled | Does not collect or display any information | -| 1 | Enabled / Summary | Provides summarised information for a collection of objects | -| 2 | Adv Summary | Provides condensed, detailed information for a collection of objects | +| Setting | InfoLevel | Description | +| :-----: | ----------------- | -------------------------------------------------------------------- | +| 0 | Disabled | Does not collect or display any information | +| 1 | Enabled / Summary | Provides summarised information for a collection of objects | +| 2 | Adv Summary | Provides condensed, detailed information for a collection of objects | The table below outlines the default and maximum InfoLevel settings for each section. -| Sub-Schema | Default Setting | Maximum Setting | -|--------------|:---------------:|:---------------:| -General | 1 | 1 | -Application | 1 | 2 | -Package | 1 | 2 | -Program | 1 | 2 | -Assignment | 1 | 2 | -Writeables | 1 | 2 | -ADUsers | 1 | 1 | -Computers | 1 | 1 | -ADGroups | 1 | 1 | -ADOUs | 1 | 1 | -Machines | 1 | 1 | -StorageLocations | 1 | 2 | -StorageGroups | 1 | 1 | -Instance | 1 | 2 | -Jobs | 1 | 1 | -Troubleshooting | 1 | 1 | -License | 1 | 1 | -ADDomains | 1 | 2 | -AdminGroups | 1 | 2 | -MachineManagers | 1 | 2 | -Storage | 1 | 1 | -Managers | 1 | 1 | -Settings | 1 | 1 | +| Sub-Schema | Default Setting | Maximum Setting | +| ---------------- | :-------------: | :-------------: | +| General | 1 | 1 | +| Application | 1 | 2 | +| Package | 1 | 2 | +| Program | 1 | 2 | +| Assignment | 1 | 2 | +| Writeables | 1 | 2 | +| ADUsers | 1 | 1 | +| Computers | 1 | 1 | +| ADGroups | 1 | 1 | +| ADOUs | 1 | 1 | +| Machines | 1 | 1 | +| StorageLocations | 1 | 2 | +| StorageGroups | 1 | 1 | +| Instance | 1 | 2 | +| Jobs | 1 | 1 | +| Troubleshooting | 1 | 1 | +| License | 1 | 1 | +| ADDomains | 1 | 2 | +| AdminGroups | 1 | 2 | +| MachineManagers | 1 | 2 | +| Storage | 1 | 1 | +| Managers | 1 | 1 | +| Settings | 1 | 1 | ### Healthcheck diff --git a/Samples/Sample VMware AppVolumes As Built Report.html b/Samples/Sample VMware AppVolumes As Built Report.html index 36e7f2d..4c3854f 100644 --- a/Samples/Sample VMware AppVolumes As Built Report.html +++ b/Samples/Sample VMware AppVolumes As Built Report.html @@ -1,4 +1,4 @@ - + VMware AppVolumes As Built Report











-VMware Logo +AsBuiltReport Logo
-

VMware AppVolumes As Built Report


As Built Report
































- - +
VMware AppVolumes As Built Report

ACME Inc.






















Author:As Built Report
Date:Tuesday, January 2, 2024
+ +
Author:Bugs Bunny
Date:Thursday, November 21, 2024
Version:1.0

VMware AppVolumes As Built Report - v1.0

Table of Contents

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1Horizon-APV-01V.pharmax.local
1.1   General Information
1.2   Inventory
1.2.1      Application Summary
1.2.1.1         Applications Details
1.2.1.1.1            Application Details - 7zip
1.2.1.1.2            Application Details - Google Chrome
1.2.1.1.3            Application Details - Office 2021
1.2.2      Packages Summary
1.2.2.1         Packages Details
1.2.2.1.1            Package - 7zip
1.2.2.1.2            Package - Google Chrome 104-update
1.2.2.1.3            Package - Google Chrome 88
1.2.2.1.4            Package - Office2021
1.2.3      Programs Summary
1.2.3.1         Program Details
1.2.3.1.1            Program Details - 7-Zip 22.01 (x64 edition)
1.2.3.1.2            Program Details - Google Chrome
1.2.3.1.3            Program Details - Google Chrome
1.2.3.1.4            Program Details - Microsoft Office LTSC Professional Plus 2021 - en-us
1.2.3.1.5            Program Details - Microsoft OneDrive
1.2.3.1.6            Program Details - Microsoft Project Professional 2021 - en-us
1.2.3.1.7            Program Details - Microsoft Visio LTSC Professional 2021 - en-us
1.2.3.1.8            Program Details - Office 16 Click-to-Run Extensibility Component
1.2.3.1.9            Program Details - Office 16 Click-to-Run Licensing Component
1.2.3.1.10            Program Details - Teams Machine-Wide Installer
1.2.4      Assignments Summary
1.2.5      Writable Volumes
1.2.5.1         Writable Volume Details
1.3   Directory
1.3.1      Managed Users
1.3.2      Managed Computers
1.3.3      Managed Groups
1.3.4      Managed OU's
1.4   Infrastructure
1.4.1      Managed Machines Summary
1.4.2      Managed Storage Locations
1.4.3      Storage Groups
1.4.3.1         Storage Group - APPVOL-SG
1.4.3.2         Storage Group - CAL-PB-01
1.5   Activity
1.5.1      Scheduled Jobs
1.6   Configuration
1.6.1      License Information
1.6.2      Active Directory Domain
1.6.2.1         AD Domain Summary
1.6.3      Administrator Roles
1.6.4      Machine Managers
1.6.4.1         Machine Manager Summary
1.6.5      Storage Overview
1.6.5.1         Storage Overview Packages
1.6.5.2         Storage Overview Writable Volumes
1.6.6      App Volumes Manager Servers
1.6.6.1         App Volumes Manager Server Details - Horizon-APV-01V
1.6.7      Settings
1Horizon-APV-01V.pharmax.local
1.1   General Information
1.2   Inventory
1.2.1      Application Summary
1.2.1.1         Applications Details
1.2.1.1.1            Application Details - 7zip
1.2.1.1.2            Application Details - Google Chrome
1.2.1.1.3            Application Details - Office 2021
1.2.2      Packages Summary
1.2.2.1         Packages Details
1.2.2.1.1            Package - 7zip
1.2.2.1.2            Package - Google Chrome 104-update
1.2.2.1.3            Package - Google Chrome 88
1.2.2.1.4            Package - Office2021
1.2.3      Programs Summary
1.2.3.1         Program Details
1.2.3.1.1            Program Details - 7-Zip 22.01 (x64 edition)
1.2.3.1.2            Program Details - Google Chrome
1.2.3.1.3            Program Details - Google Chrome
1.2.3.1.4            Program Details - Microsoft Office LTSC Professional Plus 2021 - en-us
1.2.3.1.5            Program Details - Microsoft OneDrive
1.2.3.1.6            Program Details - Microsoft Project Professional 2021 - en-us
1.2.3.1.7            Program Details - Microsoft Visio LTSC Professional 2021 - en-us
1.2.3.1.8            Program Details - Office 16 Click-to-Run Extensibility Component
1.2.3.1.9            Program Details - Office 16 Click-to-Run Licensing Component
1.2.3.1.10            Program Details - Teams Machine-Wide Installer
1.2.4      Assignments Summary
1.2.5      Writable Volumes
1.2.5.1         Writable Volume Details
1.3   Directory
1.3.1      Managed Users
1.3.2      Managed Computers
1.3.3      Managed Groups
1.3.4      Managed OU's
1.4   Infrastructure
1.4.1      Managed Machines Summary
1.4.2      Managed Storage Locations
1.4.3      Storage Groups
1.4.3.1         Storage Group - APPVOL-SG
1.4.3.2         Storage Group - CAL-PB-01
1.5   Activity
1.5.1      Scheduled Jobs
1.6   Configuration
1.6.1      License Information
1.6.2      Active Directory Domain
1.6.2.1         AD Domain Summary
1.6.3      Administrator Roles
1.6.4      Machine Managers
1.6.4.1         Machine Manager Summary
1.6.5      Storage Overview
1.6.5.1         Storage Overview Packages
1.6.5.2         Storage Overview Writable Volumes
1.6.6      App Volumes Manager Servers
1.6.6.1         App Volumes Manager Server Details - Horizon-APV-01V
1.6.7      Settings

-
VMware AppVolumes As Built Report - v1.0

1 Horizon-APV-01V.pharmax.local

The following section provides a summary of the implemented components on the VMware App Volumes infrastructure.

1.1 General Information

The following section provide a summary of common information on Horizon-APV-01V.

+
VMware AppVolumes As Built Report - v1.0

1 Horizon-APV-01V.pharmax.local

The following section provides a summary of the implemented components on the VMware App Volumes infrastructure.

1.1 General Information

The following section provide a summary of common information on Horizon-APV-01V.

- + - +
NameHorizon-APV-01V.pharmax.local
VersionApp Volumes 4, version 2309 (4.12.0.81)
VersionApp Volumes 4, version 2410 (4.15.0.687)
ConfiguredYes
Uptimeabout 1 hour
Uptime11 minutes
Number of Domains1
Number of App Volumes Managers1
Number of vCenters2
Table 1 - General Information - Horizon-APV-01V.pharmax.local

-

1.2 Inventory

1.2.1 Application Summary

The following section provide a summary of the applications captured on Horizon-APV-01V.

+

1.2 Inventory

1.2.1 Application Summary

The following section provide a summary of the applications captured on Horizon-APV-01V.

NameStatusCreatedTemplate VersionAgent VersionApplications Count
7zipactiveAug 25 2022--4.7.0.64R1
Google ChromeactiveAug 25 2022--4.7.0.64R1
Office 2021activeAug 25 2022--4.7.0.64R7
Table 2 - Application Summary - Horizon-APV-01V.pharmax.local

-

1.2.1.1 Applications Details

1.2.1.1.1 Application Details - 7zip
+

1.2.1.1 Applications Details

1.2.1.1.1 Application Details - 7zip
- + @@ -146,28 +146,28 @@
Name7zip
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
OwnerPHARMAX\Administrator
Total Assignments3
CreatedAug 25 2022
ModifiedAug 25 2022
Sync Status--
Table 3 - Application Details - 7zip

-

Application Packages

+

Application Packages

NameVersionCreatedMountedSizeCurrent
7zip22.01.00.08/25/202212/16/202389.00 MBYes
Table 4 - Application Packages - 7zip

-

Application Programs

+

Application Programs

NameVersionCreated
7-Zip 22.01 (x64 edition)22.01.00.0Aug 25 2022
Table 5 - Application Programs - 7zip

-

Application Assignment

+

Application Assignment

NameType
PHARMAX\Domain AdminsGroup
PHARMAX\jocolonUser
PHARMAX\veeam_adminUser
Table 6 - Application Assignment - 7zip

-
1.2.1.1.2 Application Details - Google Chrome
+
1.2.1.1.2 Application Details - Google Chrome
- + @@ -177,18 +177,18 @@
NameGoogle Chrome
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
OwnerPHARMAX\Administrator
Total Assignments6
CreatedAug 25 2022
ModifiedAug 25 2022
Sync Status--
Table 7 - Application Details - Google Chrome

-

Application Packages

+

Application Packages

NameVersionCreatedMountedSizeCurrent
Google Chrome 8888.0.4324.1508/25/2022--783.00 MBNo
Google Chrome 104-update104.0.5112.1028/25/202212/16/2023940.00 MBYes
Table 8 - Application Packages - Google Chrome

-

Application Programs

+

Application Programs

NameVersionCreated
Google Chrome104.0.5112.102Aug 25 2022
Table 9 - Application Programs - Google Chrome

-

Application Assignment

+

Application Assignment

@@ -198,11 +198,11 @@
NameType
PHARMAX OU:Fortinet EMSOrgUnit
PHARMAX OU:VEEAM WorkStationsOrgUnit
PHARMAX\veeam_adminUser
Table 10 - Application Assignment - Google Chrome

-
1.2.1.1.3 Application Details - Office 2021
+
1.2.1.1.3 Application Details - Office 2021
- + @@ -212,12 +212,12 @@
NameOffice 2021
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
OwnerPHARMAX\Administrator
Total Assignments3
CreatedAug 25 2022
ModifiedAug 25 2022
Sync Status--
Table 11 - Application Details - Office 2021

-

Application Packages

+

Application Packages

NameVersionCreatedMountedSizeCurrent
Office202116.0.14332.203588/25/202212/16/20234.37 GBYes
Table 12 - Application Packages - Office 2021

-

Application Programs

+

Application Programs

@@ -228,14 +228,14 @@
NameVersionCreated
Microsoft Office LTSC Professional Plus 2021 - en-us16.0.14332.20358Aug 25 2022
Microsoft OneDrive21.030.0211.0002Aug 25 2022
Teams Machine-Wide Installer1.4.0.19572Aug 25 2022
Table 13 - Application Programs - Office 2021

-

Application Assignment

+

Application Assignment

NameType
PHARMAX\Domain AdminsGroup
PHARMAX\jocolonUser
PHARMAX\veeam_adminUser
Table 14 - Application Assignment - Office 2021

-

1.2.2 Packages Summary

The following section provide a summary of the packages on Horizon-APV-01V.

+

1.2.2 Packages Summary

The following section provide a summary of the packages on Horizon-APV-01V.

@@ -243,7 +243,7 @@
NameApplicationStageStatusVersionSizeAdded
7zip7zipNewenabled22.01.00.089.00 MBAug 25 2022
Google Chrome 104-updateGoogle ChromeNewenabled104.0.5112.102940.00 MBAug 25 2022
Office2021Office 2021Newenabled16.0.14332.203584.37 GBAug 25 2022
Table 15 - Packages - Horizon-APV-01V.pharmax.local

-

1.2.2.1 Packages Details

1.2.2.1.1 Package - 7zip
+

1.2.2.1 Packages Details

1.2.2.1.1 Package - 7zip
@@ -273,29 +273,29 @@
App Name7zip
Application Name7zip
Is CurrentCURRENT
Table 16 - Package Details - 7zip

-

Programs

+

Programs

Program NameBuild #Publisher NameProgram CreatedProgram Updated
7-Zip 22.01 (x64 edition)22.01.00.0Igor PavlovAug 25 2022Aug 25 2022
Table 17 - Programs for Application - 7zip

-

Operating Systems

+

Operating Systems

OS NameOS VersionProcessor ArchType
Windows 10 (x64)10.09Desktop
Table 18 - Operating Systems for -

-

Storage Locations for - 7zip

+

Storage Locations for - 7zip

LocationPathHostFile StatusCreated
SSD-VM-HIGH-CAPACITY-PERF-KNappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
SSD-VM-HIGH-CAPACITY-PERF-MKappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
Table 19 - Storage Location for - 7zip

-

Application links for - 7zip

+

Application links for - 7zip

App Link NameEntry Point
7-Zip File ManagerC:\ProgramData\Microsoft\Windows\Start Menu\Programs\7-Zip\7-Zip File Manager.lnk
7-Zip HelpC:\ProgramData\Microsoft\Windows\Start Menu\Programs\7-Zip\7-Zip Help.lnk
Table 20 - Application links for - 7zip

-
1.2.2.1.2 Package - Google Chrome 104-update
+
1.2.2.1.2 Package - Google Chrome 104-update
@@ -325,29 +325,29 @@
App NameGoogle Chrome 104-update
Application NameGoogle Chrome
Is CurrentCURRENT
Table 21 - Package Details - Google Chrome 104-update

-

Programs

+

Programs

Program NameBuild #Publisher NameProgram CreatedProgram Updated
Google Chrome104.0.5112.102Google LLCAug 25 2022Aug 25 2022
Table 22 - Programs for Application - Google Chrome 104-update

-

Operating Systems

+

Operating Systems

OS NameOS VersionProcessor ArchType
Windows 10 (x64)10.09Desktop
Table 23 - Operating Systems for -

-

Storage Locations for - Google Chrome 104-update

+

Storage Locations for - Google Chrome 104-update

LocationPathHostFile StatusCreated
SSD-VM-HIGH-CAPACITY-PERF-KNappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
SSD-VM-HIGH-CAPACITY-PERF-MKappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
Table 24 - Storage Location for - Google Chrome 104-update

-

Application links for - Google Chrome 104-update

+

Application links for - Google Chrome 104-update

App Link NameEntry Point
Google ChromeC:\Users\Public\Desktop\Google Chrome.lnk
Google ChromeC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk
Table 25 - Application links for - Google Chrome 104-update

-
1.2.2.1.3 Package - Google Chrome 88
+
1.2.2.1.3 Package - Google Chrome 88
@@ -377,23 +377,23 @@
App NameGoogle Chrome 88
Application NameGoogle Chrome
Is Current--
Table 26 - Package Details - Google Chrome 88

-

Programs

+

Programs

Program NameBuild #Publisher NameProgram CreatedProgram Updated
Google Chrome88.0.4324.150Google LLCAug 25 2022Aug 25 2022
Table 27 - Programs for Application - Google Chrome 88

-

Operating Systems

+

Operating Systems

OS NameOS VersionProcessor ArchType
Windows 10 (x64)10.09Desktop
Table 28 - Operating Systems for -

-

Storage Locations for - Google Chrome 88

+

Storage Locations for - Google Chrome 88

LocationPathHostFile StatusCreated
SSD-VM-HIGH-CAPACITY-PERF-KNappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
SSD-VM-HIGH-CAPACITY-PERF-MKappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
Table 29 - Storage Location for - Google Chrome 88

-
1.2.2.1.4 Package - Office2021
+
1.2.2.1.4 Package - Office2021
@@ -423,7 +423,7 @@
App NameOffice2021
Application NameOffice 2021
Is CurrentCURRENT
Table 30 - Package Details - Office2021

-

Programs

+

Programs

@@ -434,18 +434,18 @@
Program NameBuild #Publisher NameProgram CreatedProgram Updated
Teams Machine-Wide Installer1.4.0.19572Microsoft CorporationAug 25 2022Aug 25 2022
Office 16 Click-to-Run Licensing Component16.0.14332.20358Microsoft CorporationAug 25 2022Aug 25 2022
Microsoft Office LTSC Professional Plus 2021 - en-us16.0.14332.20358Microsoft CorporationAug 25 2022Aug 25 2022
Table 31 - Programs for Application - Office2021

-

Operating Systems

+

Operating Systems

OS NameOS VersionProcessor ArchType
Windows 10 (x64)10.09Desktop
Table 32 - Operating Systems for -

-

Storage Locations for - Office2021

+

Storage Locations for - Office2021

LocationPathHostFile StatusCreated
SSD-VM-HIGH-CAPACITY-PERF-KNappvolumes/packagesvcenter-01v.pharmax.localYesAug 26 2022
SSD-VM-HIGH-CAPACITY-PERF-MKappvolumes/packagesvcenter-01v.pharmax.localYesAug 25 2022
Table 33 - Storage Location for - Office2021

-

Application links for - Office2021

+

Application links for - Office2021

@@ -465,7 +465,7 @@
App Link NameEntry Point
AccessC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Access.lnk
Database CompareC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Database Compare.lnk
WordC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Word.lnk
Table 34 - Application links for - Office2021

-

1.2.3 Programs Summary

The following section provide a summary of the programs on Horizon-APV-01V.

+

1.2.3 Programs Summary

The following section provide a summary of the programs on Horizon-APV-01V.

@@ -479,7 +479,7 @@
App NameVersion #Publisher NamePackage Name
Office 16 Click-to-Run Licensing Component16.0.14332.20358Microsoft CorporationOffice2021
Office 16 Click-to-Run Extensibility Component16.0.14332.20358Microsoft CorporationOffice2021
Teams Machine-Wide Installer1.4.0.19572Microsoft CorporationOffice2021
Table 35 - Programs - Horizon-APV-01V.pharmax.local

-

1.2.3.1 Program Details

1.2.3.1.1 Program Details - 7-Zip 22.01 (x64 edition)
+

1.2.3.1 Program Details

1.2.3.1.1 Program Details - 7-Zip 22.01 (x64 edition)
@@ -491,7 +491,7 @@
Name7-Zip 22.01 (x64 edition)
Package7zip
Icon/snapvols/8/7-Zip_22.01__x64_edition_.png
Table 36 - Program Details - 7-Zip 22.01 (x64 edition)

-
1.2.3.1.2 Program Details - Google Chrome
+
1.2.3.1.2 Program Details - Google Chrome
@@ -503,7 +503,7 @@
NameGoogle Chrome
PackageGoogle Chrome 104-update
Icon/snapvols/9/Google_Chrome.png
Table 37 - Program Details - Google Chrome

-
1.2.3.1.3 Program Details - Google Chrome
+
1.2.3.1.3 Program Details - Google Chrome
@@ -515,7 +515,7 @@
NameGoogle Chrome
PackageGoogle Chrome 88
Icon/snapvols/2/Google_Chrome.png
Table 38 - Program Details - Google Chrome

-
1.2.3.1.4 Program Details - Microsoft Office LTSC Professional Plus 2021 - en-us
+
1.2.3.1.4 Program Details - Microsoft Office LTSC Professional Plus 2021 - en-us
@@ -527,7 +527,7 @@
NameMicrosoft Office LTSC Professional Plus 2021 - en-us
PackageOffice2021
Icon/snapvols/11/Microsoft_Office_LTSC_Professional_Plus_2021_-_en-us.png
Table 39 - Program Details - Microsoft Office LTSC Professional Plus 2021 - en-us

-
1.2.3.1.5 Program Details - Microsoft OneDrive
+
1.2.3.1.5 Program Details - Microsoft OneDrive
@@ -539,7 +539,7 @@
NameMicrosoft OneDrive
PackageOffice2021
Icon/snapvols/11/Microsoft_OneDrive.png
Table 40 - Program Details - Microsoft OneDrive

-
1.2.3.1.6 Program Details - Microsoft Project Professional 2021 - en-us
+
1.2.3.1.6 Program Details - Microsoft Project Professional 2021 - en-us
@@ -551,7 +551,7 @@
NameMicrosoft Project Professional 2021 - en-us
PackageOffice2021
Icon/snapvols/11/Microsoft_Project_Professional_2021_-_en-us.png
Table 41 - Program Details - Microsoft Project Professional 2021 - en-us

-
1.2.3.1.7 Program Details - Microsoft Visio LTSC Professional 2021 - en-us
+
1.2.3.1.7 Program Details - Microsoft Visio LTSC Professional 2021 - en-us
@@ -563,7 +563,7 @@
NameMicrosoft Visio LTSC Professional 2021 - en-us
PackageOffice2021
Icon/snapvols/11/Microsoft_Visio_LTSC_Professional_2021_-_en-us.png
Table 42 - Program Details - Microsoft Visio LTSC Professional 2021 - en-us

-
1.2.3.1.8 Program Details - Office 16 Click-to-Run Extensibility Component
+
1.2.3.1.8 Program Details - Office 16 Click-to-Run Extensibility Component
@@ -575,7 +575,7 @@
NameOffice 16 Click-to-Run Extensibility Component
PackageOffice2021
Icon/snapvols/11/Office_16_Click-to-Run_Extensibility_Component.png
Table 43 - Program Details - Office 16 Click-to-Run Extensibility Component

-
1.2.3.1.9 Program Details - Office 16 Click-to-Run Licensing Component
+
1.2.3.1.9 Program Details - Office 16 Click-to-Run Licensing Component
@@ -587,7 +587,7 @@
NameOffice 16 Click-to-Run Licensing Component
PackageOffice2021
Icon/snapvols/11/Office_16_Click-to-Run_Licensing_Component.png
Table 44 - Program Details - Office 16 Click-to-Run Licensing Component

-
1.2.3.1.10 Program Details - Teams Machine-Wide Installer
+
1.2.3.1.10 Program Details - Teams Machine-Wide Installer
@@ -599,7 +599,7 @@
NameTeams Machine-Wide Installer
PackageOffice2021
Icon/snapvols/11/Teams_Machine-Wide_Installer.png
Table 45 - Program Details - Teams Machine-Wide Installer

-

1.2.4 Assignments Summary

The following section provide a summary of the assignments on Horizon-APV-01V.

+

1.2.4 Assignments Summary

The following section provide a summary of the assignments on Horizon-APV-01V.

@@ -615,13 +615,13 @@
EntityMarkerPackageApplicationsComputersAssigned
PHARMAX\jocolonCURRENTGoogle Chrome 104-updateGoogle ChromeAllAug 26 2022
PHARMAX\jocolonCURRENT7zip7-Zip 22.01 (x64 edition)AllAug 26 2022
PHARMAX OU:Fortinet EMSCURRENTGoogle Chrome 104-updateGoogle ChromeAllOct 06 2022
Table 46 - Assignment Summary - Horizon-APV-01V.pharmax.local

-

1.2.5 Writable Volumes

The following section provide a summary of writable volumes on Horizon-APV-01V.

+

1.2.5 Writable Volumes

The following section provide a summary of writable volumes on Horizon-APV-01V.

OwnerStorageStatusCreatedState
PHARMAX\veeam_adminSSD-VM-HIGH-CAPACITY-PERF-MKdisabledAug 26 2022Detached
PHARMAX\jocolonSSD-VM-HIGH-CAPACITY-PERF-MKenabledMar 02 2022Detached
Table 47 - Writable Volumes - Horizon-APV-01V.pharmax.local

-

1.2.5.1 Writable Volume Details

Writable Volume Details for - PHARMAX\jocolon

+

1.2.5.1 Writable Volume Details

Writable Volume Details for - PHARMAX\jocolon

@@ -648,7 +648,7 @@
OwnerPHARMAX\jocolon
Owner TypeUser
OS Version--
Table 48 - Writable volumes details - PHARMAX\jocolon

-

Writable Volume Details for - PHARMAX\veeam_admin

+

Writable Volume Details for - PHARMAX\veeam_admin

@@ -675,29 +675,26 @@
OwnerPHARMAX\veeam_admin
Owner TypeUser
OS Version--
Table 49 - Writable volumes details - PHARMAX\veeam_admin

-

1.3 Directory

1.3.1 Managed Users

The following section provide a summary of Users who have logged-in to a managed computer or have assignments on Horizon-APV-01V.

+

1.3 Directory

1.3.1 Managed Users

The following section provide a summary of Users who have logged-in to a managed computer or have assignments on Horizon-APV-01V.

NameWritableAssignmentsAttachmentsLoginLast LogonStatus
PHARMAX\veeam_admin1302Aug 26 2022Enabled
PHARMAX\jocolon13011Dec 16 2023Enabled
PHARMAX\Administrator00024Dec 15 2023Enabled
Table 50 - Managed Users - Horizon-APV-01V.pharmax.local

-

1.3.2 Managed Computers

The following section provide a summary of computers with app volumes agent installed and registered to Horizon-APV-01V.

+

1.3.2 Managed Computers

The following section provide a summary of computers with app volumes agent installed and registered to Horizon-APV-01V.

- - + - - - + + -
ComputerAgentOSWritablesAssignmentsAttachmentsBootsLast BootStatus
it5397648804.7.0.64RTServer0001Dec 14 2023 10:33PMEnabled
it14964578994.12.0.81RTServer0003Dec 15 2023 09:34PMEnabled
vm-014.7.0.64RDesktop00021Aug 27 2022 06:34PMEnabled
it5397648804.7.0.64RTServer0001Dec 14 2023 10:33PMEnabled
vm-024.7.0.64RDesktop00021Aug 27 2022 06:34PMEnabled
vm-01-hr4.7.0.64RTServer0003Aug 27 2022 10:24AMEnabled
HORIZON-RDS-02T4.12.0.81RTServer0002Dec 15 2023 05:43PMEnabled
app-farm-024.12.0.81RTServer0008Dec 21 2023 08:43AMEnabled
app-farm-014.12.0.81RTServer0007Dec 21 2023 08:43AMEnabled
HORIZON-CAP-01V4.7.0.64RDesktop00019Aug 25 2022 09:00PMEnabled
farm-014.7.0.64RTServer0003Aug 27 2022 10:24AMEnabled
HORIZON-RDS-02T4.12.0.81RTServer0002Dec 15 2023 05:43PMEnabled
HORIZON-RDS-01T4.12.0.81RTServer0006Dec 15 2023 12:40PMEnabled
HORIZON-CAP-01V4.7.0.64RDesktop00019Aug 25 2022 09:00PMEnabled
Table 51 - Managed Computers - Horizon-APV-01V.pharmax.local

-

1.3.3 Managed Groups

The following section provide a summary of Groups that have assignments on Horizon-APV-01V.

+

1.3.3 Managed Groups

The following section provide a summary of Groups that have assignments on Horizon-APV-01V.

@@ -705,13 +702,13 @@
Group NameWritableAssignmentsLast LogonStatus
Domain Users01Sep 06 2022Enabled
ho-mar-distlist100Oct 05 2022Disabled
Domain Admins03Aug 25 2022Enabled
Table 52 - Managed Groups - Horizon-APV-01V.pharmax.local

-

1.3.4 Managed OU's

The following section provide a summary of Organizational Units (OUs) that have assignments on Horizon-APV-01V.

+

1.3.4 Managed OU's

The following section provide a summary of Organizational Units (OUs) that have assignments on Horizon-APV-01V.

NameLast LogonStatusWritableAssignments
Fortinet EMSOct 06 2022Disabled01
VEEAM WorkStationsOct 06 2022Enabled01
Table 53 - Managed OU's - Horizon-APV-01V.pharmax.local

-

1.4 Infrastructure

1.4.1 Managed Machines Summary

The following section provide a summary of managed machines on Horizon-APV-01V.

+

1.4 Infrastructure

1.4.1 Managed Machines Summary

The following section provide a summary of managed machines on Horizon-APV-01V.

@@ -722,7 +719,7 @@
NameHostSourceCreatedStatus
app-farm-01esxsvr-00f.pharmax.localAgentDec 15 2023 09:40PMExisting
app-farm-02esxsvr-00f.pharmax.localAgentDec 15 2023 09:40PMExisting
Horizon-RDS-02Tesxsvr-00f.pharmax.localAgentDec 15 2023 05:42PMExisting
Table 54 - Managed Machines Summary - Horizon-APV-01V.pharmax.local

-

1.4.2 Managed Storage Locations

The following section details configured storage options for Packages, Writable Volumes, and AppStacks on Horizon-APV-01V.

+

1.4.2 Managed Storage Locations

The following section details configured storage options for Packages, Writable Volumes, and AppStacks on Horizon-APV-01V.

@@ -742,7 +739,7 @@
NameHostAppStacksWritablesAttachableStatus
EDGE_SAN_PLACEHOLDERvcenter-03v00YesExisting
esx-00fvcenter-01v00YesExisting
VMWARE_VDI_DATASTORE_2vcenter-01v00YesAbsent
Table 55 - Storages - Horizon-APV-01V.pharmax.local

-

Storage Details - EDGE_SAN_PLACEHOLDER

+

Storage Details - EDGE_SAN_PLACEHOLDER

@@ -757,7 +754,7 @@
Display Name[PHARMAX-VSI-EDGE] EDGE_SAN_PLACEHOLDER
Machine Managervcenter-03v.pharmax.local
Capacity10 GB
Table 56 - Storage Details - EDGE_SAN_PLACEHOLDER

-

Storage Details - esx-00f

+

Storage Details - esx-00f

@@ -772,7 +769,7 @@
Display Name[PHARMAX-VSI-DC] esx-00f
Machine Managervcenter-01v.pharmax.local
Capacity112 GB
Table 57 - Storage Details - esx-00f

-

Storage Details - HDD-VM-ISO-LOW-PERF

+

Storage Details - HDD-VM-ISO-LOW-PERF

@@ -787,7 +784,7 @@
Display Name[PHARMAX-VSI-DC] HDD-VM-ISO-LOW-PERF
Machine Managervcenter-01v.pharmax.local
Capacity931 GB
Table 58 - Storage Details - HDD-VM-ISO-LOW-PERF

-

Storage Details - HDD-VM-MED-PERF-01

+

Storage Details - HDD-VM-MED-PERF-01

@@ -802,7 +799,7 @@
Display Name[PHARMAX-VSI-DC] HDD-VM-MED-PERF-01
Machine Managervcenter-01v.pharmax.local
Capacity4 TB
Table 59 - Storage Details - HDD-VM-MED-PERF-01

-

Storage Details - HDD-VM-MED-PERF-02

+

Storage Details - HDD-VM-MED-PERF-02

@@ -817,7 +814,7 @@
Display Name[PHARMAX-VSI-DC] HDD-VM-MED-PERF-02
Machine Managervcenter-01v.pharmax.local
Capacity4 TB
Table 60 - Storage Details - HDD-VM-MED-PERF-02

-

Storage Details - HQ_SAN_PLACEHOLDER

+

Storage Details - HQ_SAN_PLACEHOLDER

@@ -832,7 +829,7 @@
Display Name[PHARMAX-VSI-DC] HQ_SAN_PLACEHOLDER
Machine Managervcenter-01v.pharmax.local
Capacity10 GB
Table 61 - Storage Details - HQ_SAN_PLACEHOLDER

-

Storage Details - HQ_VM_DATASTORE

+

Storage Details - HQ_VM_DATASTORE

@@ -847,7 +844,7 @@
Display Name[PHARMAX-VSI-DC] HQ_VM_DATASTORE
Machine Managervcenter-01v.pharmax.local
Capacity50 GB
Table 62 - Storage Details - HQ_VM_DATASTORE

-

Storage Details - NVME-VFLASH-01

+

Storage Details - NVME-VFLASH-01

@@ -862,7 +859,7 @@
Display Name[PHARMAX-VSI-DC] NVME-VFLASH-01
Machine Managervcenter-01v.pharmax.local
Capacity238 GB
Table 63 - Storage Details - NVME-VFLASH-01

-

Storage Details - NVME-VM-HIGH-PERF-01

+

Storage Details - NVME-VM-HIGH-PERF-01

@@ -877,7 +874,7 @@
Display Name[PHARMAX-VSI-DC] NVME-VM-HIGH-PERF-01
Machine Managervcenter-01v.pharmax.local
Capacity477 GB
Table 64 - Storage Details - NVME-VM-HIGH-PERF-01

-

Storage Details - SRM_HQ_REPLICATED_01

+

Storage Details - SRM_HQ_REPLICATED_01

@@ -892,7 +889,7 @@
Display Name[PHARMAX-VSI-DC] SRM_HQ_REPLICATED_01
Machine Managervcenter-01v.pharmax.local
Capacity50 GB
Table 65 - Storage Details - SRM_HQ_REPLICATED_01

-

Storage Details - SSD-VM-HIGH-CAPACITY-PERF-KN

+

Storage Details - SSD-VM-HIGH-CAPACITY-PERF-KN

@@ -907,7 +904,7 @@
Display Name[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-KN
Machine Managervcenter-01v.pharmax.local
Capacity894 GB
Table 66 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-KN

-

Storage Details - SSD-VM-HIGH-CAPACITY-PERF-MK

+

Storage Details - SSD-VM-HIGH-CAPACITY-PERF-MK

@@ -922,7 +919,7 @@
Display Name[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Machine Managervcenter-01v.pharmax.local
Capacity931 GB
Table 67 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-MK

-

Storage Details - TrueNAS_VM_DATA

+

Storage Details - TrueNAS_VM_DATA

@@ -937,7 +934,7 @@
Display Name[PHARMAX-VSI-DC] TrueNAS_VM_DATA
Machine Managervcenter-01v.pharmax.local
Capacity829 GB
Table 68 - Storage Details - TrueNAS_VM_DATA

-

Storage Details - TrueNAS_VM_DATA (1)

+

Storage Details - TrueNAS_VM_DATA (1)

@@ -952,7 +949,7 @@
Display Name[PHARMAX-VSI-DC] TrueNAS_VM_DATA (1)
Machine Managervcenter-01v.pharmax.local
Capacity0 KB
Table 69 - Storage Details - TrueNAS_VM_DATA (1)

-

Storage Details - VMDatastore

+

Storage Details - VMDatastore

@@ -967,7 +964,7 @@
Display Name[PHARMAX-VSI-EDGE] VMDatastore
Machine Managervcenter-03v.pharmax.local
Capacity100 GB
Table 70 - Storage Details - VMDatastore

-

Storage Details - VMWARE_VDI_DATASTORE_2

+

Storage Details - VMWARE_VDI_DATASTORE_2

@@ -982,7 +979,7 @@
Display Name[PHARMAX-VSI-DC] VMWARE_VDI_DATASTORE_2
Machine Managervcenter-01v.pharmax.local
Capacity20 GB
Table 71 - Storage Details - VMWARE_VDI_DATASTORE_2

-

1.4.3 Storage Groups

The following section details storage group used to define groups of storage locations so they can function as one storage entity for Horizon-APV-01V.

1.4.3.1 Storage Group - APPVOL-SG

+

1.4.3 Storage Groups

The following section details storage group used to define groups of storage locations so they can function as one storage entity for Horizon-APV-01V.

1.4.3.1 Storage Group - APPVOL-SG

@@ -993,24 +990,24 @@ - - + +
Distribution StrategySpread
Template StorageSSD-VM-HIGH-CAPACITY-PERF-MK
Creation DateAug 25 2022 01:36PM
Auto ImportYes
Auto ReplicateYes
Last Replicated DateJan 02 2024 11:33AM
Last Imported DateJan 02 2024 08:34AM
Last Replicated DateNov 21 2024 08:03PM
Last Imported DateNov 21 2024 04:14PM
Last Curated DateAug 25 2022 01:42PM
Table 72 - Storage Group - APPVOL-SG

-

Datastore Members

+

Datastore Members

NameDataCenterSpace UsedSpace TotalIs Deleted
SSD-VM-HIGH-CAPACITY-PERF-KNPHARMAX-VSI-DC726 GB894 GBNo
SSD-VM-HIGH-CAPACITY-PERF-MKPHARMAX-VSI-DC793 GB931 GBNo
Table 73 - Datastore Members - APPVOL-SG

-

1.4.3.2 Storage Group - CAL-PB-01

+

1.4.3.2 Storage Group - CAL-PB-01

- + @@ -1020,38 +1017,39 @@
Distribution StrategyRound-robin
Template StorageSSD-VM-HIGH-CAPACITY-PERF-KN
Members Count2
Member Name PrefixHDD-VM-MED-PERF
Space Used2.68 TB
Space Used2.69 TB
Total Space7.28 TB
Creation DateOct 05 2022 02:11PM
Auto ImportNo
Last Curated DateOct 05 2022 02:47PM
Table 74 - Storage Group - CAL-PB-01

-

Datastore Members

+

Datastore Members

NameDataCenterSpace UsedSpace TotalIs Deleted
HDD-VM-MED-PERF-01PHARMAX-VSI-DC1.5 TB3.64 TBNo
HDD-VM-MED-PERF-02PHARMAX-VSI-DC1.19 TB3.64 TBNo
Table 75 - Datastore Members - CAL-PB-01

-

1.5 Activity

1.5.1 Scheduled Jobs

The following section provide a summary of scheduled jobs for Horizon-APV-01V.

+

1.5 Activity

1.5.1 Scheduled Jobs

The following section provide a summary of scheduled jobs for Horizon-APV-01V.

- - - + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + +
NameStatusIntervalLast Run At
Audit Vmsenabled9 hours 21 minutesabout 3 hours ago
Collect Logsenabled12 hoursabout 3 hours ago
Expire Sessionsenabled33 minutes16 minutes ago
Audit Vmsenabled9 hours 21 minutesabout 4 hours ago
Collect Logsenabled12 hoursabout 4 hours ago
Expire Sessionsenabled33 minutes11 minutes ago
Finalize Application Deletionenabled10 minutes10 minutes ago
Finalize Package Deletionenabled10 minutes10 minutes ago
Fulfill Writablesenabled4 hours 1 minuteabout 3 hours ago
Import Storage Groupsenabled4 hoursabout 3 hours ago
License Extensionenabled24 hoursabout 3 hours ago
Fulfill Writablesenabled4 hours 1 minuteabout 4 hours ago
Import Storage Groupsenabled4 hoursabout 4 hours ago
License Extensionenabled24 hoursabout 4 hours ago
Marshal Writablesenabled2 minutes 30 seconds5 minutes ago
Prune Archival Tables Jobenabled24 hoursabout 19 hours ago
Refresh Attachmentsenabled3 hours 35 minutesabout 3 hours ago
Refresh Computersenabled2 hours 11 minutesabout 1 hour ago
Refresh Domainsenabled8 hoursabout 3 hours ago
Refresh Machinesenabled22 hoursabout 19 hours ago
Remove Stale Storage Locationsenabled4 hoursabout 1 hour ago
Replicate Storage Groupsenabled1 hour22 minutes ago
Sweep Vmsenabled24 hoursabout 19 hours ago
Sync Adenabled59 minutes23 minutes ago
Sync Instancesenabled12 hoursabout 3 hours ago
Synchronize Storageenabled3 hours 1 minute22 minutes ago
Update Sync Countsenabled15 minutes7 minutes ago
Prune Archival Tables Jobenabled24 hoursabout 4 hours ago
Refresh Attachmentsenabled3 hours 35 minutes11 minutes ago
Refresh Computersenabled2 hours 11 minutes11 minutes ago
Refresh Domainsenabled8 hoursabout 4 hours ago
Refresh Machinesenabled22 hoursabout 4 hours ago
Remove Stale Storage Locationsenabled4 hours11 minutes ago
Replicate Storage Groupsenabled1 hour10 minutes ago
Sweep Vmsenabled24 hoursabout 4 hours ago
Sync Adenabled59 minutes10 minutes ago
Sync Instancesenabled12 hoursabout 4 hours ago
Sync Integrationsenabled12 hoursabout 4 hours ago
Synchronize Storageenabled3 hours 1 minute10 minutes ago
Update Sync Countsenabled15 minutes10 minutes ago
Table 76 - Scheduled Jobs - Horizon-APV-01V.pharmax.local

-

1.6 Configuration

1.6.1 License Information

The following section details license information for Horizon-APV-01V.

+

1.6 Configuration

1.6.1 License Information

The following section details license information for Horizon-APV-01V.

@@ -1081,12 +1079,12 @@
Key Create Date2020-10-07 17:03:38 -0700
Key ValidYes
Options--
Table 77 - License - Horizon-APV-01V.pharmax.local

-

1.6.2 Active Directory Domain

The following section details active directory doamins are used for authentication on Horizon-APV-01V.

1.6.2.1 AD Domain Summary

+

1.6.2 Active Directory Domain

The following section details active directory doamins are used for authentication on Horizon-APV-01V.

1.6.2.1 AD Domain Summary

DomainNetBIOSBaseUsernameSecuritySSL VerifyPort
pharmax.localPHARMAX--administrator@pharmax.localLADPYes389
Table 78 - AD Domain Summary - Horizon-APV-01V.pharmax.local

-

AD Domain Details - pharmax.local

+

AD Domain Details - pharmax.local

@@ -1099,20 +1097,20 @@
Usernameadministrator@pharmax.local
Base--
Updated At2022-08-25 13:31:15 -0400
Table 79 - AD Domain Details - pharmax.local

-

1.6.3 Administrator Roles

The following section details administrative rolls for Horizon-APV-01V.

+

1.6.3 Administrator Roles

The following section details administrative rolls for Horizon-APV-01V.

- +
Group UPNRoleTypeCreated at
PHARMAX\AD - SRM Recovery GroupWritables AdministratorsGroup10/5/2022
PHARMAX\ho-mar-distlist1AppStacks AdministratorsGroup10/5/2022
PHARMAX\ho-mar-distlist1AppStacks Administrators (Custom)Group10/5/2022
PHARMAX\Domain AdminsAdministratorsGroup8/25/2022
Table 80 - Administrators Roles - Horizon-APV-01V.pharmax.local

-

1.6.4 Machine Managers

The following section provide a summary of machine managers for Horizon-APV-01V.

1.6.4.1 Machine Manager Summary

+

1.6.4 Machine Managers

The following section provide a summary of machine managers for Horizon-APV-01V.

1.6.4.1 Machine Manager Summary

HostUsernameType
vcenter-01v.pharmax.localadministrator@vsphere.localVMware vCenter
vcenter-03v.pharmax.localadministrator@vsphere.localVMware vCenter
Table 81 - Machine Managers - Horizon-APV-01V.pharmax.local

-

Machine Manager Details - vcenter-01v.pharmax.local

+

Machine Manager Details - vcenter-01v.pharmax.local

@@ -1125,10 +1123,10 @@ - +
TypeVMware vCenter
Host Namevcenter-01v.pharmax.local
Use Async--
Concurrent Mount Operations5
SSL ValidationYes
SSL Fingerprintf7:ab:40:59:9e:60:29:20:9d:d7:53:c1:a9:9d:04:ef:b3:c9:98:be:41:51:05:32:a0:b5:51:0d:7f:26:df:e8
SSL Fingerprint--
Table 82 - Machine Manager Details - vcenter-01v.pharmax.local

-

Machine Manager Details - vcenter-03v.pharmax.local

+

Machine Manager Details - vcenter-03v.pharmax.local

@@ -1144,14 +1142,14 @@
TypeVMware vCenter
Host Namevcenter-03v.pharmax.local
SSL Fingerprint--
Table 83 - Machine Manager Details - vcenter-03v.pharmax.local

-

1.6.5 Storage Overview

The following section details off location of templates for Horizon-APV-01V.

1.6.5.1 Storage Overview Packages

+

1.6.5 Storage Overview

The following section details off location of templates for Horizon-APV-01V.

1.6.5.1 Storage Overview Packages

Default Storage Location[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Default Storage Pathappvolumes/packages
Default Template Pathappvolumes/packages_templates
Table 84 - Packages - Horizon-APV-01V.pharmax.local

-

1.6.5.2 Storage Overview Writable Volumes

+

1.6.5.2 Storage Overview Writable Volumes

@@ -1160,26 +1158,26 @@
Default Storage Location[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Default Storage Pathappvolumes/writables
Template Pathappvolumes/writables_templates
Table 85 - Packages - Horizon-APV-01V.pharmax.local

-

1.6.6 App Volumes Manager Servers

The following section details all the App Volumes manager servers on Horizon-APV-01V.

1.6.6.1 App Volumes Manager Server Details - Horizon-APV-01V

+

1.6.6 App Volumes Manager Servers

The following section details all the App Volumes manager servers on Horizon-APV-01V.

1.6.6.1 App Volumes Manager Server Details - Horizon-APV-01V

- +
Manager NameVersionStatusFirst SeenLast Seen
HORIZON-APV-01V4.12.0.81RegisteredAug 25 2022Jan 02 2024
HORIZON-APV-01V4.15.0.687RegisteredAug 25 2022Nov 21 2024
Table 86 - App Volumes Manager Server Details - Horizon-APV-01V

-

Manager Servers Details - HORIZON-APV-01V

+

Manager Servers Details - HORIZON-APV-01V

- - + + - + - +
Product VersionApp Volumes 4, version 2309 (4.12.0.81)
Internal Version4.12.0.81
Product VersionApp Volumes 4, version 2410 (4.15.0.687)
Internal Version4.15.0.687
Domain NamePHARMAX
Computer NameHORIZON-APV-01V
Computer FQDNUnknown
Computer FQDNHorizon-APV-01V.pharmax.local
RegisteredYes
SecureYes
StatusRegistered
First Seen AtAug 25 2022
Last Seen AtJan 02 2024
Last Seen AtNov 21 2024
Table 87 - Manager Servers Details - HORIZON-APV-01V

-

1.6.7 Settings

The following section details app volumes settings for Horizon-APV-01V.

+

1.6.7 Settings

The following section details app volumes settings for Horizon-APV-01V.

@@ -1187,14 +1185,14 @@ - - - + + + - +
UI Session Timeout30
Non-Domain EntitiesNo
Writeable Volumes Regular Backups Interval7 - days
Writeable Volumes Storage LocationSSD-VM-HIGH-CAPACITY-PERF-MK
Writeable Volumes Storage Pathappvolumes/writables_backup
Disable Agent Session CookieNo
Disable Volume CacheNo
Disable Token AD QueryNo
Disable Agent Session Cookie--
Disable Volume Cache--
Disable Token AD Query--
Enable Volumes (2.x)No
Allow package delivery to any operating systemYes
Allow package delivery to any operating system--
VMDK Package ResiliencyNo
Join the VMware CEIPYes
Table 88 - Settings - Horizon-APV-01V.pharmax.local

-

+

\ No newline at end of file diff --git a/Samples/Sample VMware AppVolumes As Built Report.pdf b/Samples/Sample VMware AppVolumes As Built Report.pdf deleted file mode 100644 index 0a5b5aa..0000000 Binary files a/Samples/Sample VMware AppVolumes As Built Report.pdf and /dev/null differ diff --git a/Src/Private/Get-AbrAPPVolApplication.ps1 b/Src/Private/Get-AbrAPPVolApplication.ps1 index 6123b0a..c2370b4 100644 --- a/Src/Private/Get-AbrAPPVolApplication.ps1 +++ b/Src/Private/Get-AbrAPPVolApplication.ps1 @@ -5,7 +5,7 @@ function Get-AbrAPPVolApplication { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAPPVolApplication { begin { Write-PScriboMessage "Products InfoLevel set at $($InfoLevel.AppVolumes.Products)." - Write-PscriboMessage "Collecting Products information." + Write-PScriboMessage "Collecting Products information." } process { @@ -31,12 +31,12 @@ function Get-AbrAPPVolApplication { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Products = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products" - } else {$Products = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products"} + } else { $Products = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products" } if ($Products.data) { - section -Style Heading3 'Application Summary' { + Section -Style Heading3 'Application Summary' { Paragraph "The following section provide a summary of the applications captured on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($Product in $Products.data) { try { @@ -44,9 +44,9 @@ function Get-AbrAPPVolApplication { if ($PSVersionTable.PSEdition -eq 'Core') { $ProductIDSource = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers" - } else {$ProductIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers"} + } else { $ProductIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers" } - $ProductPackage = $ProductIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + $ProductPackage = $ProductIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' } $inObj = [ordered] @{ 'Name' = $Product.Name @@ -58,9 +58,8 @@ function Get-AbrAPPVolApplication { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -73,34 +72,34 @@ function Get-AbrAPPVolApplication { } $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.Products -ge 2) { - section -Style Heading4 "Applications Details" { + Section -Style Heading4 "Applications Details" { foreach ($Product in $Products.data | Sort-Object -Property Name) { try { $ProductID = $Product.id if ($PSVersionTable.PSEdition -eq 'Core') { $ProductIDSource = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers" - } else {$ProductIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers"} + } else { $ProductIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/app_packages?include=app_markers" } if ($PSVersionTable.PSEdition -eq 'Core') { $ActiveDirectoryUsers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users" - } else {$ActiveDirectoryUsers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users"} + } else { $ActiveDirectoryUsers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users" } foreach ($ActiveDirectoryUser in $ActiveDirectoryUsers) { - if($ActiveDirectoryUser){ + if ($ActiveDirectoryUser) { if ($PSVersionTable.PSEdition -eq 'Core') { $UserDetails = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users/$($ActiveDirectoryUser.id)" - } else {$UserDetails = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users/$($ActiveDirectoryUser.id)"} - if($UserDetails.object_guid -like $Product.Owner_Guid){ + } else { $UserDetails = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users/$($ActiveDirectoryUser.id)" } + if ($UserDetails.object_guid -like $Product.Owner_Guid) { $OwnerName = $UserDetails.upn Break } } } - $ProductPackage = $ProductIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + $ProductPackage = $ProductIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' } if ($Product) { - section -Style Heading5 "Application Details - $($Product.Name)" { + Section -Style Heading5 "Application Details - $($Product.Name)" { $OutObj = @() $inObj = [ordered] @{ 'Name' = $Product.Name @@ -127,27 +126,27 @@ function Get-AbrAPPVolApplication { } $OutObj | Table @TableParams try { - $ProductPackages = $ProductIDSource.data + $ProductPackages = $ProductIDSource.data if ($ProductPackage) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Application Packages" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Application Packages" { $OutObj = @() foreach ($Package in $ProductPackages) { $inObj = [ordered] @{ 'Name' = $Package.Name 'Version' = $Package.Version 'Created' = Switch ($Package.created_at) { - $Null {'--'} - default {([DateTime]$Package.created_at).ToShortDateString()} + $Null { '--' } + default { ([DateTime]$Package.created_at).ToShortDateString() } } 'Mounted' = Switch ($Package.mounted_at) { - $Null {'--'} - default {([DateTime]$Package.mounted_at).ToShortDateString()} + $Null { '--' } + default { ([DateTime]$Package.mounted_at).ToShortDateString() } } 'Size' = $Package.size_human 'Current' = Switch ($Package.app_markers.name) { - $null {'No'} - 'CURRENT' {'Yes'} - default {'--'} + $null { 'No' } + 'CURRENT' { 'Yes' } + default { '--' } } } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) @@ -163,14 +162,14 @@ function Get-AbrAPPVolApplication { } $OutObj | Sort-Object -Property 'Version' -Descending | Table @TableParams try { - $ProductPackage = ($ProductIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'}).id + $ProductPackage = ($ProductIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' }).id if ($PSVersionTable.PSEdition -eq 'Core') { $ProductPrograms = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_packages/$ProductPackage/programs" - } else {$ProductPrograms = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_packages/$ProductPackage/programs"} + } else { $ProductPrograms = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_packages/$ProductPackage/programs" } if ($ProductPrograms.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Application Programs" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Application Programs" { $OutObj = @() foreach ($Program in $ProductPrograms.data) { $inObj = [ordered] @{ @@ -193,22 +192,22 @@ function Get-AbrAPPVolApplication { } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } try { $ProductID = $Product.id if ($PSVersionTable.PSEdition -eq 'Core') { $ProductAssignments = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/assignments?include=entities" - } else {$ProductAssignments = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/assignments?include=entities"} + } else { $ProductAssignments = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -ContentType 'application/json' -Uri "https://$AppVolServer/app_volumes/app_products/$ProductID/assignments?include=entities" } if ($ProductAssignments.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Application Assignment" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Application Assignment" { $OutObj = @() foreach ($ProductAssignment in $ProductAssignments.data) { try { @@ -217,9 +216,8 @@ function Get-AbrAPPVolApplication { 'Type' = $ProductAssignment.entities.entity_type } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -234,22 +232,21 @@ function Get-AbrAPPVolApplication { $OutObj | Sort-Object -Property 'Name' | Table @TableParams } } - } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - }catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolADDomain.ps1 b/Src/Private/Get-AbrAppVolADDomain.ps1 index 3f658e9..f23d9f5 100644 --- a/Src/Private/Get-AbrAppVolADDomain.ps1 +++ b/Src/Private/Get-AbrAppVolADDomain.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolADDomain { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolADDomain { begin { Write-PScriboMessage "ADDomains InfoLevel set at $($InfoLevel.AppVolumes.ADDomains)." - Write-PscriboMessage "Collecting Active Directory Domain information." + Write-PScriboMessage "Collecting Active Directory Domain information." } process { @@ -31,23 +31,22 @@ function Get-AbrAppVolADDomain { try { if ($PSVersionTable.PSEdition -eq 'Core') { $LDAPDomains = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains" - } else {$LDAPDomains = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains"} + } else { $LDAPDomains = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains" } if ($LDAPDomains) { - section -Style Heading3 "Active Directory Domain" { + Section -Style Heading3 "Active Directory Domain" { Paragraph "The following section details active directory doamins are used for authentication on $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() foreach ($LDAPDomain in $LDAPDomains.ldap_domains | Sort-Object -Property Domain) { - If($LDAPDomain.ldaps -like 'True'){ + If ($LDAPDomain.ldaps -like 'True') { $Security = 'LADPS' - }elseif($LDAPDomain.ldaps -like 'False' -and $LDAPDomain.ldap_tls -like 'False'){ + } elseif ($LDAPDomain.ldaps -like 'False' -and $LDAPDomain.ldap_tls -like 'False') { $Security = 'LADP' - } - elseif($LDAPDomain.ldap_tls -like 'True'){ + } elseif ($LDAPDomain.ldap_tls -like 'True') { $Security = 'LADPS over TLS' } - section -Style Heading4 "AD Domain Summary" { + Section -Style Heading4 "AD Domain Summary" { try { $inObj = [ordered] @{ 'Domain' = $LDAPDomain.domain @@ -69,14 +68,13 @@ function Get-AbrAppVolADDomain { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } if ($InfoLevel.AppVolumes.ADDomains -ge 2) { $OutObj = @() foreach ($LDAPDomain in $LDAPDomains.ldap_domains | Sort-Object -Property Domain) { - section -ExcludeFromTOC -Style NOTOCHeading5 "AD Domain Details - $($LDAPDomain.domain)" { + Section -ExcludeFromTOC -Style NOTOCHeading5 "AD Domain Details - $($LDAPDomain.domain)" { try { $inObj = [ordered] @{ 'Username' = $LDAPDomain.username @@ -88,10 +86,9 @@ function Get-AbrAppVolADDomain { 'Port' = $LDAPDomain.effective_port 'Created At' = $LDAPDomain.created_at 'Updated At' = $LDAPDomain.updated_at - } + } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - $TableParams = @{ Name = "AD Domain Details - $($LDAPDomain.domain)" List = $true @@ -101,9 +98,8 @@ function Get-AbrAppVolADDomain { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -114,9 +110,8 @@ function Get-AbrAppVolADDomain { } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolADGroup.ps1 b/Src/Private/Get-AbrAppVolADGroup.ps1 index d5522ef..75f9962 100644 --- a/Src/Private/Get-AbrAppVolADGroup.ps1 +++ b/Src/Private/Get-AbrAppVolADGroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolADGroup { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolADGroup { begin { Write-PScriboMessage "ADGroups InfoLevel set at $($InfoLevel.AppVolumes.ADGroups)." - Write-PscriboMessage "Collecting Active Directory Group information." + Write-PScriboMessage "Collecting Active Directory Group information." } process { @@ -31,9 +31,9 @@ function Get-AbrAppVolADGroup { try { if ($PSVersionTable.PSEdition -eq 'Core') { $ActiveDirectoryGroups = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/groups" - } else {$ActiveDirectoryGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/groups"} + } else { $ActiveDirectoryGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/groups" } if ($ActiveDirectoryGroups) { - section -Style Heading3 "Managed Groups" { + Section -Style Heading3 "Managed Groups" { Paragraph "The following section provide a summary of Groups that have assignments on $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() @@ -43,13 +43,12 @@ function Get-AbrAppVolADGroup { 'Group Name' = $ActiveDirectoryGroup.Name 'Writable' = $ActiveDirectoryGroup.writables 'Assignments' = $ActiveDirectoryGroup.application_assignment_count - 'Last Logon' = $ActiveDirectoryGroup.last_login_human.split()[0,1,2] -join ' ' + 'Last Logon' = $ActiveDirectoryGroup.last_login_human.split()[0, 1, 2] -join ' ' 'Status' = $ActiveDirectoryGroup.status } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -64,9 +63,8 @@ function Get-AbrAppVolADGroup { $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolADOU.ps1 b/Src/Private/Get-AbrAppVolADOU.ps1 index 45f597a..84571ec 100644 --- a/Src/Private/Get-AbrAppVolADOU.ps1 +++ b/Src/Private/Get-AbrAppVolADOU.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolADOU { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolADOU { begin { Write-PScriboMessage "ADOus InfoLevel set at $($InfoLevel.AppVolumes.ADOus)." - Write-PscriboMessage "Collecting Active Directory OU information." + Write-PScriboMessage "Collecting Active Directory OU information." } process { @@ -31,10 +31,10 @@ function Get-AbrAppVolADOU { try { if ($PSVersionTable.PSEdition -eq 'Core') { $ActiveDirectoryOUs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/org_units" - } else {$ActiveDirectoryOUs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/org_units"} + } else { $ActiveDirectoryOUs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/org_units" } if ($ActiveDirectoryOUs) { - section -Style Heading3 "Managed OU's" { + Section -Style Heading3 "Managed OU's" { Paragraph "The following section provide a summary of Organizational Units (OUs) that have assignments on $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() @@ -42,15 +42,14 @@ function Get-AbrAppVolADOU { try { $inObj = [ordered] @{ 'Name' = $ActiveDirectoryOU.Name - 'Last Logon' = $ActiveDirectoryOU.last_login_human.split()[0,1,2] -join ' ' + 'Last Logon' = $ActiveDirectoryOU.last_login_human.split()[0, 1, 2] -join ' ' 'Status' = $ActiveDirectoryOU.status 'Writable' = $ActiveDirectoryOU.writables 'Assignments' = $ActiveDirectoryOU.application_assignment_count } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -62,12 +61,11 @@ function Get-AbrAppVolADOU { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property Name | Table @TableParams + $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolADUser.ps1 b/Src/Private/Get-AbrAppVolADUser.ps1 index 537e2b8..b5c4f17 100644 --- a/Src/Private/Get-AbrAppVolADUser.ps1 +++ b/Src/Private/Get-AbrAppVolADUser.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolADUser { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolADUser { begin { Write-PScriboMessage "ADUsers InfoLevel set at $($InfoLevel.AppVolumes.ADUsers)." - Write-PscriboMessage "Collecting Active Directory User information." + Write-PScriboMessage "Collecting Active Directory User information." } process { @@ -31,18 +31,18 @@ function Get-AbrAppVolADUser { try { if ($PSVersionTable.PSEdition -eq 'Core') { $ActiveDirectoryUsers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users" - } else {$ActiveDirectoryUsers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users"} + } else { $ActiveDirectoryUsers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/users" } if ($ActiveDirectoryUsers) { - section -Style Heading3 "Managed Users" { + Section -Style Heading3 "Managed Users" { Paragraph "The following section provide a summary of Users who have logged-in to a managed computer or have assignments on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($ActiveDirectoryUser in $ActiveDirectoryUsers) { if ($ActiveDirectoryUser) { - if($ActiveDirectoryUser.last_login_human){ - $LastLogonUser = $ActiveDirectoryUser.last_login_human.split()[0,1,2] -join ' ' - }else{ + if ($ActiveDirectoryUser.last_login_human) { + $LastLogonUser = $ActiveDirectoryUser.last_login_human.split()[0, 1, 2] -join ' ' + } else { $LastLogonUser = "Never" } try { @@ -56,9 +56,8 @@ function Get-AbrAppVolADUser { 'Status' = $ActiveDirectoryUser.status } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -71,12 +70,11 @@ function Get-AbrAppVolADUser { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property upn | Table @TableParams + $OutObj | Sort-Object -Property upn | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolAdminRole.ps1 b/Src/Private/Get-AbrAppVolAdminRole.ps1 index 8877ccd..30eb1c1 100644 --- a/Src/Private/Get-AbrAppVolAdminRole.ps1 +++ b/Src/Private/Get-AbrAppVolAdminRole.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolAdminRole { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolAdminRole { begin { Write-PScriboMessage "AdminGroups InfoLevel set at $($InfoLevel.AppVolumes.AdminGroups)." - Write-PscriboMessage "Collecting Administrator Roles information." + Write-PScriboMessage "Collecting Administrator Roles information." } process { @@ -31,10 +31,10 @@ function Get-AbrAppVolAdminRole { try { if ($PSVersionTable.PSEdition -eq 'Core') { $AdminGroups = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/group_permissions" - } else {$AdminGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/group_permissions"} + } else { $AdminGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/group_permissions" } if ($AdminGroups) { - section -Style Heading3 "Administrator Roles" { + Section -Style Heading3 "Administrator Roles" { Paragraph "The following section details administrative rolls for $($AppVolServer.split('.')[0])." BlankLine @@ -48,9 +48,8 @@ function Get-AbrAppVolAdminRole { 'Created at' = ([DateTime]$AdminGroup.created_at).ToShortDateString() } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -62,12 +61,11 @@ function Get-AbrAppVolAdminRole { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property assignee_upn | Table @TableParams + $OutObj | Sort-Object -Property assignee_upn | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolAppstack.ps1 b/Src/Private/Get-AbrAppVolAppstack.ps1 index 9a45cc1..5ccdedb 100644 --- a/Src/Private/Get-AbrAppVolAppstack.ps1 +++ b/Src/Private/Get-AbrAppVolAppstack.ps1 @@ -5,7 +5,7 @@ function Get-AbrAPPVolAppstack { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAPPVolAppstack { begin { Write-PScriboMessage "AppStacks InfoLevel set at $($InfoLevel.AppVolumes.AppStacks)." - Write-PscriboMessage "Collecting AppStacks information." + Write-PScriboMessage "Collecting AppStacks information." } process { @@ -31,12 +31,12 @@ function Get-AbrAPPVolAppstack { try { if ($PSVersionTable.PSEdition -eq 'Core') { $AppStacks = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products" - } else {$AppStacks = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products"} + } else { $AppStacks = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products" } if ($AppStacks) { - section -Style Heading3 'AppStacks Summary' { + Section -Style Heading3 'AppStacks Summary' { Paragraph "The following section provide a summary of the AppStacks components on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($AppStack in $AppStacks.data) { try { @@ -44,9 +44,9 @@ function Get-AbrAPPVolAppstack { if ($PSVersionTable.PSEdition -eq 'Core') { $AppStackIDSource = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers" - } else {$AppStackIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers"} + } else { $AppStackIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers" } - $AppStackPackage = $AppStackIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + $AppStackPackage = $AppStackIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' } $inObj = [ordered] @{ 'Name' = $AppStack.Name @@ -58,9 +58,8 @@ function Get-AbrAPPVolAppstack { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -73,20 +72,20 @@ function Get-AbrAPPVolAppstack { } $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.AppStacks -ge 2) { - section -Style Heading4 "AppStacks Details" { + Section -Style Heading4 "AppStacks Details" { Paragraph "The following section details AppStacks configuration information on $($AppVolServer.split('.')[0])." - Blankline + BlankLine foreach ($AppStack in $AppStacks.data | Sort-Object -Property Name) { try { $AppStackID = $appstack.id if ($PSVersionTable.PSEdition -eq 'Core') { $AppStackIDSource = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers" - } else {$AppStackIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers"} + } else { $AppStackIDSource = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/app_packages?include=app_markers" } - $AppStackPackage = $AppStackIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + $AppStackPackage = $AppStackIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' } if ($AppStackPackage) { - section -Style Heading5 "$($AppStack.Name)" { + Section -Style Heading5 "$($AppStack.Name)" { $OutObj = @() $inObj = [ordered] @{ 'Name' = $AppStack.Name @@ -118,27 +117,27 @@ function Get-AbrAPPVolAppstack { } $OutObj | Table @TableParams try { - $AppStackPackages = $AppStackIDSource.data + $AppStackPackages = $AppStackIDSource.data if ($AppStackPackage) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Packages" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Packages" { $OutObj = @() foreach ($Package in $AppStackPackages) { $inObj = [ordered] @{ 'Name' = $Package.Name 'Version' = $Package.Version 'Created' = Switch ($Package.created_at) { - $Null {'--'} - default {([DateTime]$Package.created_at).ToShortDateString()} + $Null { '--' } + default { ([DateTime]$Package.created_at).ToShortDateString() } } 'Mounted' = Switch ($Package.mounted_at) { - $Null {'--'} - default {([DateTime]$Package.mounted_at).ToShortDateString()} + $Null { '--' } + default { ([DateTime]$Package.mounted_at).ToShortDateString() } } 'Size' = $Package.size_human 'Current' = Switch ($Package.app_markers.name) { - $null {'No'} - 'CURRENT' {'Yes'} - default {'--'} + $null { 'No' } + 'CURRENT' { 'Yes' } + default { '--' } } } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) @@ -154,14 +153,14 @@ function Get-AbrAPPVolAppstack { } $OutObj | Sort-Object -Property 'Version' -Descending | Table @TableParams try { - $AppStackPackage = ($AppStackIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'}).id + $AppStackPackage = ($AppStackIDSource.data | Where-Object { $_.app_markers.name -eq 'CURRENT' }).id if ($PSVersionTable.PSEdition -eq 'Core') { $AppStackPrograms = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$AppStackPackage/programs" - } else {$AppStackPrograms = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$AppStackPackage/programs"} + } else { $AppStackPrograms = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$AppStackPackage/programs" } if ($AppStackPrograms) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Programs" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Programs" { $OutObj = @() foreach ($Program in $AppStackPrograms.data) { $inObj = [ordered] @{ @@ -184,22 +183,22 @@ function Get-AbrAPPVolAppstack { } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } try { $AppStackID = $appstack.id if ($PSVersionTable.PSEdition -eq 'Core') { $AppStackAssignments = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/assignments?include=entities" - } else {$AppStackAssignments = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/assignments?include=entities"} + } else { $AppStackAssignments = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_products/$AppStackID/assignments?include=entities" } if ($AppStackAssignments) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Assignment" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Assignment" { $OutObj = @() foreach ($AppStackAssignment in $AppStackAssignments.data) { try { @@ -208,9 +207,8 @@ function Get-AbrAPPVolAppstack { 'Type' = $AppStackAssignment.entities.entity_type } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -225,22 +223,21 @@ function Get-AbrAPPVolAppstack { $OutObj | Sort-Object -Property 'Name' | Table @TableParams } } - } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - }catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolAssignment.ps1 b/Src/Private/Get-AbrAppVolAssignment.ps1 index 618afe4..c9bbd2d 100644 --- a/Src/Private/Get-AbrAppVolAssignment.ps1 +++ b/Src/Private/Get-AbrAppVolAssignment.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolAssignment { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolAssignment { begin { Write-PScriboMessage "Assignment InfoLevel set at $($InfoLevel.AppVolumes.Assignments)." - Write-PscriboMessage "Collecting Assignment information." + Write-PScriboMessage "Collecting Assignment information." } process { @@ -31,39 +31,37 @@ function Get-AbrAppVolAssignment { try { if ($PSVersionTable.PSEdition -eq 'Core') { $AssignmentsAll = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_assignments?include=entities,filters,app_package,app_marker&" - } else {$AssignmentsAll = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_assignments?include=entities,filters,app_package,app_marker&"} + } else { $AssignmentsAll = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_assignments?include=entities,filters,app_package,app_marker&" } if ($AssignmentsAll) { - section -Style Heading3 'Assignments Summary' { + Section -Style Heading3 'Assignments Summary' { Paragraph "The following section provide a summary of the assignments on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($AA in $AssignmentsAll.data | Sort-Object -Property Name) { - if($aa.app_marker){ + if ($aa.app_marker) { if ($PSVersionTable.PSEdition -eq 'Core') { $Programs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_marker.app_package.id)/programs?" - } else {$Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_marker.app_package.id)/programs?"} + } else { $Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_marker.app_package.id)/programs?" } $JoinedNames = ($Programs.data | ForEach-Object { $_.Name }) -join ', ' - }elseif ($aa.app_package) { + } elseif ($aa.app_package) { if ($PSVersionTable.PSEdition -eq 'Core') { $Programs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_package.id)/programs?" - } else {$Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_package.id)/programs?"} + } else { $Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($aa.app_package.id)/programs?" } $JoinedNames = ($Programs.data | ForEach-Object { $_.Name }) -join ', ' } # Filter Value - If(!([string]::IsNullOrWhitespace($AA.Filters.value))){ + If (!([string]::IsNullOrWhitespace($AA.Filters.value))) { $filters = $AA.Filters.value - } - else{ + } else { $filters = 'All' } #App Marker Value - If([string]::IsNullOrWhitespace($AA.app_marker_name)){ + If ([string]::IsNullOrWhitespace($AA.app_marker_name)) { $AppMarkerName = 'Package' - } - else{ + } else { $AppMarkerName = $AA.app_marker_name } @@ -78,9 +76,8 @@ function Get-AbrAppVolAssignment { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -94,9 +91,8 @@ function Get-AbrAppVolAssignment { $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolComputer.ps1 b/Src/Private/Get-AbrAppVolComputer.ps1 index 2fbb01d..91b2da8 100644 --- a/Src/Private/Get-AbrAppVolComputer.ps1 +++ b/Src/Private/Get-AbrAppVolComputer.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolComputer { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolComputer { begin { Write-PScriboMessage "Managed Computers InfoLevel set at $($InfoLevel.AppVolumes.Computers)." - Write-PscriboMessage "Collecting Managed Computers information." + Write-PScriboMessage "Collecting Managed Computers information." } process { @@ -31,12 +31,12 @@ function Get-AbrAppVolComputer { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Computers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/computers?deleted=hide&" - } else {$Computers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/computers?deleted=hide&"} + } else { $Computers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/computers?deleted=hide&" } if ($Computers) { - section -Style Heading3 "Managed Computers" { + Section -Style Heading3 "Managed Computers" { Paragraph "The following section provide a summary of computers with app volumes agent installed and registered to $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($Computer in $Computers) { try { @@ -52,9 +52,8 @@ function Get-AbrAppVolComputer { 'Status' = $Computer.Status } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -66,12 +65,11 @@ function Get-AbrAppVolComputer { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property upn | Table @TableParams + $OutObj | Sort-Object -Property upn | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolDatastore.ps1 b/Src/Private/Get-AbrAppVolDatastore.ps1 index 2cb1a54..de1fe3e 100644 --- a/Src/Private/Get-AbrAppVolDatastore.ps1 +++ b/Src/Private/Get-AbrAppVolDatastore.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolDatastore { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolDatastore { begin { Write-PScriboMessage "Storage InfoLevel set at $($InfoLevel.AppVolumes.Storage)." - Write-PscriboMessage "Collecting Active Directory Datastore information." + Write-PScriboMessage "Collecting Active Directory Datastore information." } process { @@ -31,30 +31,29 @@ function Get-AbrAppVolDatastore { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Datastores = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores" - } else {$Datastores = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores"} + } else { $Datastores = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores" } if ($Datastores) { - section -Style Heading3 "Storage Overview" { + Section -Style Heading3 "Storage Overview" { Paragraph "The following section details off location of templates for $($AppVolServer.split('.')[0])." BlankLine foreach ($DatastoreD in $Datastores.datastores) { try { - if($DatastoreD.uniq_string -eq $Datastores.data_disk_storage){ + if ($DatastoreD.uniq_string -eq $Datastores.data_disk_storage) { $DatastoreWritableStorage = $DatastoreD.name } - if($DatastoreD.uniq_string -eq $Datastores.package_storage){ + if ($DatastoreD.uniq_string -eq $Datastores.package_storage) { $DatastoreAppStorage = $DatastoreD.name } - if($DatastoreD.uniq_string -eq $Datastores.data_disk_backup_recurrent_path){ + if ($DatastoreD.uniq_string -eq $Datastores.data_disk_backup_recurrent_path) { $DatastoreAWriteableBackupRecurrentDatastore = $DatastoreD.name } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } try { - section -Style Heading4 "Storage Overview Packages" { + Section -Style Heading4 "Storage Overview Packages" { $OutObj = @() $inObj = [ordered] @{ 'Default Storage Location' = "[$($Datastores.Datacenter)] $DatastoreAppStorage" @@ -73,12 +72,11 @@ function Get-AbrAppVolDatastore { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { - section -Style Heading4 "Storage Overview Writable Volumes" { + Section -Style Heading4 "Storage Overview Writable Volumes" { $OutObj = @() $inObj = [ordered] @{ 'Default Storage Location' = "[$($Datastores.Datacenter)] $DatastoreWritableStorage" @@ -99,15 +97,13 @@ function Get-AbrAppVolDatastore { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolGeneral.ps1 b/Src/Private/Get-AbrAppVolGeneral.ps1 index d062431..97c21fd 100644 --- a/Src/Private/Get-AbrAppVolGeneral.ps1 +++ b/Src/Private/Get-AbrAppVolGeneral.ps1 @@ -5,7 +5,7 @@ function Get-AbrAPPVolGeneral { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAPPVolGeneral { begin { Write-PScriboMessage "General InfoLevel set at $($InfoLevel.AppVolumes.General)." - Write-PscriboMessage "Collecting General APPVolume information." + Write-PScriboMessage "Collecting General APPVolume information." } process { @@ -31,22 +31,22 @@ function Get-AbrAPPVolGeneral { try { if ($PSVersionTable.PSEdition -eq 'Core') { $GeneralAppInfo = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/version" - } else {$GeneralAppInfo = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/version"} + } else { $GeneralAppInfo = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/version" } if ($PSVersionTable.PSEdition -eq 'Core') { $LDAPDomains = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains" - } else {$LDAPDomains = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains"} + } else { $LDAPDomains = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains" } if ($PSVersionTable.PSEdition -eq 'Core') { $Managers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services" - } else {$Managers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services"} + } else { $Managers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services" } if ($PSVersionTable.PSEdition -eq 'Core') { $MachineManagers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers" - } else {$MachineManagers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers"} + } else { $MachineManagers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers" } if ($GeneralAppInfo -and $LDAPDomains -and $Managers) { $OutObj = @() - section -Style Heading2 "General Information" { + Section -Style Heading2 "General Information" { Paragraph "The following section provide a summary of common information on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $inObj = [ordered] @{ 'Name' = $AppVolServer 'Version' = $GeneralAppInfo.version @@ -69,9 +69,8 @@ function Get-AbrAPPVolGeneral { $OutObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolInstance.ps1 b/Src/Private/Get-AbrAppVolInstance.ps1 index 76ff1c2..7404822 100644 --- a/Src/Private/Get-AbrAppVolInstance.ps1 +++ b/Src/Private/Get-AbrAppVolInstance.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolInstance { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolInstance { begin { Write-PScriboMessage "Instance InfoLevel set at $($InfoLevel.AppVolumes.Instances)." - Write-PscriboMessage "Collecting Instance information." + Write-PScriboMessage "Collecting Instance information." } process { @@ -31,24 +31,23 @@ function Get-AbrAppVolInstance { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Instances = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/manager_instances/related?api_version=4050" - } else {$Instances = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/manager_instances/related?api_version=4050"} + } else { $Instances = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/manager_instances/related?api_version=4050" } if ($Instances.data) { - section -Style Heading3 "App Volumes Instances" { + Section -Style Heading3 "App Volumes Instances" { Paragraph "The following section provide a summary of App Volumes Instances for $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() foreach ($Instance in $Instances.data) { - if($Instance){ + if ($Instance) { # Calculate Sync Count $SyncCount = [int]$Instance.attributes.application_sync_count + [int]$Instance.attributes.package_sync_count + [int]$Instance.attributes.assignment_sync_count + [int]$Instance.attributes.marker_sync_count # Determine Instance Type - If($Instance.attributes.is_source -eq 'True'){ + If ($Instance.attributes.is_source -eq 'True') { $InstanceType = 'Source' - } - else{ + } else { $InstanceType = 'Target' } @@ -62,9 +61,8 @@ function Get-AbrAppVolInstance { 'Last Sync' = $Instance.attributes.synchronized_at_human } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -77,55 +75,54 @@ function Get-AbrAppVolInstance { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property Name | Table @TableParams + $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.Instances -ge 2) { #section -Style Heading4 "App Volumes Instance Details" { - foreach ($Instance in $Instances.data) { - try { - if ($Instance) { - section -Style Heading5 "Instance Details - $($Instance.attributes.Name)" { - $OutObj = @() - $inObj = [ordered] @{ - 'App Volumes Server Name' = $Instance.attributes.Name - 'Current Status' = $Instance.attributes.Status - 'FQDN' = $Instance.attributes.Host - 'Last Synchronized' = $Instance.attributes.synchronized_at_human - 'Synchronized Applications' = $Instance.attributes.application_sync_count - 'Synchronized Packages' = $Instance.attributes.package_sync_count - 'Synchronized Markers' = $Instance.attributes.marker_sync_count - 'Synchronized Assignments' = $Instance.attributes.assignment_sync_count - 'Application Package Import' = $Instance.attributes.sync_application_import - 'Package Symmetry Assurance' = $Instance.attributes.package_symmetry_assurance - 'Sync Markers' = $Instance.attributes.sync_markers - 'Sync Assignments' = $Instance.attributes.sync_assignments - } - $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) - - $TableParams = @{ - Name = "Instance Details - $($Instance.attributes.Name)" - List = $true - ColumnWidths = 50, 50 - } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" - } - $OutObj | Table @TableParams + foreach ($Instance in $Instances.data) { + try { + if ($Instance) { + Section -Style Heading5 "Instance Details - $($Instance.attributes.Name)" { + $OutObj = @() + $inObj = [ordered] @{ + 'App Volumes Server Name' = $Instance.attributes.Name + 'Current Status' = $Instance.attributes.Status + 'FQDN' = $Instance.attributes.Host + 'Last Synchronized' = $Instance.attributes.synchronized_at_human + 'Synchronized Applications' = $Instance.attributes.application_sync_count + 'Synchronized Packages' = $Instance.attributes.package_sync_count + 'Synchronized Markers' = $Instance.attributes.marker_sync_count + 'Synchronized Assignments' = $Instance.attributes.assignment_sync_count + 'Application Package Import' = $Instance.attributes.sync_application_import + 'Package Symmetry Assurance' = $Instance.attributes.package_symmetry_assurance + 'Sync Markers' = $Instance.attributes.sync_markers + 'Sync Assignments' = $Instance.attributes.sync_assignments } + $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + $TableParams = @{ + Name = "Instance Details - $($Instance.attributes.Name)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams } - }catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } + } #} } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolJob.ps1 b/Src/Private/Get-AbrAppVolJob.ps1 index eb55b20..9cae321 100644 --- a/Src/Private/Get-AbrAppVolJob.ps1 +++ b/Src/Private/Get-AbrAppVolJob.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolJob { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolJob { begin { Write-PScriboMessage "Jobs InfoLevel set at $($InfoLevel.AppVolumes.Jobs)." - Write-PscriboMessage "Collecting Job information." + Write-PScriboMessage "Collecting Job information." } process { @@ -31,10 +31,10 @@ function Get-AbrAppVolJob { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Jobs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/jobs" - } else {$Jobs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/jobs"} + } else { $Jobs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/jobs" } if ($Jobs) { - section -Style Heading3 "Scheduled Jobs" { + Section -Style Heading3 "Scheduled Jobs" { Paragraph "The following section provide a summary of scheduled jobs for $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() @@ -47,9 +47,8 @@ function Get-AbrAppVolJob { 'Last Run At' = $Job.last_run_at } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -61,12 +60,11 @@ function Get-AbrAppVolJob { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property Name | Table @TableParams + $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolLicense.ps1 b/Src/Private/Get-AbrAppVolLicense.ps1 index 28be209..4b2a4a3 100644 --- a/Src/Private/Get-AbrAppVolLicense.ps1 +++ b/Src/Private/Get-AbrAppVolLicense.ps1 @@ -5,7 +5,7 @@ function Get-AbrAPPVolLicense { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAPPVolLicense { begin { Write-PScriboMessage "License InfoLevel set at $($InfoLevel.AppVolumes.License)." - Write-PscriboMessage "Collecting License information." + Write-PScriboMessage "Collecting License information." } process { @@ -31,18 +31,17 @@ function Get-AbrAPPVolLicense { try { if ($PSVersionTable.PSEdition -eq 'Core') { $License = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/license" - } else {$License = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/license"} + } else { $License = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/license" } if ($License) { $OutObj = @() - section -Style Heading3 "License Information" { + Section -Style Heading3 "License Information" { Paragraph "The following section details license information for $($AppVolServer.split('.')[0])." BlankLine - Switch ($License.license.invalid) - { - 'True' {$LicenseInvalid = 'False' } - 'False' {$LicenseInvalid = 'True' } + Switch ($License.license.invalid) { + 'True' { $LicenseInvalid = 'False' } + 'False' { $LicenseInvalid = 'True' } } $inObj = [ordered] @{ 'Key Create Date' = $License.license.Keycreate @@ -85,9 +84,8 @@ function Get-AbrAPPVolLicense { $OutObj | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolMachine.ps1 b/Src/Private/Get-AbrAppVolMachine.ps1 index c35aa8c..e583701 100644 --- a/Src/Private/Get-AbrAppVolMachine.ps1 +++ b/Src/Private/Get-AbrAppVolMachine.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolMachine { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolMachine { begin { Write-PScriboMessage "Managed Machines InfoLevel set at $($InfoLevel.AppVolumes.Machines)." - Write-PscriboMessage "Collecting Managed Machines information." + Write-PScriboMessage "Collecting Managed Machines information." } process { @@ -31,14 +31,14 @@ function Get-AbrAppVolMachine { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Machines = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machines" - } else {$Machines = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machines"} + } else { $Machines = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machines" } if ($Machines) { - section -Style Heading3 "Managed Machines Summary" { + Section -Style Heading3 "Managed Machines Summary" { Paragraph "The following section provide a summary of managed machines on $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() - foreach ($Machines in ($Machines.machines | Where-Object {$_.Status -notlike 'Absent'})) { + foreach ($Machines in ($Machines.machines | Where-Object { $_.Status -notlike 'Absent' })) { try { $inObj = [ordered] @{ 'Name' = $Machines.name @@ -48,9 +48,8 @@ function Get-AbrAppVolMachine { 'Status' = $Machines.Status } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -62,12 +61,11 @@ function Get-AbrAppVolMachine { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property Name | Table @TableParams + $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolMachineManager.ps1 b/Src/Private/Get-AbrAppVolMachineManager.ps1 index fb0bedf..55e2cb8 100644 --- a/Src/Private/Get-AbrAppVolMachineManager.ps1 +++ b/Src/Private/Get-AbrAppVolMachineManager.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolMachineManager { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolMachineManager { begin { Write-PScriboMessage "MachineManagers InfoLevel set at $($InfoLevel.AppVolumes.MachineManagers)." - Write-PscriboMessage "Collecting Machine Managers information." + Write-PScriboMessage "Collecting Machine Managers information." } process { @@ -31,13 +31,13 @@ function Get-AbrAppVolMachineManager { try { if ($PSVersionTable.PSEdition -eq 'Core') { $MachineManagers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers" - } else {$MachineManagers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers"} + } else { $MachineManagers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers" } if ($MachineManagers) { - section -Style Heading3 "Machine Managers" { + Section -Style Heading3 "Machine Managers" { Paragraph "The following section provide a summary of machine managers for $($AppVolServer.split('.')[0])." BlankLine - section -Style Heading4 "Machine Manager Summary" { + Section -Style Heading4 "Machine Manager Summary" { $OutObj = @() foreach ($MachineManager in $MachineManagers.machine_managers | Sort-Object -Property Host) { try { @@ -47,9 +47,8 @@ function Get-AbrAppVolMachineManager { 'Type' = $MachineManager.type } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -67,12 +66,12 @@ function Get-AbrAppVolMachineManager { if ($InfoLevel.AppVolumes.MachineManagers -ge 2) { $OutObj = @() foreach ($MachineManager in $MachineManagers.machine_managers | Sort-Object -Property Host) { - section -ExcludeFromTOC -Style NOTOCHeading5 "Machine Manager Details - $($MachineManager.host)" { + Section -ExcludeFromTOC -Style NOTOCHeading5 "Machine Manager Details - $($MachineManager.host)" { if ($PSVersionTable.PSEdition -eq 'Core') { $MachineManagerDetail = (Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers/$($MachineManager.id)").machine_manager - } else {$MachineManagerDetail = (Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers/$($MachineManager.id)").machine_manager} - try { + } else { $MachineManagerDetail = (Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers/$($MachineManager.id)").machine_manager } + try { $inObj = [ordered] @{ 'Type' = $MachineManagerDetail.type 'Host Name' = $MachineManagerDetail.host @@ -99,9 +98,8 @@ function Get-AbrAppVolMachineManager { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -151,9 +149,8 @@ function Get-AbrAppVolMachineManager { } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolManager.ps1 b/Src/Private/Get-AbrAppVolManager.ps1 index 88d8293..5b47a45 100644 --- a/Src/Private/Get-AbrAppVolManager.ps1 +++ b/Src/Private/Get-AbrAppVolManager.ps1 @@ -5,7 +5,7 @@ function Get-AbrAPPVolManager { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAPPVolManager { begin { Write-PScriboMessage "Manager InfoLevel set at $($InfoLevel.AppVolumes.Managers)." - Write-PscriboMessage "Collecting Manager information." + Write-PScriboMessage "Collecting Manager information." } process { @@ -31,15 +31,15 @@ function Get-AbrAPPVolManager { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Managers = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services" - } else {$Managers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services"} + } else { $Managers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/manager_services" } if ($Managers) { $OutObj = @() - section -Style Heading3 "App Volumes Manager Servers" { + Section -Style Heading3 "App Volumes Manager Servers" { Paragraph "The following section details all the App Volumes manager servers on $($AppVolServer.split('.')[0])." BlankLine - foreach($Manager in $Managers.services | Sort-Object -Property Name) { - section -Style Heading4 "App Volumes Manager Server Details - $($AppVolServer.split('.')[0])" { + foreach ($Manager in $Managers.services | Sort-Object -Property Name) { + Section -Style Heading4 "App Volumes Manager Server Details - $($AppVolServer.split('.')[0])" { try { $inObj = [ordered] @{ 'Manager Name' = $Manager.name @@ -49,9 +49,8 @@ function Get-AbrAPPVolManager { 'Last Seen' = $Manager.last_seen_at_human } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } $TableParams = @{ @@ -68,9 +67,9 @@ function Get-AbrAPPVolManager { } if ($InfoLevel.AppVolumes.Managers -ge 2) { $OutObj = @() - foreach($Manager in $Managers.services | Sort-Object -Property Name) { - section -ExcludeFromTOC -Style NOTOCHeading5 "Manager Servers Details - $($Manager.name)" { - try { + foreach ($Manager in $Managers.services | Sort-Object -Property Name) { + Section -ExcludeFromTOC -Style NOTOCHeading5 "Manager Servers Details - $($Manager.name)" { + try { $inObj = [ordered] @{ 'Product Version' = $Manager.product_version 'Internal Version' = $Manager.internal_version @@ -94,9 +93,8 @@ function Get-AbrAPPVolManager { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -106,9 +104,8 @@ function Get-AbrAPPVolManager { } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolPackage.ps1 b/Src/Private/Get-AbrAppVolPackage.ps1 index 2ff4d77..c4cef87 100644 --- a/Src/Private/Get-AbrAppVolPackage.ps1 +++ b/Src/Private/Get-AbrAppVolPackage.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolPackage { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolPackage { begin { Write-PScriboMessage "Packages InfoLevel set at $($InfoLevel.AppVolumes.Packages)." - Write-PscriboMessage "Collecting Packages information." + Write-PScriboMessage "Collecting Packages information." } process { @@ -31,12 +31,12 @@ function Get-AbrAppVolPackage { try { if ($PSVersionTable.PSEdition -eq 'Core') { $AppPackages = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages?include=app_markers%2Clifecycle_stage%2Cbase_app_package%2Capp_product" - } else {$AppPackages = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_packages?include=app_markers%2Clifecycle_stage%2Cbase_app_package%2Capp_product"} + } else { $AppPackages = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_packages?include=app_markers%2Clifecycle_stage%2Cbase_app_package%2Capp_product" } if ($AppPackages.data) { - section -Style Heading3 'Packages Summary' { + Section -Style Heading3 'Packages Summary' { Paragraph "The following section provide a summary of the packages on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($AppPackage in $AppPackages.data) { try { @@ -53,9 +53,8 @@ function Get-AbrAppVolPackage { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -69,11 +68,11 @@ function Get-AbrAppVolPackage { $OutObj | Sort-Object -Property Name | Table @TableParams #> if ($InfoLevel.AppVolumes.Packages -ge 2) { - section -Style Heading4 "Packages Details" { + Section -Style Heading4 "Packages Details" { foreach ($AppPackage in $AppPackages.data | Sort-Object -Property Name) { try { if ($AppPackage) { - section -Style Heading5 "Package - $($AppPackage.Name)" { + Section -Style Heading5 "Package - $($AppPackage.Name)" { $OutObj = @() $inObj = [ordered] @{ 'App Name' = $AppPackage.Name @@ -117,25 +116,25 @@ function Get-AbrAppVolPackage { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Programs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/programs" - } else {$Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/programs"} - Write-PscriboMessage "Working on Programs for $($AppPackage.Name)." + } else { $Programs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/programs" } + Write-PScriboMessage "Working on Programs for $($AppPackage.Name)." if ($Programs.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Programs" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Programs" { $OutObj = @() foreach ($Program in $Programs.data) { - if($Program) { - Write-PscriboMessage "Gathering on Program info for $($Program.name)." + if ($Program) { + Write-PScriboMessage "Gathering on Program info for $($Program.name)." $inObj = [ordered] @{ 'Program Name' = $Program.name 'Build #' = $Program.version 'Publisher Name' = $Program.publisher 'Program Created' = Switch ($Program.created_At_Human) { - $Null {'--'} - default {$Program.created_At_Human} + $Null { '--' } + default { $Program.created_At_Human } } 'Program Updated' = Switch ($Program.Updated_At_Human) { - $Null {'--'} - default {$Program.Updated_At_Human} + $Null { '--' } + default { $Program.Updated_At_Human } } } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) @@ -154,21 +153,21 @@ function Get-AbrAppVolPackage { } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if ($PSVersionTable.PSEdition -eq 'Core') { $OperatingSystems = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/operating_systems" - } else {$OperatingSystems = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/operating_systems"} + } else { $OperatingSystems = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/operating_systems" } if ($OperatingSystems.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Operating Systems" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Operating Systems" { $OutObj = @() foreach ($OS in $OperatingSystems.data) { - if($OS){ + if ($OS) { $inObj = [ordered] @{ 'OS Name' = $OS.Name - 'OS Version' = $($($OS.major_version)+'.'+$($OS.minor_version)) + 'OS Version' = $($($OS.major_version) + '.' + $($OS.minor_version)) 'Processor Arch' = $OS.proc_arch 'Type' = $OS.product_type_human } @@ -188,15 +187,15 @@ function Get-AbrAppVolPackage { } } } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if ($PSVersionTable.PSEdition -eq 'Core') { $StorageLocations = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/files?" - } else {$StorageLocations = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/files?"} + } else { $StorageLocations = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/files?" } if ($StorageLocations.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Storage Locations for - $($AppPackage.Name)" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Storage Locations for - $($AppPackage.Name)" { $OutObj = @() foreach ($StorageLocation in $StorageLocations.data) { try { @@ -208,9 +207,8 @@ function Get-AbrAppVolPackage { 'Created' = $StorageLocation.created_At_Human } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -225,27 +223,27 @@ function Get-AbrAppVolPackage { $OutObj | Sort-Object -Property 'Location' | Table @TableParams } } - } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } try { if ($PSVersionTable.PSEdition -eq 'Core') { $AppLinks = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/app_links?" - } else {$AppLinks = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/app_links?"} + } else { $AppLinks = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_packages/$($AppPackage.id)/app_links?" } if ($AppLinks.data) { - section -ExcludeFromTOC -Style NOTOCHeading6 "Application links for - $($AppPackage.Name)" { + Section -ExcludeFromTOC -Style NOTOCHeading6 "Application links for - $($AppPackage.Name)" { $OutObj = @() foreach ($AppLink in $AppLinks.data) { - If($AppLink){ - if($AppLink.name){ + If ($AppLink) { + if ($AppLink.name) { $ApplinkName = $AppLink.name - }else{ + } else { $ApplinkName = '--' } - if($AppLink.entry_point){ + if ($AppLink.entry_point) { $ApplinkEntryPoint = $AppLink.entry_point - }else{ + } else { $ApplinkEntryPoint = '--' } @@ -255,9 +253,8 @@ function Get-AbrAppVolPackage { 'Entry Point' = $ApplinkEntryPoint } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } @@ -273,22 +270,21 @@ function Get-AbrAppVolPackage { $OutObj | Sort-Object -Property 'App Link Name' | Table @TableParams } } - } catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - }catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolProgram.ps1 b/Src/Private/Get-AbrAppVolProgram.ps1 index 229c59f..305ae24 100644 --- a/Src/Private/Get-AbrAppVolProgram.ps1 +++ b/Src/Private/Get-AbrAppVolProgram.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolProgram { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolProgram { begin { Write-PScriboMessage "Programs InfoLevel set at $($InfoLevel.AppVolumes.Programs)." - Write-PscriboMessage "Collecting Programs information." + Write-PScriboMessage "Collecting Programs information." } process { @@ -31,12 +31,12 @@ function Get-AbrAppVolProgram { try { if ($PSVersionTable.PSEdition -eq 'Core') { $ProgramsAll = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/app_programs" - } else {$ProgramsAll = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_programs"} + } else { $ProgramsAll = Invoke-RestMethod -WebSession $SourceServerSession -Method get -Uri "https://$AppVolServer/app_volumes/app_programs" } if ($ProgramsAll) { - section -Style Heading3 'Programs Summary' { + Section -Style Heading3 'Programs Summary' { Paragraph "The following section provide a summary of the programs on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($PA in $ProgramsAll.data) { try { @@ -48,9 +48,8 @@ function Get-AbrAppVolProgram { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ @@ -63,11 +62,11 @@ function Get-AbrAppVolProgram { } $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.Programs -ge 2) { - section -Style Heading4 "Program Details" { + Section -Style Heading4 "Program Details" { foreach ($PA in $ProgramsAll.data | Sort-Object -Property Name) { try { if ($PA) { - section -Style Heading5 "Program Details - $($PA.Name)" { + Section -Style Heading5 "Program Details - $($PA.Name)" { $OutObj = @() $inObj = [ordered] @{ 'Name' = $PA.Name @@ -93,17 +92,16 @@ function Get-AbrAppVolProgram { } } - }catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolSetting.ps1 b/Src/Private/Get-AbrAppVolSetting.ps1 index 791c610..8c271ab 100644 --- a/Src/Private/Get-AbrAppVolSetting.ps1 +++ b/Src/Private/Get-AbrAppVolSetting.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolSetting { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolSetting { begin { Write-PScriboMessage "Settings InfoLevel set at $($InfoLevel.AppVolumes.Settings)." - Write-PscriboMessage "Collecting Active Directory Domain information." + Write-PScriboMessage "Collecting Active Directory Domain information." } process { @@ -40,66 +40,66 @@ function Get-AbrAppVolSetting { if ($Settings) { - section -Style Heading3 "Settings" { + Section -Style Heading3 "Settings" { Paragraph "The following section details app volumes settings for $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() try { - foreach($Setting in $Settings.data.setting){ - if($Setting.key -eq "ui_session_timeout"){ + foreach ($Setting in $Settings.data.setting) { + if ($Setting.key -eq "ui_session_timeout") { $UISessionTimeout = $Setting.value } #Regular Backups - if($Setting.key -eq "enable_data_disk_recurrent_backup"){ + if ($Setting.key -eq "enable_data_disk_recurrent_backup") { $RegularBackups = $Setting.value } #Regular Backups Days - if($Setting.key -eq "data_disk_backup_recurrent_interval"){ + if ($Setting.key -eq "data_disk_backup_recurrent_interval") { $RegularBackupsInterval = $Setting.value } # Backup Storage Location - if($Setting.key -eq "data_disk_backup_recurrent_datastore"){ + if ($Setting.key -eq "data_disk_backup_recurrent_datastore") { $StorageLocation = $Setting.value } # Backup Storage Path - if($Setting.key -eq "data_disk_backup_recurrent_path"){ + if ($Setting.key -eq "data_disk_backup_recurrent_path") { $StoragePath = $Setting.value } # Backup Storage Path - if($Setting.key -eq "manage_sec"){ + if ($Setting.key -eq "manage_sec") { $NonDomainEntities = $Setting.value } } - foreach ($Datastore in $Datastores.datastores){ - if($Datastore.uniq_string -eq $StorageLocation){ + foreach ($Datastore in $Datastores.datastores) { + if ($Datastore.uniq_string -eq $StorageLocation) { $DatastoreBackupName = $Datastore.name } } - foreach($Setting in $Settings.data.advanced_setting){ + foreach ($Setting in $Settings.data.advanced_setting) { # Disable Volume Cache - if($Setting.key -eq "DISABLE_SNAPVOL_CACHE"){ + if ($Setting.key -eq "DISABLE_SNAPVOL_CACHE") { $DisableSnapVolumeCache = $Setting.value } # Disable Token AD Query - if($Setting.key -eq "DISABLE_TOKEN_AD_QUERY"){ + if ($Setting.key -eq "DISABLE_TOKEN_AD_QUERY") { $DisableTokenADQuery = $Setting.value } - if($Setting.key -eq "JOIN_CEIP"){ + if ($Setting.key -eq "JOIN_CEIP") { $DisableJOINCEIP = $Setting.value } - if($Setting.key -eq "ENABLE_ALLOW_PACKAGE_DELIVERY_TO_ANY_OS"){ + if ($Setting.key -eq "ENABLE_ALLOW_PACKAGE_DELIVERY_TO_ANY_OS") { $DisableDELIVERYTOANYOS = $Setting.value } - if($Setting.key -eq "ENABLE_2X_VOLUMES"){ + if ($Setting.key -eq "ENABLE_2X_VOLUMES") { $Disable2XVolumes = $Setting.value } - if($Setting.key -eq "disable_agent_session_cookie"){ + if ($Setting.key -eq "disable_agent_session_cookie") { $DisableAgentSessionCookie = $Setting.value } - if($Setting.key -eq "ENABLE_PARTIAL_RECONFIG"){ + if ($Setting.key -eq "ENABLE_PARTIAL_RECONFIG") { $VMDKPackageResiliency = $Setting.value } } @@ -130,15 +130,13 @@ function Get-AbrAppVolSetting { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Table @TableParams - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolStorage.ps1 b/Src/Private/Get-AbrAppVolStorage.ps1 index c03f0fc..4b4b030 100644 --- a/Src/Private/Get-AbrAppVolStorage.ps1 +++ b/Src/Private/Get-AbrAppVolStorage.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolStorage { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolStorage { begin { Write-PScriboMessage "Storage Locations InfoLevel set at $($InfoLevel.AppVolumes.StorageLocations)." - Write-PscriboMessage "Collecting storage location information." + Write-PScriboMessage "Collecting storage location information." } process { @@ -31,10 +31,10 @@ function Get-AbrAppVolStorage { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Storages = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storages" - } else {$Storages = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storages"} + } else { $Storages = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storages" } if ($Storages) { - section -Style Heading3 "Managed Storage Locations" { + Section -Style Heading3 "Managed Storage Locations" { Paragraph "The following section details configured storage options for Packages, Writable Volumes, and AppStacks on $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() @@ -50,9 +50,8 @@ function Get-AbrAppVolStorage { } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -68,53 +67,51 @@ function Get-AbrAppVolStorage { if ($InfoLevel.AppVolumes.StorageLocations -ge 2) { if ($PSVersionTable.PSEdition -eq 'Core') { $Datastores = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores" - } else {$Datastores = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores"} + } else { $Datastores = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores" } if ($Datastores) { #section -Style Heading4 "Storage Details" { - $OutObj = @() - foreach ($Datastore in $Datastores.datastores | Sort-Object -Property Name) { - section -ExcludeFromTOC -Style NOTOCHeading5 "Storage Details - $($DataStore.name)" { - try { - $inObj = [ordered] @{ - 'Display Name' = $DataStore.display_Name - 'Machine Manager' = $DataStore.Host - 'Category' = $DataStore.Catagory - 'Datacenter ' = $DataStore.datacenter - 'Notes' = $DataStore.note - 'Description' = $DataStore.description - 'Accessible' = $DataStore.accessible - 'Template Storage' = $DataStore.template_storage - 'Host Username' = $DataStore.host_username - 'Free Space' = ConvertTo-FileSizeString $DataStore.free_space - 'Capacity' = ConvertTo-FileSizeString $DataStore.capacity - } - $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + $OutObj = @() + foreach ($Datastore in $Datastores.datastores | Sort-Object -Property Name) { + Section -ExcludeFromTOC -Style NOTOCHeading5 "Storage Details - $($DataStore.name)" { + try { + $inObj = [ordered] @{ + 'Display Name' = $DataStore.display_Name + 'Machine Manager' = $DataStore.Host + 'Category' = $DataStore.Catagory + 'Datacenter ' = $DataStore.datacenter + 'Notes' = $DataStore.note + 'Description' = $DataStore.description + 'Accessible' = $DataStore.accessible + 'Template Storage' = $DataStore.template_storage + 'Host Username' = $DataStore.host_username + 'Free Space' = ConvertTo-FileSizeString $DataStore.free_space + 'Capacity' = ConvertTo-FileSizeString $DataStore.capacity + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - $TableParams = @{ - Name = "Storage Details - $($DataStore.name)" - List = $true - ColumnWidths = 50, 50 - } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" - } - $OutObj | Table @TableParams + $TableParams = @{ + Name = "Storage Details - $($DataStore.name)" + List = $true + ColumnWidths = 50, 50 } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" } + $OutObj | Table @TableParams + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } + } #} } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolStorageGroup.ps1 b/Src/Private/Get-AbrAppVolStorageGroup.ps1 index ad31866..e7addd3 100644 --- a/Src/Private/Get-AbrAppVolStorageGroup.ps1 +++ b/Src/Private/Get-AbrAppVolStorageGroup.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolStorageGroup { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolStorageGroup { begin { Write-PScriboMessage "StorageGroups InfoLevel set at $($InfoLevel.AppVolumes.StorageGroups)." - Write-PscriboMessage "Collecting App Volumes Datastore information." + Write-PScriboMessage "Collecting App Volumes Datastore information." } process { @@ -31,87 +31,84 @@ function Get-AbrAppVolStorageGroup { try { if ($PSVersionTable.PSEdition -eq 'Core') { $StorageGroups = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups" - } else {$StorageGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups"} + } else { $StorageGroups = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups" } if ($StorageGroups) { - section -Style Heading3 "Storage Groups" { + Section -Style Heading3 "Storage Groups" { Paragraph "The following section details storage group used to define groups of storage locations so they can function as one storage entity for $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() foreach ($StorageGroup in $StorageGroups.storage_groups | Sort-Object -Property Name) { - section -Style Heading4 "Storage Group - $($StorageGroup.name)" { - try { - $inObj = [ordered] @{ - 'Distribution Strategy' = $StorageGroup.strategy - 'Template Storage' = $StorageGroup.template_storage - 'Members Count' = $StorageGroup.members - 'Member Name Prefix' = $StorageGroup.member_prefix - 'Space Used' = $StorageGroup.space_used - 'Total Space' = $StorageGroup.space_total - 'Creation Date' = $StorageGroup.created_at_human - 'Auto Import' = $StorageGroup.auto_import - 'Auto Replicate' = $StorageGroup.auto_replicate - 'Last Replicated Date' = $StorageGroup.replicated_at_human - 'Last Imported Date' = $StorageGroup.imported_at_human - 'Last Curated Date' = $StorageGroup.curated_at_human - } - $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) - - $TableParams = @{ - Name = "Storage Group - $($StorageGroup.name)" - List = $true - ColumnWidths = 50, 50 - } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" - } - $OutObj | Table @TableParams - if ($PSVersionTable.PSEdition -eq 'Core') { - $StorageGroupDetails = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups/$($StorageGroup.id)" - } else {$StorageGroupDetails = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups/$($StorageGroup.id)"} + Section -Style Heading4 "Storage Group - $($StorageGroup.name)" { + try { + $inObj = [ordered] @{ + 'Distribution Strategy' = $StorageGroup.strategy + 'Template Storage' = $StorageGroup.template_storage + 'Members Count' = $StorageGroup.members + 'Member Name Prefix' = $StorageGroup.member_prefix + 'Space Used' = $StorageGroup.space_used + 'Total Space' = $StorageGroup.space_total + 'Creation Date' = $StorageGroup.created_at_human + 'Auto Import' = $StorageGroup.auto_import + 'Auto Replicate' = $StorageGroup.auto_replicate + 'Last Replicated Date' = $StorageGroup.replicated_at_human + 'Last Imported Date' = $StorageGroup.imported_at_human + 'Last Curated Date' = $StorageGroup.curated_at_human + } + $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) - if ($StorageGroupDetails) { - section -ExcludeFromTOC -Style NOTOCHeading4 'Datastore Members' { - $OutObj = @() - foreach ($StorageGroupDetail in $StorageGroupDetails.storage_group.storages) { - try { - $inObj = [ordered] @{ - 'Name' = $StorageGroupDetail.Name - 'DataCenter' = $StorageGroupDetail.datacenter - 'Space Used' = $StorageGroupDetail.space_used - 'Space Total' = $StorageGroupDetail.space_total - 'Is Deleted' = $StorageGroupDetail.deleted - } - $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + $TableParams = @{ + Name = "Storage Group - $($StorageGroup.name)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + if ($PSVersionTable.PSEdition -eq 'Core') { + $StorageGroupDetails = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups/$($StorageGroup.id)" + } else { $StorageGroupDetails = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storage_groups/$($StorageGroup.id)" } + if ($StorageGroupDetails) { + Section -ExcludeFromTOC -Style NOTOCHeading4 'Datastore Members' { + $OutObj = @() + foreach ($StorageGroupDetail in $StorageGroupDetails.storage_group.storages) { + try { + $inObj = [ordered] @{ + 'Name' = $StorageGroupDetail.Name + 'DataCenter' = $StorageGroupDetail.datacenter + 'Space Used' = $StorageGroupDetail.space_used + 'Space Total' = $StorageGroupDetail.space_total + 'Is Deleted' = $StorageGroupDetail.deleted } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } - } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - $TableParams = @{ - Name = "Datastore Members - $($StorageGroup.name)" - List = $false - ColumnWidths = 30, 30, 14, 13, 13 - } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } - $OutObj| Sort-Object -Property Name | Table @TableParams } + + $TableParams = @{ + Name = "Datastore Members - $($StorageGroup.name)" + List = $false + ColumnWidths = 30, 30, 14, 13, 13 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property Name | Table @TableParams } } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } + } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolTSArchive.ps1 b/Src/Private/Get-AbrAppVolTSArchive.ps1 index a7045ad..93d980b 100644 --- a/Src/Private/Get-AbrAppVolTSArchive.ps1 +++ b/Src/Private/Get-AbrAppVolTSArchive.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolTSArchive { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolTSArchive { begin { Write-PScriboMessage "Troubleshooting Archive InfoLevel set at $($InfoLevel.AppVolumes.Troubleshooting)." - Write-PscriboMessage "Troubleshooting Archive information." + Write-PScriboMessage "Troubleshooting Archive information." } process { @@ -31,10 +31,10 @@ function Get-AbrAppVolTSArchive { try { if ($PSVersionTable.PSEdition -eq 'Core') { $TSAs = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/troubleshooting_archive?" - } else {$TSAs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/troubleshooting_archive?"} + } else { $TSAs = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/troubleshooting_archive?" } if ($TSAs.trblarchive.data) { - section -Style Heading3 "Troubleshooting Archives" { + Section -Style Heading3 "Troubleshooting Archives" { Paragraph "The following section provide a summary of troubleshooting archives for $($AppVolServer.split('.')[0])." BlankLine $OutObj = @() @@ -46,9 +46,8 @@ function Get-AbrAppVolTSArchive { 'Size' = $TSA.Size } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -60,12 +59,11 @@ function Get-AbrAppVolTSArchive { if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } - $OutObj| Sort-Object -Property Name | Table @TableParams + $OutObj | Sort-Object -Property Name | Table @TableParams } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-AbrAppVolWritable.ps1 b/Src/Private/Get-AbrAppVolWritable.ps1 index 2524f5b..e5c3023 100644 --- a/Src/Private/Get-AbrAppVolWritable.ps1 +++ b/Src/Private/Get-AbrAppVolWritable.ps1 @@ -5,7 +5,7 @@ function Get-AbrAppVolWritable { .DESCRIPTION Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -23,7 +23,7 @@ function Get-AbrAppVolWritable { begin { Write-PScriboMessage "Writables InfoLevel set at $($InfoLevel.AppVolumes.Writables)." - Write-PscriboMessage "Collecting Writables information." + Write-PScriboMessage "Collecting Writables information." } process { @@ -31,12 +31,12 @@ function Get-AbrAppVolWritable { try { if ($PSVersionTable.PSEdition -eq 'Core') { $Writables = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/writables" - } else {$Writables = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/writables"} + } else { $Writables = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/writables" } if ($Writables) { - section -Style Heading3 "Writable Volumes" { + Section -Style Heading3 "Writable Volumes" { Paragraph "The following section provide a summary of writable volumes on $($AppVolServer.split('.')[0])." - Blankline + BlankLine $OutObj = @() foreach ($Writable in $Writables.data) { try { @@ -48,9 +48,8 @@ function Get-AbrAppVolWritable { 'State' = $Writable.attached } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } @@ -64,10 +63,10 @@ function Get-AbrAppVolWritable { } $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.Writables -ge 2) { - section -Style Heading4 "Writable Volume Details" { + Section -Style Heading4 "Writable Volume Details" { foreach ($Writable in $Writables.data | Sort-Object -Property Name) { try { - section -ExcludeFromTOC -Style NOTOCHeading5 "Writable Volume Details for - $($Writable.Name)" { + Section -ExcludeFromTOC -Style NOTOCHeading5 "Writable Volume Details for - $($Writable.Name)" { $inObj = [ordered] @{ 'Owner' = $Writable.name 'Owner Type' = $Writable.Owner_Type @@ -105,18 +104,16 @@ function Get-AbrAppVolWritable { } $OutObj | Table @TableParams } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } } } } - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + } catch { + Write-PScriboMessage -IsWarning $_.Exception.Message } } } diff --git a/Src/Private/Get-RequiredModule.ps1 b/Src/Private/Get-RequiredModule.ps1 index 0a1dbf0..0b4ad1a 100644 --- a/Src/Private/Get-RequiredModule.ps1 +++ b/Src/Private/Get-RequiredModule.ps1 @@ -25,7 +25,7 @@ function Get-RequiredModule { # Check if the required version of VMware PowerCLI is installed $RequiredModule = Get-Module -ListAvailable -Name $Name | Sort-Object -Property Version -Descending | Select-Object -First 1 $ModuleVersion = "$($RequiredModule.Version.Major)" + "." + "$($RequiredModule.Version.Minor)" - if ($ModuleVersion -eq ".") { + if ($ModuleVersion -eq ".") { throw "VMware PowerCLI $Version or higher is required to run the VMware AppVolumes As Built Report. Run 'Install-Module -Name $Name -MinimumVersion $Version' to install the required modules." } if ($ModuleVersion -lt $Version) { diff --git a/Src/Private/SharedUtilsFunctions.ps1 b/Src/Private/SharedUtilsFunctions.ps1 index 1ee91d3..fd302d9 100644 --- a/Src/Private/SharedUtilsFunctions.ps1 +++ b/Src/Private/SharedUtilsFunctions.ps1 @@ -1,7 +1,7 @@ function ConvertTo-TextYN { <# .SYNOPSIS - Used by As Built Report to convert true or false automatically to Yes or No. + Used by As Built Report to convert true or false automatically to Yes or No. .DESCRIPTION .NOTES @@ -15,25 +15,23 @@ function ConvertTo-TextYN { #> [CmdletBinding()] [OutputType([String])] - Param - ( + Param ( [Parameter ( Position = 0, Mandatory)] - [AllowEmptyString()] - [string] - $TEXT - ) + [AllowEmptyString()] + [string] $TEXT + ) - switch ($TEXT) - { - "" {"--"} - $Null {"--"} - "True" {"Yes"; break} - "False" {"No"; break} - default {$TEXT} - } - } # end + switch ($TEXT) { + "" { "--"; break } + " " { "--"; break } + $Null { "--"; break } + "True" { "Yes"; break } + "False" { "No"; break } + default { $TEXT } + } +} # end function Get-UnixDate ($UnixDate) { <# .SYNOPSIS @@ -163,27 +161,28 @@ function ConvertTo-FileSizeString { Used by As Built Report to convert bytes automatically to GB or TB based on size. .DESCRIPTION .NOTES - Version: 0.4.0 - Author: LEE DAILEY + Version: 0.1.0 + Author: Jonathan Colon .EXAMPLE .LINK #> [CmdletBinding()] [OutputType([String])] - Param ( + Param + ( [Parameter ( Position = 0, Mandatory)] - [int64] - $Size - ) - switch ($Size) { - {$_ -gt 1TB} {[string]::Format("{0:0} TB", $Size / 1TB); break} - {$_ -gt 1GB} {[string]::Format("{0:0} GB", $Size / 1GB); break} - {$_ -gt 1MB} {[string]::Format("{0:0} MB", $Size / 1MB); break} - {$_ -gt 1KB} {[string]::Format("{0:0} KB", $Size / 1KB); break} - {$_ -gt 0} {[string]::Format("{0} B", $Size); break} - {$_ -eq 0} {"0 KB"; break} - default {"0 KB"} + [int64] + $Size + ) + + $Unit = Switch ($Size) { + { $Size -gt 1PB } { 'PB' ; Break } + { $Size -gt 1TB } { 'TB' ; Break } + { $Size -gt 1GB } { 'GB' ; Break } + { $Size -gt 1Mb } { 'MB' ; Break } + Default { 'KB' } } -} # end >> function Format-FileSize \ No newline at end of file + return "$([math]::Round(($Size / $("1" + $Unit)), 0)) $Unit" +} # end \ No newline at end of file diff --git a/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 b/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 index ad81a8c..d2abab1 100644 --- a/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 @@ -1,11 +1,11 @@ -function Invoke-AsBuiltReport.VMware.AppVolumes { +function Invoke-AsBuiltReport.VMware.AppVolumes { <# .SYNOPSIS PowerShell script which documents the configuration of VMware AppVolumes in Word/HTML/XML/Text formats .DESCRIPTION Documents the configuration of VMware AppVolumes in Word/HTML/XML/Text formats using PScribo. .NOTES - Version: 1.1.0 + Version: 1.2.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -25,9 +25,14 @@ [String] $StylePath ) + if ($psISE) { + Write-Error -Message "You cannot run this script inside the PowerShell ISE. Please execute it from the PowerShell Command Window." + break + } + if ($PSVersionTable.PSEdition -ne 'Core') { - add-type @" + Add-Type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { @@ -38,17 +43,18 @@ } } "@ -[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy } [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 - Write-PScriboMessage -IsWarning "Please refer to the AsBuiltReport.VMware.AppVolumes github website for more detailed information about this project." - Write-PScriboMessage -IsWarning "Do not forget to update your report configuration file after each new version release." - Write-PScriboMessage -IsWarning "Documentation: https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes" - Write-PScriboMessage -IsWarning "Issues or bug reporting: https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues" + Write-PScriboMessage -Plugin "Module" -IsWarning "Please refer to the AsBuiltReport.VMware.AppVolumes github website for more detailed information about this project." + Write-PScriboMessage -Plugin "Module" -IsWarning "Do not forget to update your report configuration file after each new version release." + Write-PScriboMessage -Plugin "Module" -IsWarning "Documentation: https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes" + Write-PScriboMessage -Plugin "Module" -IsWarning "Issues or bug reporting: https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues" + Write-PScriboMessage -Plugin "Module" -IsWarning "This project is community maintained and has no sponsorship from VMware/Omnissa, its employees or any of its affiliates." # Check the current AsBuiltReport.VMware.AppVolumes installed module Try { @@ -63,8 +69,8 @@ } } } Catch { - Write-PscriboMessage -IsWarning $_.Exception.Message - } + Write-PScriboMessage -IsWarning $_.Exception.Message + } # Check if the required version of VMware PowerCLI is installed Get-RequiredModule -Name 'VMware.PowerCLI' -Version '12.7' @@ -87,7 +93,7 @@ Try { if ($PSVersionTable.PSEdition -eq 'Core') { $AppVolServerRest = Invoke-RestMethod -SkipCertificateCheck -SessionVariable SourceServerSession -Method Post -Uri "https://$AppVolServer/cv_api/sessions" -Body $AppVolRestCreds - } else {$AppVolServerRest = Invoke-RestMethod -SessionVariable SourceServerSession -Method Post -Uri "https://$AppVolServer/cv_api/sessions" -Body $AppVolRestCreds} + } else { $AppVolServerRest = Invoke-RestMethod -SessionVariable SourceServerSession -Method Post -Uri "https://$AppVolServer/cv_api/sessions" -Body $AppVolRestCreds } } Catch { Write-Error $_ } @@ -96,10 +102,10 @@ if ($AppVolServerRest.success -eq 'Ok') { # Generate report if connection to AppVolumes Manager General Information is successful if ($InfoLevel.AppVolumes.General -ge 1) { - section -Style Heading1 $($AppVolServer) { + Section -Style Heading1 $($AppVolServer) { Paragraph "The following section provides a summary of the implemented components on the VMware App Volumes infrastructure." Get-AbrAPPVolGeneral - section -Style Heading2 "Inventory" { + Section -Style Heading2 "Inventory" { Get-AbrAPPVolApplication Get-AbrAppVolPackage Get-AbrAppVolProgram @@ -107,23 +113,23 @@ Get-AbrAppVolWritable #Get-AbrAppVolAppstack } - section -Style Heading2 "Directory" { + Section -Style Heading2 "Directory" { Get-AbrAppVolADUser Get-AbrAppVolComputer Get-AbrAppVolADGroup Get-AbrAppVolADOU } - section -Style Heading2 "Infrastructure" { + Section -Style Heading2 "Infrastructure" { Get-AbrAppVolMachine Get-AbrAppVolStorage Get-AbrAppVolStorageGroup Get-AbrAppVolInstance } - section -Style Heading2 "Activity" { + Section -Style Heading2 "Activity" { Get-AbrAppVolJob Get-AbrAppVolTSArchive } - section -Style Heading2 "Configuration" { + Section -Style Heading2 "Configuration" { Get-AbrAppVolLicense Get-AbrAppVolADDomain Get-AbrAppVolAdminRole