diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 4de26c7..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..c2860e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,98 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +assignees: + - rebelinux +body: + - type: textarea + id: bug-description + attributes: + label: Bug description + description: >- + Please provide a clear and concise description of the bug. + validations: + required: true + - type: input + id: command-line-input + attributes: + label: Command-line input + description: >- + Please provide the command line input you are using to run AsBuiltReport. Please ensure that you obscure any sensitive information. + placeholder: New-AsBuiltReport -Report VMware.AppVolumes -Target xxxxxxx -Format Word,HTML -OutputFolderPath .\Documents\ -AsBuiltConfigFilePath .\AsBuiltReport\AsBuiltReport.json -ReportConfigFilePath .\AsBuiltReport\AsBuiltReport.VMware.AppVolumes.json -EnableHealthCheck -Verbose + validations: + required: true + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce + description: >- + Please provide a detailed list of steps to reproduce the bug. + placeholder: |- + 1. .... + 2. .... + 3. .... + validations: + required: true + - type: textarea + id: expected-behaviour + attributes: + label: Expected behaviour + description: >- + Please provide a clear and concise description of what you expected to happen. + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: >- + Please attach any screenshots to help explain the problem. Please ensure that you obscure any sensitive information. + placeholder: |- + Drag and drop screenshots here. + - type: textarea + id: operating-system + attributes: + label: Operating System + description: Please provide information about the operating system are you using. + placeholder: macOS Big Sur, Windows 10, Ubuntu 20.04 LTS + validations: + required: true + - type: textarea + id: powershell-version + attributes: + label: PowerShell Version + description: Please provide information about the PowerShell version you are using. Please provide the output from the following PowerShell command `$PSVersionTable`. + placeholder: $PSVersionTable + validations: + required: true + - type: textarea + id: powershell-modules + attributes: + label: PowerShell Modules + description: Please provide information about the PowerShell modules are you using. Please provide the output from the following PowerShell command `Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.VMware.AppVolumes";"PScribo") | Select Name, Version` + placeholder: Get-Module -ListAvailable @("AsBuiltReport.Core";"AsBuiltReport.VMware.AppVolumes";"PScribo") | Select Name, Version + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: This field is optional. You may provide additional context for the bug you wish to report. You may wish to include links to any related [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues) or other relevant information. + - type: checkboxes + id: checklist + attributes: + label: Before submitting + description: >- + Please ensure your bug report fulfills all of the following requirements. + If you are unsure of what a specific requirement means, please follow the links to learn about it and understand why it is necessary before submitting. + options: + - label: >- + I have read and followed the [bug reporting guidelines](https://www.asbuiltreport.com/about/contributing/#reporting-issues-and-bugs). + required: true + - label: >- + I have read [the documentation](https://www.asbuiltreport.com/user-guide/new-asbuiltconfig), + and referred to the [known issues](https://www.asbuiltreport.com/user-guide/known-issues/) before submitting this bug report. + required: true + - label: >- + I have checked for previously opened & closed [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues) before submitting this bug report. + required: true diff --git a/.github/ISSUE_TEMPLATE/change_request.yml b/.github/ISSUE_TEMPLATE/change_request.yml new file mode 100644 index 0000000..d5b4ea0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/change_request.yml @@ -0,0 +1,34 @@ +name: Change Request +description: Request a new change or an improvement +labels: ["change request"] +assignees: + - rebelinux +body: + - type: textarea + id: description + attributes: + label: Description + description: >- + Please provide a detailed description of your idea so that the project maintainers and contributors can fully understand what change, feature, or improvement you are proposing. + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: This field is optional. You may provide additional context for the idea you wish to propose. You may wish to include links to any related [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues) or other relevant information. + - type: checkboxes + id: checklist + attributes: + label: Before submitting + description: >- + Please ensure your change request fulfills all of the following requirements. + If you are unsure of what a specific requirement means, please follow the links to learn about it and understand why it is necessary before submitting. + options: + - label: >- + I have read [the documentation](https://www.asbuiltreport.com/user-guide/new-asbuiltconfig), + and referred to the [known issues](https://www.asbuiltreport.com/user-guide/known-issues/) before submitting this change request. + required: true + - label: >- + I have checked for previously opened & closed [issues](https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes/issues) before submitting this change request. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ec4bb38 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 5384295..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/PSScriptAnalyzer.yml b/.github/workflows/PSScriptAnalyzer.yml index 61438f7..528cc2a 100644 --- a/.github/workflows/PSScriptAnalyzer.yml +++ b/.github/workflows/PSScriptAnalyzer.yml @@ -5,7 +5,7 @@ jobs: name: Run PSScriptAnalyzer runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: lint uses: devblackops/github-action-psscriptanalyzer@master with: diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 3d7305b..6514d39 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -8,7 +8,7 @@ jobs: publish-to-gallery: runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set PSRepository to Trusted for PowerShell Gallery shell: pwsh run: | diff --git a/AsBuiltReport.VMware.AppVolumes.json b/AsBuiltReport.VMware.AppVolumes.json index bdf1621..0803f5c 100644 --- a/AsBuiltReport.VMware.AppVolumes.json +++ b/AsBuiltReport.VMware.AppVolumes.json @@ -15,21 +15,30 @@ "_comment_": "0 = Disabled, 1 = Summary, 2 = Detailed, 3 = Adv Detailed", "AppVolumes": { "General": 1, - "Managers": 1, - "License": 1, - "AppStacks": 1, + "Applications":1, + "Packages": 1, + "Programs": 1, + "Assignments": 1, + "Writables": 1, "ADUsers": 1, + "Computers": 1, "ADGroups": 1, "ADOus": 1, - "Writables": 1, - "Applications": 1, + "Machines": 1, "StorageLocations": 1, "StorageGroups": 1, + "Instances": 1, + "Jobs": 1, + "Troubleshooting": 1, + "License": 1, "ADDomains": 1, "AdminGroups": 1, "MachineManagers": 1, "Storage": 1, - "Settings": 1 + "Settings": 1, + "Managers": 1, + "Products": 1 + } } } \ No newline at end of file diff --git a/AsBuiltReport.VMware.AppVolumes.psd1 b/AsBuiltReport.VMware.AppVolumes.psd1 index 00a4748..e97a54c 100644 Binary files a/AsBuiltReport.VMware.AppVolumes.psd1 and b/AsBuiltReport.VMware.AppVolumes.psd1 differ diff --git a/CHANGELOG.md b/CHANGELOG.md index 5caf991..944032b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # :arrows_clockwise: VMware AppVolumes As Built Report Changelog +## [1.1.0] - 2023-1-1 + +### Added + +- Updated Report to work with App Volumes 2309 +- Added Instances functions and many others +- Improved functionaliy and layout. + +### Changed + +- Changed Required Modules to AsBuiltReport.Core v1.3.0 + +### Fixed + +- Fixed issue with ssl certificate verification in PwSh <= 5 + ## [0.2.0] - 2022-10-12 ### Added diff --git a/README.md b/README.md index 4fbdddf..23d7cd9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

- +

@@ -49,6 +49,7 @@ 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 ### PowerShell This report is compatible with the following PowerShell versions; @@ -64,12 +65,6 @@ PowerShell 5.1 or PowerShell 7, and the following PowerShell modules are require - [VMware PowerCLI Module](https://www.powershellgallery.com/packages/VMware.PowerCLI/) - [AsBuiltReport.VMware.AppVolumes Module](https://www.powershellgallery.com/packages/AsBuiltReport.VMware.AppVolumes/) -### Linux & macOS -* .NET Core is required for cover page image support on Linux and macOS operating systems. - * [Installing .NET Core for macOS](https://docs.microsoft.com/en-us/dotnet/core/install/macos) - * [Installing .NET Core for Linux](https://docs.microsoft.com/en-us/dotnet/core/install/linux) - -❗ If you are unable to install .NET Core, you must set `ShowCoverPageImage` to `False` in the report JSON configuration file. ### :closed_lock_with_key: Required Privileges * To generate a VMware AppVolumes report, a user account with the Admin role or higher on the AppVolumes is required. (Required Admin rights to use the AppVol APIs) @@ -145,21 +140,30 @@ The table below outlines the default and maximum InfoLevel settings for each sec | Sub-Schema | Default Setting | Maximum Setting | |--------------|:---------------:|:---------------:| General | 1 | 1 | -Managers | 1 | 1 | -License | 1 | 1 | -AppStacks | 1 | 2 | +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 | -Writeables | 1 | 2 | +Machines | 1 | 1 | StorageLocations | 1 | 2 | StorageGroups | 1 | 1 | -ADDomains | 1 | 1 | -AdminGroups | 1 | 1 | -MachineManagers | 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 The **Healthcheck** schema is used to toggle health checks on or off. diff --git a/Samples/Sample VMware AppVolumes As Built Report.html b/Samples/Sample VMware AppVolumes As Built Report.html index 5c60cab..36e7f2d 100644 --- a/Samples/Sample VMware AppVolumes As Built Report.html +++ b/Samples/Sample VMware AppVolumes As Built Report.html @@ -46,137 +46,149 @@

-











+











VMware Logo
-

VMware AppVolumes As Built Report


Zen Pr Solutions
































- - +

VMware AppVolumes As Built Report


As Built Report
































Author:Jonathan Colon
Date:Friday, October 7, 2022
+ +
Author:As Built Report
Date:Tuesday, January 2, 2024
Version:1.0

-
VMware AppVolumes As Built Report - v1.0

Table of Contents

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
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      AppStacks Summary
1.2.1.1         AppStacks Details
1.2.1.1.1            7zip
1.2.1.1.2            Google Chrome
1.2.1.1.3            Office 2021
1.2.2      Writable AppStack
1.2.2.1         Writable AppStack Details
1.3   Directory
1.3.1      Managed Users
1.3.2      Managed Groups
1.3.3      Managed OUs
1.4   Infrastructure
1.4.1      Storages
1.4.1.1         Storage Details
1.4.2      Storage Groups
1.4.2.1         APPVOL-SG
1.4.2.2         CAL-PB-01
1.5   Configuration
1.5.1      License Information
1.5.2      Active Directory Domain
1.5.2.1         pharmax.local
1.5.3      Administrator Roles
1.5.4      Machine Manager
1.5.4.1         vcenter-01v.pharmax.local
1.5.4.2         vcenter-03v.pharmax.local
1.5.5      Storage Overview
1.5.5.1         Packages
1.5.5.2         Writable Volumes
1.5.6      Manager Servers
1.5.6.1         HORIZON-APV-01V
1.5.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 2206 (4.7.0.64)
NameHorizon-APV-01V.pharmax.local
VersionApp Volumes 4, version 2309 (4.12.0.81)
ConfiguredYes
Uptimeabout 1 hour
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 AppStacks Summary

The following section provide a summary of the AppStacks components on horizon-apv-01v.

+
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.

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 - AppStacks - horizon-apv-01v.pharmax.local

-

1.2.1.1 AppStacks Details

The following section details AppStacks configuration information on horizon-apv-01v.

1.2.1.1.1 7zip
+
Table 2 - Application Summary - Horizon-APV-01V.pharmax.local

+

1.2.1.1 Applications Details

1.2.1.1.1 Application Details - 7zip
- - - + + + - - - - - + - - - - - + + +
Name7zip
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
Statusenabled
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
Total Assignments3
CreatedAug 25 2022
Mounted2022-08-26T15:42:49Z
Size89.00 MB
Total Assignments0
Attachments Total0
Attachment Limit--
ModifiedAug 25 2022
Description--
Applications Count1
Agent Version4.7.0.64R
Package Agent Version4.0
OS VersionWindows 10 (x64)
Provisioning Duration3 minutes
RDS Package AttachmentYes
Last Synchronized--
Sync Status--
-
Table 3 - AppStack Details - 7zip

-

Packages

+
Table 3 - Application Details - 7zip

+

Application Packages

- +
NameVersionCreatedMountedSizeCurrent
7zip22.01.00.08/25/20228/26/202289.00 MBYes
7zip22.01.00.08/25/202212/16/202389.00 MBYes
-
Table 4 - Packages - 7zip

-

Programs

+
Table 4 - Application Packages - 7zip

+

Application Programs

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

-

Assignment

+
Table 5 - Application Programs - 7zip

+

Application Assignment

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

-
1.2.1.1.2 Google Chrome
+
Table 6 - Application Assignment - 7zip

+
1.2.1.1.2 Application Details - Google Chrome
- - - + + + - - - - - + - - - - - + + +
NameGoogle Chrome
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
Statusenabled
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
Total Assignments6
CreatedAug 25 2022
Mounted2022-08-26T15:42:49Z
Size940.00 MB
Total Assignments0
Attachments Total0
Attachment Limit--
ModifiedAug 25 2022
Description--
Applications Count1
Agent Version4.7.0.64R
Package Agent Version4.0
OS VersionWindows 10 (x64)
Provisioning Duration10 minutes
RDS Package AttachmentYes
Last Synchronized--
Sync Status--
-
Table 7 - AppStack Details - Google Chrome

-

Packages

+
Table 7 - Application Details - Google Chrome

+

Application Packages

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

-

Programs

+
Table 8 - Application Packages - Google Chrome

+

Application Programs

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

-

Assignment

+
Table 9 - Application Programs - Google Chrome

+

Application Assignment

@@ -185,33 +197,27 @@
NameType
PHARMAX OU:Fortinet EMSOrgUnit
PHARMAX OU:VEEAM WorkStationsOrgUnit
PHARMAX\jocolonUser
PHARMAX\veeam_adminUser
-
Table 10 - Assignment - Google Chrome

-
1.2.1.1.3 Office 2021
+
Table 10 - Application Assignment - Google Chrome

+
1.2.1.1.3 Application Details - Office 2021
- - - + + + - - - - - + - - - - - + + +
NameOffice 2021
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
Statusenabled
Statusactive
Owner2759FB46-591D-49A5-A0C0-0AFFA865BD5E
Total Assignments3
CreatedAug 25 2022
Mounted2022-08-26T15:42:49Z
Size4.37 GB
Total Assignments0
Attachments Total0
Attachment Limit--
ModifiedAug 25 2022
Description--
Applications Count7
Agent Version4.7.0.64R
Package Agent Version4.0
OS VersionWindows 10 (x64)
Provisioning Duration32 minutes
RDS Package AttachmentYes
Last Synchronized--
Sync Status--
-
Table 11 - AppStack Details - Office 2021

-

Packages

+
Table 11 - Application Details - Office 2021

+

Application Packages

- +
NameVersionCreatedMountedSizeCurrent
Office202116.0.14332.203588/25/20228/26/20224.37 GBYes
Office202116.0.14332.203588/25/202212/16/20234.37 GBYes
-
Table 12 - Packages - Office 2021

-

Programs

+
Table 12 - Application Packages - Office 2021

+

Application Programs

@@ -221,51 +227,403 @@
NameVersionCreated
Microsoft Office LTSC Professional Plus 2021 - en-us16.0.14332.20358Aug 25 2022
Microsoft OneDrive21.030.0211.0002Aug 25 2022
Office 16 Click-to-Run Licensing Component16.0.14332.20358Aug 25 2022
Teams Machine-Wide Installer1.4.0.19572Aug 25 2022
-
Table 13 - Programs - Office 2021

-

Assignment

+
Table 13 - Application Programs - Office 2021

+

Application Assignment

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

-

1.2.2 Writable AppStack

The following section provide a summary of Writable AppStack components on horizon-apv-01v.

- - - - +
Table 14 - Application Assignment - Office 2021

+

1.2.2 Packages Summary

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

NameOwner TypeStatusSize Total/FreeDatastore Name
PHARMAX\AdministratorUserenabled10GB / 10GBSSD-VM-HIGH-CAPACITY-PERF-MK
PHARMAX\jocolonUserenabled10GB / 6GBSSD-VM-HIGH-CAPACITY-PERF-MK
PHARMAX\veeam_adminUserdisabled10GB / 10GBSSD-VM-HIGH-CAPACITY-PERF-MK
+ + + + +
NameApplicationStageStatusVersionSizeAdded
7zip7zipNewenabled22.01.00.089.00 MBAug 25 2022
Google Chrome 104-updateGoogle ChromeNewenabled104.0.5112.102940.00 MBAug 25 2022
Google Chrome 88Google ChromeNewenabled88.0.4324.150783.00 MBAug 25 2022
Office2021Office 2021Newenabled16.0.14332.203584.37 GBAug 25 2022
-
Table 15 - Writable AppStack - horizon-apv-01v.pharmax.local

-

1.2.2.1 Writable AppStack Details

The following section details Writable AppStack settings configured on horizon-apv-01v.

PHARMAX\Administrator

+
Table 15 - Packages - Horizon-APV-01V.pharmax.local

+

1.2.2.1 Packages Details

1.2.2.1.1 Package - 7zip
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +
OwnerAdministrator
Owner TypeUser
Created DateAug 26 2022
Last Updated DateAug 26 2022
Last Mounted Date--
Attachment StateDetached
Statusenabled
Size0GB
Number of Times Mounted0
Free Space10GB
Total Size10GB
Percent Space Available100.0%
Template Version--
Version Count0
TypeWritable Volume
Error Actiondisable_and_alert
Busy StateNo
File NamePHARMAX!5C!Administrator.vmdk
Pathappvolumes/writables
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-MK
Datastore Protected--
Datastore Can Expand--
OS Version--
App Name7zip
Application Name7zip
Version #22.01.00.0
Current Statusenabled
Life Cycle StageNew
Deliveryclassic
Total Attachments14
File Name7zip.vmdk
FormatAV
Template[SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages_templates/template.vmdk
Agent Version4.7.0.64R
Base Package--
Date AddedAug 25 2022
ModifiedAug 25 2022
Description--
Note--
Programs Count1
Operating Systems Count1
Package Size89.00 MB
On-Demand CapableYes
Attachment Limit--
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
OS VersionWindows 10 (x64)
Provisioning Duration3 minutes
Is CurrentCURRENT
+
Table 16 - Package Details - 7zip

+

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

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

+

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

+ + +
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 16 - Writable AppStack - PHARMAX\Administrator

-

PHARMAX\jocolon

+
Table 20 - Application links for - 7zip

+
1.2.2.1.2 Package - Google Chrome 104-update
- + + + + + + + + + + + + + + + + + + + + + + + + + + +
OwnerJonathan A. Colon Feliciano
App NameGoogle Chrome 104-update
Application NameGoogle Chrome
Version #104.0.5112.102
Current Statusenabled
Life Cycle StageNew
Deliveryclassic
Total Attachments18
File NameGoogle!20!Chrome!20!104-update.vmdk
FormatAV
Template[SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages/Google!20!Chrome-update.vmdk
Agent Version4.7.0.64R
Base PackageGoogle Chrome 88
Date AddedAug 25 2022
ModifiedAug 25 2022
Description--
Note--
Programs Count1
Operating Systems Count1
Package Size940.00 MB
On-Demand CapableYes
Attachment Limit--
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
OS VersionWindows 10 (x64)
Provisioning Duration10 minutes
Is CurrentCURRENT
+
Table 21 - Package Details - Google Chrome 104-update

+

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

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

+

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

+ + + +
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
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
App NameGoogle Chrome 88
Application NameGoogle Chrome
Version #88.0.4324.150
Current Statusenabled
Life Cycle StageNew
Deliveryclassic
Total Attachments0
File NameGoogle!20!Chrome-update.vmdk
FormatAV
Template[SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages/Google!20!Chrome.vmdk
Agent Version4.3.0.57R
Base Package--
Date AddedAug 25 2022
ModifiedAug 25 2022
Description--
Note--
Programs Count1
Operating Systems Count1
Package Size783.00 MB
On-Demand CapableNo
Attachment Limit--
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
OS VersionWindows 10 (x64)
Provisioning Duration5 minutes
Is Current--
+
Table 26 - Package Details - Google Chrome 88

+

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

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

+

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
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
App NameOffice2021
Application NameOffice 2021
Version #16.0.14332.20358
Current Statusenabled
Life Cycle StageNew
Deliveryclassic
Total Attachments14
File NameOffice2021.vmdk
FormatAV
Template[SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages_templates/template.vmdk
Agent Version4.7.0.64R
Base Package--
Date AddedAug 25 2022
ModifiedAug 25 2022
Description--
Note--
Programs Count7
Operating Systems Count1
Package Size4.37 GB
On-Demand CapableYes
Attachment Limit--
Pathappvolumes/packages
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-KN
OS VersionWindows 10 (x64)
Provisioning Duration32 minutes
Is CurrentCURRENT
+
Table 30 - Package Details - Office2021

+

Programs

+ + + + + + + + +
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
Office 16 Click-to-Run Extensibility Component16.0.14332.20358Microsoft CorporationAug 25 2022Aug 25 2022
Microsoft Visio LTSC Professional 2021 - en-us16.0.14332.20358Microsoft CorporationAug 25 2022Aug 25 2022
Microsoft Project Professional 2021 - en-us16.0.14332.20358Microsoft CorporationAug 25 2022Aug 25 2022
Microsoft OneDrive21.030.0211.0002Microsoft 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

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

+

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

+ + + + + + + + + + + + + + + + + +
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
ExcelC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Excel.lnk
Office Language PreferencesC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Office Language Preferences.lnk
OneDriveC:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk
OneNoteC:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneNote.lnk
OutlookC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk
PowerPointC:\ProgramData\Microsoft\Windows\Start Menu\Programs\PowerPoint.lnk
ProjectC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Project.lnk
Project Server AccountsC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Project Server Accounts.lnk
PublisherC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Publisher.lnk
Spreadsheet CompareC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Spreadsheet Compare.lnk
Telemetry Dashboard for OfficeC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Telemetry Dashboard for Office.lnk
Telemetry Log for OfficeC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Telemetry Log for Office.lnk
VisioC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visio.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.

+ + + + + + + + + + + +
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
Microsoft Visio LTSC Professional 2021 - en-us16.0.14332.20358Microsoft CorporationOffice2021
Microsoft Project Professional 2021 - en-us16.0.14332.20358Microsoft CorporationOffice2021
Microsoft Office LTSC Professional Plus 2021 - en-us16.0.14332.20358Microsoft CorporationOffice2021
7-Zip 22.01 (x64 edition)22.01.00.0Igor Pavlov7zip
Google Chrome88.0.4324.150Google LLCGoogle Chrome 88
Google Chrome104.0.5112.102Google LLCGoogle Chrome 104-update
Microsoft OneDrive21.030.0211.0002Microsoft 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)
+ + + + + + + + + +
Name7-Zip 22.01 (x64 edition)
Package7zip
PublisherIgor Pavlov
Install Location--
Version Number22.01.00.0
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameGoogle Chrome
PackageGoogle Chrome 104-update
PublisherGoogle LLC
Install Location--
Version Number104.0.5112.102
CreatedAug 25 2022
UpdatedAug 25 2022
Icon/snapvols/9/Google_Chrome.png
+
Table 37 - Program Details - Google Chrome

+
1.2.3.1.3 Program Details - Google Chrome
+ + + + + + + + + +
NameGoogle Chrome
PackageGoogle Chrome 88
PublisherGoogle LLC
Install Location--
Version Number88.0.4324.150
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameMicrosoft Office LTSC Professional Plus 2021 - en-us
PackageOffice2021
PublisherMicrosoft Corporation
Install LocationC:\Program Files\Microsoft Office
Version Number16.0.14332.20358
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameMicrosoft OneDrive
PackageOffice2021
PublisherMicrosoft Corporation
Install Location--
Version Number21.030.0211.0002
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameMicrosoft Project Professional 2021 - en-us
PackageOffice2021
PublisherMicrosoft Corporation
Install LocationC:\Program Files\Microsoft Office
Version Number16.0.14332.20358
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameMicrosoft Visio LTSC Professional 2021 - en-us
PackageOffice2021
PublisherMicrosoft Corporation
Install LocationC:\Program Files\Microsoft Office
Version Number16.0.14332.20358
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameOffice 16 Click-to-Run Extensibility Component
PackageOffice2021
PublisherMicrosoft Corporation
Install Location--
Version Number16.0.14332.20358
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameOffice 16 Click-to-Run Licensing Component
PackageOffice2021
PublisherMicrosoft Corporation
Install Location--
Version Number16.0.14332.20358
CreatedAug 25 2022
UpdatedAug 25 2022
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
+ + + + + + + + + +
NameTeams Machine-Wide Installer
PackageOffice2021
PublisherMicrosoft Corporation
Install Location--
Version Number1.4.0.19572
CreatedAug 25 2022
UpdatedAug 25 2022
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.

+ + + + + + + + + + + + + +
EntityMarkerPackageApplicationsComputersAssigned
PHARMAX\jocolonCURRENTGoogle Chrome 104-updateGoogle ChromeAllAug 26 2022
PHARMAX\jocolonCURRENT7zip7-Zip 22.01 (x64 edition)AllAug 26 2022
PHARMAX\jocolonCURRENTOffice2021Teams Machine-Wide Installer, Microsoft OneDrive, Office 16 Click-to-Run Extensibility Component, Office 16 Click-to-Run Licensing Component, Microsoft Visio LTSC Professional 2021 - en-us, Microsoft Office LTSC Professional Plus 2021 - en-us, Microsoft Project Professional 2021 - en-usAllAug 26 2022
PHARMAX\veeam_adminCURRENTGoogle Chrome 104-updateGoogle ChromeAllAug 26 2022
PHARMAX\veeam_adminCURRENT7zip7-Zip 22.01 (x64 edition)AllAug 26 2022
PHARMAX\veeam_adminCURRENTOffice2021Teams Machine-Wide Installer, Microsoft OneDrive, Office 16 Click-to-Run Extensibility Component, Office 16 Click-to-Run Licensing Component, Microsoft Visio LTSC Professional 2021 - en-us, Microsoft Office LTSC Professional Plus 2021 - en-us, Microsoft Project Professional 2021 - en-usAllAug 26 2022
PHARMAX\Domain AdminsCURRENTGoogle Chrome 104-updateGoogle Chromevm-Aug 26 2022
PHARMAX\Domain AdminsCURRENT7zip7-Zip 22.01 (x64 edition)vm-Aug 26 2022
PHARMAX\Domain AdminsCURRENTOffice2021Teams Machine-Wide Installer, Microsoft OneDrive, Office 16 Click-to-Run Extensibility Component, Office 16 Click-to-Run Licensing Component, Microsoft Visio LTSC Professional 2021 - en-us, Microsoft Office LTSC Professional Plus 2021 - en-us, Microsoft Project Professional 2021 - en-usvm-Aug 26 2022
PHARMAX\Domain UsersCURRENTGoogle Chrome 104-updateGoogle ChromeAllSep 06 2022
PHARMAX OU:VEEAM WorkStationsCURRENTGoogle Chrome 104-updateGoogle ChromeAllOct 06 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.

+ + + +
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

+ + @@ -286,13 +644,13 @@ - +
OwnerPHARMAX\jocolon
Owner TypeUser
Created DateMar 02 2022
Last Updated DateAug 26 2022
Pathappvolumes/writables
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-MK
Datastore Protected--
Datastore Can Expand--
Datastore Can ExpandYes
OS Version--
-
Table 17 - Writable AppStack - PHARMAX\jocolon

-

PHARMAX\veeam_admin

+
Table 48 - Writable volumes details - PHARMAX\jocolon

+

Writable Volume Details for - PHARMAX\veeam_admin

- + @@ -313,32 +671,58 @@ - +
Ownerveeam admin
OwnerPHARMAX\veeam_admin
Owner TypeUser
Created DateAug 26 2022
Last Updated DateAug 26 2022
Pathappvolumes/writables
Datastore NameSSD-VM-HIGH-CAPACITY-PERF-MK
Datastore Protected--
Datastore Can Expand--
Datastore Can ExpandYes
OS Version--
-
Table 18 - Writable AppStack - 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.

- - - - -
NameLast LogonStatusWritableAppStackAssignmentsLogin
PHARMAX\veeam_adminAug 26 2022Enabled1032
PHARMAX\jocolonAug 26 2022Enabled1033
PHARMAX\AdministratorAug 25 2022Enabled10018
-
Table 19 - Managed Users - horizon-apv-01v.pharmax.local

-

1.3.2 Managed Groups

The following section provide a summary of Groups that have assignments on horizon-apv-01v.

- - - - - -
NameLast LogonStatusWritableAppStackAssignments
AD - SRM Recovery GroupOct 05 2022Enabled000
Domain AdminsAug 25 2022Enabled003
Domain UsersSep 06 2022Enabled001
ho-mar-distlist1Oct 05 2022Enabled000
-
Table 20 - Managed Groups - horizon-apv-01v.pharmax.local

-

1.3.3 Managed OUs

The following section provide a summary of Organizational Units (OUs) that have assignments on horizon-apv-01v.

- - - -
NameLast LogonStatusWritableAppStackAssignments
Fortinet EMSOct 06 2022Enabled001
VEEAM WorkStationsOct 06 2022Enabled001
-
Table 21 - Managed Ous - horizon-apv-01v.pharmax.local

-

1.4 Infrastructure

1.4.1 Storages

The following section details configured storage options for Packages, Writable Volumes, and AppStacks on horizon-apv-01v.

+
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.

+ + + + +
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.

+ + + + + + + + + + + + +
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
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
farm-014.7.0.64RTServer0003Aug 27 2022 10:24AMEnabled
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.

+ + + + + +
Group NameWritableAssignmentsLast LogonStatus
Domain Users01Sep 06 2022Enabled
ho-mar-distlist100Oct 05 2022Disabled
AD - SRM Recovery Group00Oct 05 2022Enabled
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.

+ + + +
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.

+ + + + + + + + +
NameHostSourceCreatedStatus
app-farm-01esxsvr-00f.pharmax.localAgentDec 15 2023 09:40PMExisting
app-farm-02esxsvr-00f.pharmax.localAgentDec 15 2023 09:40PMExisting
cp-replica-4620aa2d-a8bc-4ae0-b375-cc552f9002d9esxsvr-00f.pharmax.localAgentDec 15 2023 09:34PMExisting
cp-template-b8e348b5-1c9b-49b5-aaf3-2bd528121cbcesxsvr-00f.pharmax.localOtherDec 15 2023 09:28PMExisting
Horizon-CAP-01Vesxsvr-00f.pharmax.localAgentAug 25 2022 02:17PMExisting
Horizon-RDS-01Tesxsvr-00f.pharmax.localAgentDec 15 2023 11:00AMExisting
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.

@@ -351,250 +735,282 @@ - + + +
NameHostAppStacksWritablesAttachableStatus
EDGE_SAN_PLACEHOLDERvcenter-03v00YesExisting
esx-00fvcenter-01v00YesExisting
NVME-VM-HIGH-PERF-01vcenter-01v00YesExisting
SRM_HQ_REPLICATED_01vcenter-01v00YesExisting
SSD-VM-HIGH-CAPACITY-PERF-KNvcenter-01v10YesExisting
SSD-VM-HIGH-CAPACITY-PERF-MKvcenter-01v13YesExisting
SSD-VM-HIGH-CAPACITY-PERF-MKvcenter-01v12YesExisting
TrueNAS_VM_DATAvcenter-01v00YesExisting
TrueNAS_VM_DATA (1)vcenter-01v00YesExisting
VMDatastorevcenter-03v00YesExisting
VMWARE_VDI_DATASTORE_2vcenter-01v00YesAbsent
-
Table 22 - Storages - horizon-apv-01v.pharmax.local

-

1.4.1.1 Storage Details

The following section details Datastores seen by the manager horizon-apv-01v.

EDGE_SAN_PLACEHOLDER

+
Table 55 - Storages - Horizon-APV-01V.pharmax.local

+

Storage Details - EDGE_SAN_PLACEHOLDER

+ -
Display Name[PHARMAX-VSI-EDGE] EDGE_SAN_PLACEHOLDER
Machine Managervcenter-03v.pharmax.local
Category--
Datacenter PHARMAX-VSI-EDGE
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-03v.pharmax.local
Template Storage--
Host Username--
Free Space8 GB
Capacity10 GB
-
Table 23 - Storage Details - EDGE_SAN_PLACEHOLDER

-

esx-00f

+
Table 56 - Storage Details - EDGE_SAN_PLACEHOLDER

+

Storage Details - esx-00f

+ -
Display Name[PHARMAX-VSI-DC] esx-00f
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space111 GB
Capacity112 GB
-
Table 24 - Storage Details - esx-00f

-

HDD-VM-ISO-LOW-PERF

+
Table 57 - Storage Details - esx-00f

+

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

+ - - +
Display Name[PHARMAX-VSI-DC] HDD-VM-ISO-LOW-PERF
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space341 GB
Free Space344 GB
Capacity931 GB
-
Table 25 - Storage Details - HDD-VM-ISO-LOW-PERF

-

HDD-VM-MED-PERF-01

+
Table 58 - Storage Details - HDD-VM-ISO-LOW-PERF

+

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

+ - - +
Display Name[PHARMAX-VSI-DC] HDD-VM-MED-PERF-01
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space3 TB
Free Space2 TB
Capacity4 TB
-
Table 26 - Storage Details - HDD-VM-MED-PERF-01

-

HDD-VM-MED-PERF-02

+
Table 59 - Storage Details - HDD-VM-MED-PERF-01

+

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

+ -
Display Name[PHARMAX-VSI-DC] HDD-VM-MED-PERF-02
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space2 TB
Capacity4 TB
-
Table 27 - Storage Details - HDD-VM-MED-PERF-02

-

HQ_SAN_PLACEHOLDER

+
Table 60 - Storage Details - HDD-VM-MED-PERF-02

+

Storage Details - HQ_SAN_PLACEHOLDER

+ -
Display Name[PHARMAX-VSI-DC] HQ_SAN_PLACEHOLDER
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleNo
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space8 GB
Capacity10 GB
-
Table 28 - Storage Details - HQ_SAN_PLACEHOLDER

-

HQ_VM_DATASTORE

+
Table 61 - Storage Details - HQ_SAN_PLACEHOLDER

+

Storage Details - HQ_VM_DATASTORE

+ - - +
Display Name[PHARMAX-VSI-DC] HQ_VM_DATASTORE
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space37 GB
Free Space41 GB
Capacity50 GB
-
Table 29 - Storage Details - HQ_VM_DATASTORE

-

NVME-VFLASH-01

+
Table 62 - Storage Details - HQ_VM_DATASTORE

+

Storage Details - NVME-VFLASH-01

+ - - +
Display Name[PHARMAX-VSI-DC] NVME-VFLASH-01
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space105 GB
Free Space27 GB
Capacity238 GB
-
Table 30 - Storage Details - NVME-VFLASH-01

-

NVME-VM-HIGH-PERF-01

+
Table 63 - Storage Details - NVME-VFLASH-01

+

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

+ - - +
Display Name[PHARMAX-VSI-DC] NVME-VM-HIGH-PERF-01
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space218 GB
Free Space122 GB
Capacity477 GB
-
Table 31 - Storage Details - NVME-VM-HIGH-PERF-01

-

SRM_HQ_REPLICATED_01

+
Table 64 - Storage Details - NVME-VM-HIGH-PERF-01

+

Storage Details - SRM_HQ_REPLICATED_01

+ -
Display Name[PHARMAX-VSI-DC] SRM_HQ_REPLICATED_01
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space48 GB
Capacity50 GB
-
Table 32 - Storage Details - SRM_HQ_REPLICATED_01

-

SSD-VM-HIGH-CAPACITY-PERF-KN

+
Table 65 - Storage Details - SRM_HQ_REPLICATED_01

+

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

+ - - +
Display Name[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-KN
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space608 GB
Free Space168 GB
Capacity894 GB
-
Table 33 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-KN

-

SSD-VM-HIGH-CAPACITY-PERF-MK

+
Table 66 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-KN

+

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

+ - - +
Display Name[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space589 GB
Free Space138 GB
Capacity931 GB
-
Table 34 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-MK

-

VMDatastore

+
Table 67 - Storage Details - SSD-VM-HIGH-CAPACITY-PERF-MK

+

Storage Details - TrueNAS_VM_DATA

+ + + + + + + + + + + + +
Display Name[PHARMAX-VSI-DC] TrueNAS_VM_DATA
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesNFS41
DescriptionType: NFS41 - Share Mode: Local
AccessibleYes
Template Storage--
Host Usernameroot
Free Space827 GB
Capacity829 GB
+
Table 68 - Storage Details - TrueNAS_VM_DATA

+

Storage Details - TrueNAS_VM_DATA (1)

+ + + + + + + + + + + + +
Display Name[PHARMAX-VSI-DC] TrueNAS_VM_DATA (1)
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesNFS41
DescriptionType: NFS41 - Share Mode: Local
AccessibleNo
Template Storage--
Host Usernameroot
Free Space0 KB
Capacity0 KB
+
Table 69 - Storage Details - TrueNAS_VM_DATA (1)

+

Storage Details - VMDatastore

+ -
Display Name[PHARMAX-VSI-EDGE] VMDatastore
Machine Managervcenter-03v.pharmax.local
Category--
Datacenter PHARMAX-VSI-EDGE
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleNo
Hostvcenter-03v.pharmax.local
Template Storage--
Host Username--
Free Space90 GB
Capacity100 GB
-
Table 35 - Storage Details - VMDatastore

-

VMWARE_VDI_DATASTORE_2

+
Table 70 - Storage Details - VMDatastore

+

Storage Details - VMWARE_VDI_DATASTORE_2

+ -
Display Name[PHARMAX-VSI-DC] VMWARE_VDI_DATASTORE_2
Machine Managervcenter-01v.pharmax.local
Category--
Datacenter PHARMAX-VSI-DC
NotesVMFS
DescriptionType: VMFS - Share Mode: Local
AccessibleYes
Hostvcenter-01v.pharmax.local
Template Storage--
Host Usernameroot
Free Space18 GB
Capacity20 GB
-
Table 36 - Storage Details - VMWARE_VDI_DATASTORE_2

-

1.4.2 Storage Groups

The following section details Storage Group used to define groups of storage locations so they can function as one storage entity.

1.4.2.1 APPVOL-SG

+
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

- + - - + +
Distribution StrategySpread
Template StorageSSD-VM-HIGH-CAPACITY-PERF-MK
Members Count2
Member Name Prefix--
Space Used628 GB
Space Used1.48 TB
Total Space1.78 TB
Creation DateAug 25 2022 01:36PM
Auto ImportYes
Auto ReplicateYes
Last Replicated DateOct 07 2022 09:23AM
Last Imported DateOct 07 2022 08:23AM
Last Replicated DateJan 02 2024 11:33AM
Last Imported DateJan 02 2024 08:34AM
Last Curated DateAug 25 2022 01:42PM
-
Table 37 - Storage Group - APPVOL-SG

-

Datastore Members

+
Table 72 - Storage Group - APPVOL-SG

+

Datastore Members

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

-

1.4.2.2 CAL-PB-01

+
Table 73 - Datastore Members - APPVOL-SG

+

1.4.3.2 Storage Group - CAL-PB-01

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

-

Datastore Members

+
Table 74 - Storage Group - CAL-PB-01

+

Datastore Members

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

-

1.5 Configuration

The following section details configuration settings for App Volumes Manager horizon-apv-01v.

1.5.1 License Information

+
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.

+ + + + + + + + + + + + + + + + + + + + + + +
NameStatusIntervalLast Run At
Audit Vmsenabled9 hours 21 minutesabout 3 hours ago
Collect Logsenabled12 hoursabout 3 hours ago
Expire Sessionsenabled33 minutes16 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
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
+
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.

- + @@ -627,7 +1068,7 @@ - + @@ -639,8 +1080,13 @@
Key Create Date2020-10-07 17:03:38 -0700
Key ValidYes
Limit Users50000
Usage Users2
Usage Users3
Limit Desktops50000
Usage Desktops0
Limit Servers50000
Limit Concurrent Servers--
Usage Concurrent Servers0
Limit Terminal Users50000
Usage Terminal Users0
Usage Terminal Users2
Limit Concurrent Terminal Users--
Usage Concurrent Terminal Users0
Limit Max Attachments Per UserNo limit
Valid Until DatePerpetual
Options--
-
Table 41 - License - horizon-apv-01v.pharmax.local

-

1.5.2 Active Directory Domain

1.5.2.1 pharmax.local

+
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

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

+

AD Domain Details - pharmax.local

@@ -648,57 +1094,64 @@ - - +
Usernameadministrator@pharmax.local
Base--
LDAPSNo
LDAP_TLSNo
SSL VerifyYes
Port--
Effective Port389
Port389
Created At2022-08-25 13:31:15 -0400
Updated At2022-08-25 13:31:15 -0400
-
Table 42 - Active Directory Domains - pharmax.local

-

1.5.3 Administrator Roles

+
Table 79 - AD Domain Details - pharmax.local

+

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\Domain AdminsAdministratorsGroup8/25/2022
-
Table 43 - Administrators Roles - horizon-apv-01v.pharmax.local

-

1.5.4 Machine Manager

1.5.4.1 vcenter-01v.pharmax.local

+
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

+ + + +
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

- - - - - - - - - - -
Usernameadministrator@vsphere.local
Host Usernameroot
TypeVMware vCenter
Supports MultiYes
Is ConnectedYes
SSL Validation EnabledYes
Mount On HostYes
Mount QueuesYes
Mount AsyncYes
Mount Throttle5
DescriptionVMware vCenter Server 7.0.3 build-20395099
-
Table 44 - Machine Manager - vcenter-01v.pharmax.local

-

1.5.4.2 vcenter-03v.pharmax.local

- - - + + + + + + + + + + + +
Usernameadministrator@vsphere.local
Host Username--
Host Namevcenter-01v.pharmax.local
Usernameroot
Fast Attach--
Mount ESXiYes
ESXi Usernameroot
Use Local Volumes--
Use Reconfigure QueuesYes
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
+
Table 82 - Machine Manager Details - vcenter-01v.pharmax.local

+

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

+ - - - - - - - - + + + + + + + + + + +
TypeVMware vCenter
Supports MultiYes
Is ConnectedNo
SSL Validation EnabledYes
Mount On Host--
Mount QueuesYes
Mount AsyncYes
Mount Throttle5
Description--
Host Namevcenter-03v.pharmax.local
Username--
Fast Attach--
Mount ESXi--
ESXi Username--
Use Local Volumes--
Use Reconfigure QueuesYes
Use Async--
Concurrent Mount Operations5
SSL ValidationYes
SSL Fingerprint--
-
Table 45 - Machine Manager - vcenter-03v.pharmax.local

-

1.5.5 Storage Overview

1.5.5.1 Packages

+
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

Default Storage Location[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Default Storage Pathappvolumes/packages
Default Template Pathappvolumes/packages_templates
-
Table 46 - Packages - horizon-apv-01v.pharmax.local

-

1.5.5.2 Writable Volumes

+
Table 84 - Packages - Horizon-APV-01V.pharmax.local

+

1.6.5.2 Storage Overview Writable Volumes

@@ -706,27 +1159,32 @@
Default Storage Location[PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK
Default Storage Pathappvolumes/writables
Default Backup Pathappvolumes/writables_backup
Template Pathappvolumes/writables_templates
-
Table 47 - Packages - horizon-apv-01v.pharmax.local

-

1.5.6 Manager Servers

1.5.6.1 HORIZON-APV-01V

+
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

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

+

Manager Servers Details - HORIZON-APV-01V

- - + + - + - +
Product VersionApp Volumes 4, version 2206 (4.7.0.64)
Internal Version4.7.0.64
Product VersionApp Volumes 4, version 2309 (4.12.0.81)
Internal Version4.12.0.81
Domain NamePHARMAX
Computer NameHORIZON-APV-01V
Computer FQDNHorizon-APV-01V.pharmax.local
Computer FQDNUnknown
RegisteredYes
SecureYes
StatusRegistered
First Seen AtAug 25 2022
Last Seen AtOct 07 2022
Last Seen AtJan 02 2024
-
Table 48 - Manager Server - HORIZON-APV-01V

-

1.5.7 Settings

+
Table 87 - Manager Servers Details - HORIZON-APV-01V

+

1.6.7 Settings

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

- + @@ -734,8 +1192,9 @@ +
UI Session Timeout30
Non-Domain EntitiesNo
Writeable Volumes Regular BackupsYes
Writeable Volumes Regular Backups Interval7 days
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 Token AD QueryNo
Enable Volumes (2.x)No
Allow package delivery to any operating systemYes
VMDK Package ResiliencyNo
Join the VMware CEIPYes
-
Table 49 - Settings - horizon-apv-01v.pharmax.local

+
Table 88 - Settings - Horizon-APV-01V.pharmax.local


diff --git a/Samples/Sample VMware AppVolumes As Built Report.pdf b/Samples/Sample VMware AppVolumes As Built Report.pdf index f59100c..0a5b5aa 100644 Binary files a/Samples/Sample VMware AppVolumes As Built Report.pdf and b/Samples/Sample VMware AppVolumes As Built Report.pdf differ diff --git a/Src/Private/Get-AbrAPPVolApplication.ps1 b/Src/Private/Get-AbrAPPVolApplication.ps1 new file mode 100644 index 0000000..6123b0a --- /dev/null +++ b/Src/Private/Get-AbrAPPVolApplication.ps1 @@ -0,0 +1,257 @@ +function Get-AbrAPPVolApplication { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Product information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Products InfoLevel set at $($InfoLevel.AppVolumes.Products)." + Write-PscriboMessage "Collecting Products information." + } + + process { + if ($InfoLevel.AppVolumes.Products -ge 1) { + 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"} + + if ($Products.data) { + section -Style Heading3 'Application Summary' { + Paragraph "The following section provide a summary of the applications captured on $($AppVolServer.split('.')[0])." + Blankline + $OutObj = @() + foreach ($Product in $Products.data) { + 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"} + + $ProductPackage = $ProductIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + + $inObj = [ordered] @{ + 'Name' = $Product.Name + 'Status' = $Product.Status + 'Created' = $Product.created_At_Human + 'Template Version' = $ProductPackage.template_version + 'Agent Version' = $ProductPackage.agent_version + 'Applications Count' = $ProductPackage.programs_count + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + $TableParams = @{ + Name = "Application Summary - $($AppVolServer)" + List = $false + ColumnWidths = 25, 15, 15, 15, 15, 15 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property Name | Table @TableParams + if ($InfoLevel.AppVolumes.Products -ge 2) { + 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"} + + 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"} + + foreach ($ActiveDirectoryUser in $ActiveDirectoryUsers) { + 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){ + $OwnerName = $UserDetails.upn + Break + } + } + } + + $ProductPackage = $ProductIDSource.data | Where-Object {$_.app_markers.name -eq 'CURRENT'} + if ($Product) { + section -Style Heading5 "Application Details - $($Product.Name)" { + $OutObj = @() + $inObj = [ordered] @{ + 'Name' = $Product.Name + 'Status' = $Product.Status + 'Owner' = $OwnerName + 'Total Assignments' = $Product.assignment_count + 'Created' = $Product.created_At_Human + 'Modified' = $Product.updated_at_human + 'Description' = $Product.description + 'RDS Package Attachment' = $Product.allow_multiple_package_attachment + 'Last Synchronized' = $Product.synced_at_human + 'Sync Status' = $Product.sync_status + + } + $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + + $TableParams = @{ + Name = "Application Details - $($Product.Name)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + try { + $ProductPackages = $ProductIDSource.data + if ($ProductPackage) { + 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()} + } + 'Mounted' = Switch ($Package.mounted_at) { + $Null {'--'} + default {([DateTime]$Package.mounted_at).ToShortDateString()} + } + 'Size' = $Package.size_human + 'Current' = Switch ($Package.app_markers.name) { + $null {'No'} + 'CURRENT' {'Yes'} + default {'--'} + } + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + + $TableParams = @{ + Name = "Application Packages - $($Product.Name)" + List = $false + ColumnWidths = 25, 15, 15, 15, 15, 15 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property 'Version' -Descending | Table @TableParams + try { + $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"} + + if ($ProductPrograms.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Application Programs" { + $OutObj = @() + foreach ($Program in $ProductPrograms.data) { + $inObj = [ordered] @{ + 'Name' = $Program.Name + 'Version' = $Program.Version + 'Created' = $Program.created_At_Human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + + $TableParams = @{ + Name = "Application Programs - $($Product.Name)" + List = $false + ColumnWidths = 50, 30, 20 + } + 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 + } + 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"} + + if ($ProductAssignments.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Application Assignment" { + $OutObj = @() + foreach ($ProductAssignment in $ProductAssignments.data) { + try { + $inObj = [ordered] @{ + 'Name' = $ProductAssignment.entities.upn + 'Type' = $ProductAssignment.entities.entity_type + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Application Assignment - $($Product.Name)" + List = $false + ColumnWidths = 50, 50 + } + 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 + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolADDomain.ps1 b/Src/Private/Get-AbrAppVolADDomain.ps1 index a89eb8a..3f658e9 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -34,28 +34,36 @@ function Get-AbrAppVolADDomain { } else {$LDAPDomains = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/ldap_domains"} if ($LDAPDomains) { 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) { - section -Style Heading3 $LDAPDomain.domain { + + If($LDAPDomain.ldaps -like 'True'){ + $Security = 'LADPS' + }elseif($LDAPDomain.ldaps -like 'False' -and $LDAPDomain.ldap_tls -like 'False'){ + $Security = 'LADP' + } + elseif($LDAPDomain.ldap_tls -like 'True'){ + $Security = 'LADPS over TLS' + } + section -Style Heading4 "AD Domain Summary" { try { $inObj = [ordered] @{ - 'Username' = $LDAPDomain.username - 'Base' = $LDAPDomain.base + 'Domain' = $LDAPDomain.domain 'NetBIOS' = $LDAPDomain.netbios - 'LDAPS' = $LDAPDomain.ldaps - 'LDAP_TLS' = $LDAPDomain.ldap_tls + 'Base' = $LDAPDomain.base + 'Username' = $LDAPDomain.username + 'Security' = $Security 'SSL Verify' = $LDAPDomain.ssl_verify - 'Port' = $LDAPDomain.port - 'Effective Port' = $LDAPDomain.effective_port - 'Created At' = $LDAPDomain.created_at - 'Updated At' = $LDAPDomain.updated_at + 'Port' = $LDAPDomain.effective_port } - $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) $TableParams = @{ - Name = "Active Directory Domains - $($LDAPDomain.domain)" - List = $true - ColumnWidths = 50, 50 + Name = "AD Domain Summary - $($AppVolServer)" + List = $false + ColumnWidths = 20, 20, 15, 15, 10, 10, 10 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" @@ -65,6 +73,43 @@ function Get-AbrAppVolADDomain { 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)" { + try { + $inObj = [ordered] @{ + 'Username' = $LDAPDomain.username + 'Base' = $LDAPDomain.base + 'NetBIOS' = $LDAPDomain.netbios + 'LDAPS' = $LDAPDomain.ldaps + 'LDAP_TLS' = $LDAPDomain.ldap_tls + 'SSL Verify' = $LDAPDomain.ssl_verify + '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 + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + + + } } } } diff --git a/Src/Private/Get-AbrAppVolADGroup.ps1 b/Src/Private/Get-AbrAppVolADGroup.ps1 index f3cd60f..d5522ef 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -40,12 +40,11 @@ function Get-AbrAppVolADGroup { foreach ($ActiveDirectoryGroup in $ActiveDirectoryGroups.groups) { try { $inObj = [ordered] @{ - 'Name' = $ActiveDirectoryGroup.Name - 'Last Logon' = $ActiveDirectoryGroup.last_login_human.split()[0,1,2] -join ' ' - 'Status' = $ActiveDirectoryGroup.status + 'Group Name' = $ActiveDirectoryGroup.Name 'Writable' = $ActiveDirectoryGroup.writables - 'AppStack' = $ActiveDirectoryGroup.appstacks 'Assignments' = $ActiveDirectoryGroup.application_assignment_count + 'Last Logon' = $ActiveDirectoryGroup.last_login_human.split()[0,1,2] -join ' ' + 'Status' = $ActiveDirectoryGroup.status } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } @@ -57,7 +56,7 @@ function Get-AbrAppVolADGroup { $TableParams = @{ Name = "Managed Groups - $($AppVolServer)" List = $false - ColumnWidths = 30, 16, 16, 12, 12, 14 + ColumnWidths = 30, 15, 15, 25, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" diff --git a/Src/Private/Get-AbrAppVolADOU.ps1 b/Src/Private/Get-AbrAppVolADOU.ps1 index 8b91379..45f597a 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -27,14 +27,14 @@ function Get-AbrAppVolADOU { } process { - if ($InfoLevel.AppVolumes.ADOus -ge 1) { + if ($InfoLevel.AppVolumes.ADOUs -ge 1) { 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"} if ($ActiveDirectoryOUs) { - section -Style Heading3 "Managed OUs" { + 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 = @() @@ -45,7 +45,6 @@ function Get-AbrAppVolADOU { 'Last Logon' = $ActiveDirectoryOU.last_login_human.split()[0,1,2] -join ' ' 'Status' = $ActiveDirectoryOU.status 'Writable' = $ActiveDirectoryOU.writables - 'AppStack' = $ActiveDirectoryOU.appstacks 'Assignments' = $ActiveDirectoryOU.application_assignment_count } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) @@ -56,9 +55,9 @@ function Get-AbrAppVolADOU { } $TableParams = @{ - Name = "Managed Ous - $($AppVolServer)" + Name = "Managed OU's - $($AppVolServer)" List = $false - ColumnWidths = 30, 16, 16, 12, 12, 14 + ColumnWidths = 34, 24, 16, 12, 14 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" diff --git a/Src/Private/Get-AbrAppVolADUser.ps1 b/Src/Private/Get-AbrAppVolADUser.ps1 index 568cc46..537e2b8 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -39,27 +39,34 @@ function Get-AbrAppVolADUser { Blankline $OutObj = @() foreach ($ActiveDirectoryUser in $ActiveDirectoryUsers) { - try { - $inObj = [ordered] @{ - 'Name' = $ActiveDirectoryUser.upn - 'Last Logon' = $ActiveDirectoryUser.last_login_human.split()[0,1,2] -join ' ' - 'Status' = $ActiveDirectoryUser.status - 'Writable' = $ActiveDirectoryUser.writables - 'AppStack' = $ActiveDirectoryUser.appstacks - 'Assignments' = $ActiveDirectoryUser.application_assignment_count - 'Login' = $ActiveDirectoryUser.logins + if ($ActiveDirectoryUser) { + if($ActiveDirectoryUser.last_login_human){ + $LastLogonUser = $ActiveDirectoryUser.last_login_human.split()[0,1,2] -join ' ' + }else{ + $LastLogonUser = "Never" + } + try { + $inObj = [ordered] @{ + 'Name' = $ActiveDirectoryUser.upn + 'Writable' = $ActiveDirectoryUser.writables + 'Assignments' = $ActiveDirectoryUser.application_assignment_count + 'Attachments' = $ActiveDirectoryUser.attachments + 'Login' = $ActiveDirectoryUser.logins + 'Last Logon' = $LastLogonUser + 'Status' = $ActiveDirectoryUser.status + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message } - $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message } } $TableParams = @{ Name = "Managed Users - $($AppVolServer)" List = $false - ColumnWidths = 24, 14, 13, 12, 12, 14, 11 + ColumnWidths = 26, 12, 14, 14, 10, 14, 10 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" diff --git a/Src/Private/Get-AbrAppVolAdminRole.ps1 b/Src/Private/Get-AbrAppVolAdminRole.ps1 index 4b7ab26..8877ccd 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -35,6 +35,9 @@ function Get-AbrAppVolAdminRole { if ($AdminGroups) { section -Style Heading3 "Administrator Roles" { + Paragraph "The following section details administrative rolls for $($AppVolServer.split('.')[0])." + BlankLine + $OutObj = @() foreach ($AdminGroup in $AdminGroups.group_permissions) { try { diff --git a/Src/Private/Get-AbrAppVolAppstack.ps1 b/Src/Private/Get-AbrAppVolAppstack.ps1 index 37856b9..9a45cc1 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport diff --git a/Src/Private/Get-AbrAppVolAssignment.ps1 b/Src/Private/Get-AbrAppVolAssignment.ps1 new file mode 100644 index 0000000..618afe4 --- /dev/null +++ b/Src/Private/Get-AbrAppVolAssignment.ps1 @@ -0,0 +1,104 @@ +function Get-AbrAppVolAssignment { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Appstack information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Assignment InfoLevel set at $($InfoLevel.AppVolumes.Assignments)." + Write-PscriboMessage "Collecting Assignment information." + } + + process { + if ($InfoLevel.AppVolumes.Assignments -ge 1) { + 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&"} + + if ($AssignmentsAll) { + section -Style Heading3 'Assignments Summary' { + Paragraph "The following section provide a summary of the assignments on $($AppVolServer.split('.')[0])." + Blankline + $OutObj = @() + foreach ($AA in $AssignmentsAll.data | Sort-Object -Property Name) { + 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?"} + $JoinedNames = ($Programs.data | ForEach-Object { $_.Name }) -join ', ' + }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?"} + $JoinedNames = ($Programs.data | ForEach-Object { $_.Name }) -join ', ' + } + + # Filter Value + If(!([string]::IsNullOrWhitespace($AA.Filters.value))){ + $filters = $AA.Filters.value + } + else{ + $filters = 'All' + } + + #App Marker Value + If([string]::IsNullOrWhitespace($AA.app_marker_name)){ + $AppMarkerName = 'Package' + } + else{ + $AppMarkerName = $AA.app_marker_name + } + + try { + $inObj = [ordered] @{ + 'Entity' = $aa.entities.upn + 'Marker' = $AppMarkerName + 'Package' = $aa.app_package_name + 'Applications' = $JoinedNames + 'Computers' = $filters + 'Assigned' = $aa.created_At_Human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + $TableParams = @{ + Name = "Assignment Summary - $($AppVolServer)" + List = $false + ColumnWidths = 20, 13, 20, 23, 12, 12 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property Name | Table @TableParams + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolComputer.ps1 b/Src/Private/Get-AbrAppVolComputer.ps1 new file mode 100644 index 0000000..2fbb01d --- /dev/null +++ b/Src/Private/Get-AbrAppVolComputer.ps1 @@ -0,0 +1,79 @@ +function Get-AbrAppVolComputer { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Active Directory users information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Managed Computers InfoLevel set at $($InfoLevel.AppVolumes.Computers)." + Write-PscriboMessage "Collecting Managed Computers information." + } + + process { + if ($InfoLevel.AppVolumes.Computers -ge 1) { + 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&"} + + if ($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 + $OutObj = @() + foreach ($Computer in $Computers) { + try { + $inObj = [ordered] @{ + 'Computer' = $Computer.name + 'Agent' = $Computer.agent_version + 'OS' = $Computer.OS + 'Writables' = $Computer.writables + 'Assignments' = $Computer.application_assignment_count + 'Attachments' = $Computer.attachments + 'Boots' = $Computer.logins + 'Last Boot' = $Computer.last_login_human + 'Status' = $Computer.Status + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Managed Computers - $($AppVolServer)" + List = $false + ColumnWidths = 20, 14, 11, 7, 8, 8, 7, 15, 10 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj| Sort-Object -Property upn | Table @TableParams + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolDatastore.ps1 b/Src/Private/Get-AbrAppVolDatastore.ps1 index 47dd683..2cb1a54 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -35,6 +35,8 @@ function Get-AbrAppVolDatastore { if ($Datastores) { 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){ @@ -52,7 +54,7 @@ function Get-AbrAppVolDatastore { } } try { - section -Style Heading4 "Packages" { + section -Style Heading4 "Storage Overview Packages" { $OutObj = @() $inObj = [ordered] @{ 'Default Storage Location' = "[$($Datastores.Datacenter)] $DatastoreAppStorage" @@ -76,7 +78,7 @@ function Get-AbrAppVolDatastore { Write-PscriboMessage -IsWarning $_.Exception.Message } try { - section -Style Heading4 "Writable Volumes" { + section -Style Heading4 "Storage Overview Writable Volumes" { $OutObj = @() $inObj = [ordered] @{ 'Default Storage Location' = "[$($Datastores.Datacenter)] $DatastoreWritableStorage" diff --git a/Src/Private/Get-AbrAppVolGeneral.ps1 b/Src/Private/Get-AbrAppVolGeneral.ps1 index 50b80f7..d062431 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -32,7 +32,17 @@ function Get-AbrAPPVolGeneral { 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"} - if ($GeneralAppInfo) { + 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"} + 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"} + 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"} + + if ($GeneralAppInfo -and $LDAPDomains -and $Managers) { $OutObj = @() section -Style Heading2 "General Information" { Paragraph "The following section provide a summary of common information on $($AppVolServer.split('.')[0])." @@ -42,13 +52,16 @@ function Get-AbrAPPVolGeneral { 'Version' = $GeneralAppInfo.version 'Configured' = ConvertTo-TextYN $GeneralAppInfo.configured 'Uptime' = $GeneralAppInfo.uptime + 'Number of Domains' = ($LDAPDomains.ldap_domains).count + 'Number of App Volumes Managers' = ($Managers.services).count + 'Number of vCenters' = ($MachineManagers.machine_managers).Count } $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) $TableParams = @{ Name = "General Information - $($AppVolServer)" List = $true - ColumnWidths = 50, 50 + ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" diff --git a/Src/Private/Get-AbrAppVolInstance.ps1 b/Src/Private/Get-AbrAppVolInstance.ps1 new file mode 100644 index 0000000..76ff1c2 --- /dev/null +++ b/Src/Private/Get-AbrAppVolInstance.ps1 @@ -0,0 +1,133 @@ +function Get-AbrAppVolInstance { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Active Directory OU information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Instance InfoLevel set at $($InfoLevel.AppVolumes.Instances)." + Write-PscriboMessage "Collecting Instance information." + } + + process { + if ($InfoLevel.AppVolumes.Instances -ge 1) { + 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"} + + if ($Instances.data) { + 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){ + + # 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'){ + $InstanceType = 'Source' + } + else{ + $InstanceType = 'Target' + } + + try { + $inObj = [ordered] @{ + 'Name' = $Instance.attributes.Name + 'Host' = $Instance.attributes.Host + 'Type' = $InstanceType + 'Status' = $Instance.attributes.Status + 'Sync Count' = ($SyncCount).ToString() + 'Last Sync' = $Instance.attributes.synchronized_at_human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + + $TableParams = @{ + Name = "App Volumes Instances - $($AppVolServer)" + List = $false + ColumnWidths = 20, 29, 12, 12, 12, 15 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $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 + } + + } + }catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + #} + } + + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolJob.ps1 b/Src/Private/Get-AbrAppVolJob.ps1 new file mode 100644 index 0000000..eb55b20 --- /dev/null +++ b/Src/Private/Get-AbrAppVolJob.ps1 @@ -0,0 +1,74 @@ +function Get-AbrAppVolJob { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Active Directory OU information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Jobs InfoLevel set at $($InfoLevel.AppVolumes.Jobs)." + Write-PscriboMessage "Collecting Job information." + } + + process { + if ($InfoLevel.AppVolumes.Jobs -ge 1) { + 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"} + + if ($Jobs) { + section -Style Heading3 "Scheduled Jobs" { + Paragraph "The following section provide a summary of scheduled jobs for $($AppVolServer.split('.')[0])." + BlankLine + $OutObj = @() + foreach ($Job in $Jobs.jobs) { + try { + $inObj = [ordered] @{ + 'Name' = $Job.name + 'Status' = $job.status + 'Interval' = $Job.interval_in_words + 'Last Run At' = $Job.last_run_at + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Scheduled Jobs - $($AppVolServer)" + List = $false + ColumnWidths = 30, 20, 30, 20 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj| Sort-Object -Property Name | Table @TableParams + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolLicense.ps1 b/Src/Private/Get-AbrAppVolLicense.ps1 index da413ea..28be209 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -36,6 +36,9 @@ function Get-AbrAPPVolLicense { if ($License) { $OutObj = @() section -Style Heading3 "License Information" { + Paragraph "The following section details license information for $($AppVolServer.split('.')[0])." + BlankLine + Switch ($License.license.invalid) { 'True' {$LicenseInvalid = 'False' } diff --git a/Src/Private/Get-AbrAppVolMachine.ps1 b/Src/Private/Get-AbrAppVolMachine.ps1 new file mode 100644 index 0000000..c35aa8c --- /dev/null +++ b/Src/Private/Get-AbrAppVolMachine.ps1 @@ -0,0 +1,75 @@ +function Get-AbrAppVolMachine { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Active Directory OU information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Managed Machines InfoLevel set at $($InfoLevel.AppVolumes.Machines)." + Write-PscriboMessage "Collecting Managed Machines information." + } + + process { + if ($InfoLevel.AppVolumes.Machines -ge 1) { + 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"} + + if ($Machines) { + 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'})) { + try { + $inObj = [ordered] @{ + 'Name' = $Machines.name + 'Host' = $Machines.Host + 'Source' = $Machines.Source + 'Created' = $Machines.Created_at_human + 'Status' = $Machines.Status + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Managed Machines Summary - $($AppVolServer)" + List = $false + ColumnWidths = 34, 24, 16, 12, 14 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj| Sort-Object -Property Name | Table @TableParams + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolMachineManager.ps1 b/Src/Private/Get-AbrAppVolMachineManager.ps1 index 6674c47..fb0bedf 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -34,45 +34,121 @@ function Get-AbrAppVolMachineManager { } else {$MachineManagers = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers"} if ($MachineManagers) { - section -Style Heading3 "Machine Manager" { - $OutObj = @() - foreach ($MachineManager in $MachineManagers.machine_managers | Sort-Object -Property Host) { - section -Style Heading3 $MachineManager.host { - if ($PSVersionTable.PSEdition -eq 'Core') { - $MachineManagerDetail = Invoke-RestMethod -SkipCertificateCheck -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers/$($MachineManager.id)" - } else {$MachineManagerDetail = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/machine_managers/$($MachineManager.id)"} - + 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" { + $OutObj = @() + foreach ($MachineManager in $MachineManagers.machine_managers | Sort-Object -Property Host) { try { $inObj = [ordered] @{ - 'Username' = $MachineManager.Username - "Host Username" = $MachineManagerDetail.machine_manager.host_username + 'Host' = $MachineManager.host + "Username" = $MachineManager.username 'Type' = $MachineManager.type - 'Supports Multi' = $MachineManager.supports_multi - "Is Connected" = $MachineManagerDetail.machine_manager.is_connected - "SSL Validation Enabled" = $MachineManagerDetail.machine_manager.ssl_validation_enabled - "Mount On Host" = $MachineManagerDetail.machine_manager.settings.mount_on_host - "Mount Queues" = $MachineManagerDetail.machine_manager.settings.use_reconfig_queues - "Mount Async" = $MachineManagerDetail.machine_manager.settings.use_async - "Mount Throttle" = $MachineManagerDetail.machine_manager.settings.concurrent_reconfigs - "Description" = $MachineManagerDetail.machine_manager.description } - $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } catch { Write-PscriboMessage -IsWarning $_.Exception.Message } + } + + $TableParams = @{ + Name = "Machine Managers - $($AppVolServer)" + List = $false + ColumnWidths = 40, 40, 20 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + + 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)" { + + 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 { + $inObj = [ordered] @{ + 'Type' = $MachineManagerDetail.type + 'Host Name' = $MachineManagerDetail.host + 'Username' = $MachineManagerDetail.host_username + 'Fast Attach' = $MachineManagerDetail.settings.fast_attach + 'Mount ESXi' = $MachineManagerDetail.settings.mount_on_host + 'ESXi Username' = $MachineManagerDetail.host_username + 'Use Local Volumes' = $MachineManagerDetail.settings.use_local_volumes + 'Use Reconfigure Queues' = $MachineManagerDetail.settings.use_async + 'Use Async' = $MachineManagerDetail.settings.fast_attach + 'Concurrent Mount Operations' = $MachineManagerDetail.settings.concurrent_reconfigs + 'SSL Validation' = $MachineManagerDetail.ssl_validation_enabled + 'SSL Fingerprint' = $MachineManagerDetail.ssl_fingerprint + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) - $TableParams = @{ - Name = "Machine Manager - $($MachineManager.host)" - List = $true - ColumnWidths = 50, 50 + + $TableParams = @{ + Name = "Machine Manager Details - $($MachineManager.host)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" + } + } + <# + if ($InfoLevel.AppVolumes.MachineManagers -ge 2) { + $OutObj = @() + foreach ($MachineManager in $MachineManagers.machine_managers | Sort-Object -Property Host) { + section -ExcludeFromTOC -Style NOTOCHeading5 "Machine Manager Certficate 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 { + $inObj = [ordered] @{ + 'Type' = $MachineManagerDetail.type + 'Host Name' = $MachineManagerDetail.host + 'Username' = $MachineManagerDetail.host_username + 'Fast Attach' = $MachineManagerDetail.settings.fast_attach + 'Mount ESXi' = $MachineManagerDetail.settings.mount_on_host + 'ESXi Username' = $MachineManagerDetail.host_username + 'Use Local Volumes' = $MachineManagerDetail.settings.use_local_volumes + 'Use Reconfigure Queues' = $MachineManagerDetail.settings.use_async + 'Use Async' = $MachineManagerDetail.settings.fast_attach + 'Concurrent Mount Opperations' = $MachineManagerDetail.settings.concurrent_reconfigs + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + + $TableParams = @{ + Name = "Machine Manager Certficate Details - $($MachineManager.host)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } } - $OutObj | Table @TableParams } } + #> + } } } diff --git a/Src/Private/Get-AbrAppVolManager.ps1 b/Src/Private/Get-AbrAppVolManager.ps1 index 64edb9f..88d8293 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -35,39 +35,75 @@ function Get-AbrAPPVolManager { if ($Managers) { $OutObj = @() - section -Style Heading3 "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 $Manager.name { + section -Style Heading4 "App Volumes Manager Server Details - $($AppVolServer.split('.')[0])" { try { $inObj = [ordered] @{ - 'Product Version' = $Manager.product_version - 'Internal Version' = $Manager.internal_version - 'Domain Name' = $Manager.domain_name - 'Computer Name' = $Manager.computer_name - 'Computer FQDN' = $Manager.fqdn - 'Registered' = ConvertTo-TextYN $Manager.registered - 'Secure' = ConvertTo-TextYN $Manager.secure + 'Manager Name' = $Manager.name + 'Version' = $Manager.internal_version 'Status' = $Manager.status - 'First Seen At' = $Manager.first_seen_at_human - 'Last Seen At' = $Manager.last_seen_at_human + 'First Seen' = $Manager.first_seen_at_human + 'Last Seen' = $Manager.last_seen_at_human } - $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) - - $TableParams = @{ - Name = "Manager Server - $($Manager.name)" - List = $true - ColumnWidths = 50, 50 - } - if ($Report.ShowTableCaptions) { - $TableParams['Caption'] = "- $($TableParams.Name)" - } - $OutObj | Table @TableParams + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } catch { Write-PscriboMessage -IsWarning $_.Exception.Message } + + $TableParams = @{ + Name = "App Volumes Manager Server Details - $($AppVolServer.split('.')[0])" + List = $false + ColumnWidths = 30, 36, 10, 12, 12 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + + } + } + 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 { + $inObj = [ordered] @{ + 'Product Version' = $Manager.product_version + 'Internal Version' = $Manager.internal_version + 'Domain Name' = $Manager.domain_name + 'Computer Name' = $Manager.computer_name + 'Computer FQDN' = $Manager.fqdn + 'Registered' = ConvertTo-TextYN $Manager.registered + 'Secure' = ConvertTo-TextYN $Manager.secure + 'Status' = $Manager.status + 'First Seen At' = $Manager.first_seen_at_human + 'Last Seen At' = $Manager.last_seen_at_human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + $TableParams = @{ + Name = "Manager Servers Details - $($Manager.name)" + List = $true + ColumnWidths = 50, 50 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } } + + } + } } } diff --git a/Src/Private/Get-AbrAppVolPackage.ps1 b/Src/Private/Get-AbrAppVolPackage.ps1 new file mode 100644 index 0000000..2ff4d77 --- /dev/null +++ b/Src/Private/Get-AbrAppVolPackage.ps1 @@ -0,0 +1,296 @@ +function Get-AbrAppVolPackage { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Appstack information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Packages InfoLevel set at $($InfoLevel.AppVolumes.Packages)." + Write-PscriboMessage "Collecting Packages information." + } + + process { + if ($InfoLevel.AppVolumes.Packages -ge 1) { + 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"} + + if ($AppPackages.data) { + section -Style Heading3 'Packages Summary' { + Paragraph "The following section provide a summary of the packages on $($AppVolServer.split('.')[0])." + Blankline + $OutObj = @() + foreach ($AppPackage in $AppPackages.data) { + try { + $AppPackageID = $AppPackage.id + + $inObj = [ordered] @{ + 'Name' = $AppPackage.Name + 'Application' = $AppPackage.app_product.name + 'Stage' = $AppPackage.lifecycle_stage.name + 'Status' = $AppPackage.status + 'Version' = $AppPackage.version + 'Size' = $AppPackage.size_human + 'Added' = $AppPackage.added_at_human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + $TableParams = @{ + Name = "Packages - $($AppVolServer)" + List = $false + ColumnWidths = 20, 15, 15, 10, 15, 15, 10 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property Name | Table @TableParams + #> + if ($InfoLevel.AppVolumes.Packages -ge 2) { + section -Style Heading4 "Packages Details" { + foreach ($AppPackage in $AppPackages.data | Sort-Object -Property Name) { + try { + if ($AppPackage) { + section -Style Heading5 "Package - $($AppPackage.Name)" { + $OutObj = @() + $inObj = [ordered] @{ + 'App Name' = $AppPackage.Name + 'Application Name' = $AppPackage.app_product.name + 'Version #' = $AppPackage.version + 'Current Status' = $AppPackage.status + 'Life Cycle Stage' = $AppPackage.lifecycle_stage.name + 'Delivery' = $AppPackage.delivery + 'Total Attachments' = $AppPackage.Total_Use_Count + 'File Name' = $AppPackage.filename + 'Format' = $AppPackage.format + 'Template' = $AppPackage.template_file_name + 'Agent Version' = $AppPackage.agent_version + 'Base Package' = $AppPackage.base_app_package.name + 'Date Added' = $AppPackage.created_At_Human + 'Modified' = $AppPackage.updated_at_human + 'Description' = $AppPackage.description + 'Note' = $AppPackage.note + 'Programs Count' = $AppPackage.programs_count + 'Operating Systems Count' = $AppPackage.operating_systems_count + 'Package Size' = $AppPackage.size_human + 'On-Demand Capable' = $AppPackage.capable_of_on_demand + 'Attachment Limit' = $AppPackage.attachment_limit + 'Path' = $AppPackage.Path + 'Datastore Name' = $AppPackage.datastore_Name + 'OS Version' = $AppPackage.primordial_os_name + 'Provisioning Duration' = $AppPackage.provision_duration + 'Is Current' = $AppPackage.app_markers.name + } + $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + + $TableParams = @{ + Name = "Package Details - $($AppPackage.Name)" + List = $true + ColumnWidths = 30, 70 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + 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)." + if ($Programs.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Programs" { + $OutObj = @() + foreach ($Program in $Programs.data) { + 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} + } + 'Program Updated' = Switch ($Program.Updated_At_Human) { + $Null {'--'} + default {$Program.Updated_At_Human} + } + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + } + + $TableParams = @{ + Name = "Programs for Application - $($AppPackage.Name)" + List = $false + ColumnWidths = 25, 10, 25, 20, 20 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property 'Program Name' -Descending | Table @TableParams + } + } + } catch { + 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"} + if ($OperatingSystems.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Operating Systems" { + $OutObj = @() + foreach ($OS in $OperatingSystems.data) { + if($OS){ + $inObj = [ordered] @{ + 'OS Name' = $OS.Name + 'OS Version' = $($($OS.major_version)+'.'+$($OS.minor_version)) + 'Processor Arch' = $OS.proc_arch + 'Type' = $OS.product_type_human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + } + + $TableParams = @{ + Name = "Operating Systems for - $($AppStack.Name)" + List = $false + ColumnWidths = 30, 30, 20, 20 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property 'OS Name' | Table @TableParams + } + } + } catch { + 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?"} + + if ($StorageLocations.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Storage Locations for - $($AppPackage.Name)" { + $OutObj = @() + foreach ($StorageLocation in $StorageLocations.data) { + try { + $inObj = [ordered] @{ + 'Location' = $StorageLocation.storage_location + 'Path' = $StorageLocation.path + 'Host' = $StorageLocation.machine_manager_host + 'File Status' = $StorageLocation.reachable + 'Created' = $StorageLocation.created_At_Human + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Storage Location for - $($AppPackage.Name)" + List = $false + ColumnWidths = 20, 30, 20, 15, 15 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property 'Location' | Table @TableParams + } + } + } 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?"} + + if ($AppLinks.data) { + section -ExcludeFromTOC -Style NOTOCHeading6 "Application links for - $($AppPackage.Name)" { + $OutObj = @() + foreach ($AppLink in $AppLinks.data) { + If($AppLink){ + if($AppLink.name){ + $ApplinkName = $AppLink.name + }else{ + $ApplinkName = '--' + } + if($AppLink.entry_point){ + $ApplinkEntryPoint = $AppLink.entry_point + }else{ + $ApplinkEntryPoint = '--' + } + + try { + $inObj = [ordered] @{ + 'App Link Name' = $ApplinkName + 'Entry Point' = $ApplinkEntryPoint + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + + $TableParams += @{ + Name = "Application links for - $($AppPackage.Name)" + List = $false + ColumnWidths = 20, 80 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $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 + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolProgram.ps1 b/Src/Private/Get-AbrAppVolProgram.ps1 new file mode 100644 index 0000000..229c59f --- /dev/null +++ b/Src/Private/Get-AbrAppVolProgram.ps1 @@ -0,0 +1,111 @@ +function Get-AbrAppVolProgram { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Appstack information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Programs InfoLevel set at $($InfoLevel.AppVolumes.Programs)." + Write-PscriboMessage "Collecting Programs information." + } + + process { + if ($InfoLevel.AppVolumes.Packages -ge 1) { + 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"} + + if ($ProgramsAll) { + section -Style Heading3 'Programs Summary' { + Paragraph "The following section provide a summary of the programs on $($AppVolServer.split('.')[0])." + Blankline + $OutObj = @() + foreach ($PA in $ProgramsAll.data) { + try { + $inObj = [ordered] @{ + 'App Name' = $PA.Name + 'Version #' = $PA.version + 'Publisher Name' = $PA.publisher + 'Package Name' = $PA.app_package.name + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + $TableParams = @{ + Name = "Programs - $($AppVolServer)" + List = $false + ColumnWidths = 25, 25, 25, 25 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Sort-Object -Property Name | Table @TableParams + if ($InfoLevel.AppVolumes.Programs -ge 2) { + section -Style Heading4 "Program Details" { + foreach ($PA in $ProgramsAll.data | Sort-Object -Property Name) { + try { + if ($PA) { + section -Style Heading5 "Program Details - $($PA.Name)" { + $OutObj = @() + $inObj = [ordered] @{ + 'Name' = $PA.Name + 'Package' = $PA.app_package.name + 'Publisher' = $PA.publisher + 'Install Location' = $PA.install_location + 'Version Number' = $PA.version + 'Created' = $PA.created_At_Human + 'Updated' = $PA.Updated_At_Human + 'Icon' = $PA.icon + } + $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) + + $TableParams = @{ + Name = "Program Details - $($PA.Name)" + List = $true + ColumnWidths = 30, 70 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj | Table @TableParams + } + + } + }catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + } + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolSetting.ps1 b/Src/Private/Get-AbrAppVolSetting.ps1 index dea1ec0..791c610 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -41,6 +41,9 @@ function Get-AbrAppVolSetting { if ($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){ @@ -96,13 +99,16 @@ function Get-AbrAppVolSetting { if($Setting.key -eq "disable_agent_session_cookie"){ $DisableAgentSessionCookie = $Setting.value } + if($Setting.key -eq "ENABLE_PARTIAL_RECONFIG"){ + $VMDKPackageResiliency = $Setting.value + } } $inObj = [ordered] @{ 'UI Session Timeout' = $UISessionTimeout 'Non-Domain Entities' = $NonDomainEntities 'Writeable Volumes Regular Backups' = $RegularBackups - 'Writeable Volumes Regular Backups Interval' = "$($RegularBackupsInterval) days" + 'Writeable Volumes Regular Backups Interval' = "$($RegularBackupsInterval) - days" 'Writeable Volumes Storage Location' = $DatastoreBackupName 'Writeable Volumes Storage Path' = $StoragePath 'Disable Agent Session Cookie' = $DisableAgentSessionCookie @@ -110,6 +116,7 @@ function Get-AbrAppVolSetting { 'Disable Token AD Query' = $DisableTokenADQuery 'Enable Volumes (2.x)' = $Disable2XVolumes 'Allow package delivery to any operating system' = $DisableDELIVERYTOANYOS + 'VMDK Package Resiliency' = $VMDKPackageResiliency 'Join the VMware CEIP' = $DisableJOINCEIP } $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) diff --git a/Src/Private/Get-AbrAppVolStorage.ps1 b/Src/Private/Get-AbrAppVolStorage.ps1 index be30b18..c03f0fc 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -22,8 +22,8 @@ function Get-AbrAppVolStorage { ) begin { - Write-PScriboMessage "StorageLocations InfoLevel set at $($InfoLevel.AppVolumes.StorageLocations)." - Write-PscriboMessage "Collecting Active Directory Domain information." + Write-PScriboMessage "Storage Locations InfoLevel set at $($InfoLevel.AppVolumes.StorageLocations)." + Write-PscriboMessage "Collecting storage location information." } process { @@ -34,7 +34,7 @@ function Get-AbrAppVolStorage { } else {$Storages = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/storages"} if ($Storages) { - section -Style Heading3 "Storages" { + 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 = @() @@ -59,7 +59,7 @@ function Get-AbrAppVolStorage { $TableParams = @{ Name = "Storages - $($AppVolServer)" List = $false - ColumnWidths = 28, 24, 12, 12, 12, 12 + ColumnWidths = 30, 14, 14, 14, 14, 14 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" @@ -71,21 +71,19 @@ function Get-AbrAppVolStorage { } else {$Datastores = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/cv_api/datastores"} if ($Datastores) { - section -Style Heading4 "Storage Details" { - Paragraph "The following section details Datastores seen by the manager $($AppVolServer.split('.')[0])." - BlankLine + #section -Style Heading4 "Storage Details" { $OutObj = @() foreach ($Datastore in $Datastores.datastores | Sort-Object -Property Name) { - section -ExcludeFromTOC -Style NOTOCHeading5 "$($DataStore.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 - 'Host' = $DataStore.host 'Template Storage' = $DataStore.template_storage 'Host Username' = $DataStore.host_username 'Free Space' = ConvertTo-FileSizeString $DataStore.free_space @@ -109,7 +107,7 @@ function Get-AbrAppVolStorage { } } } - } + #} } } } diff --git a/Src/Private/Get-AbrAppVolStorageGroup.ps1 b/Src/Private/Get-AbrAppVolStorageGroup.ps1 index 397616e..ad31866 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -35,77 +35,77 @@ function Get-AbrAppVolStorageGroup { if ($StorageGroups) { 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." + 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 Heading3 $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) + 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)"} + $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 + } + $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) + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + $TableParams = @{ + Name = "Datastore Members - $($StorageGroup.name)" + List = $false + ColumnWidths = 30, 30, 14, 13, 13 } - catch { - Write-PscriboMessage -IsWarning $_.Exception.Message + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" } + $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 - } - } } } } diff --git a/Src/Private/Get-AbrAppVolTSArchive.ps1 b/Src/Private/Get-AbrAppVolTSArchive.ps1 new file mode 100644 index 0000000..a7045ad --- /dev/null +++ b/Src/Private/Get-AbrAppVolTSArchive.ps1 @@ -0,0 +1,73 @@ +function Get-AbrAppVolTSArchive { + <# + .SYNOPSIS + Used by As Built Report to retrieve VMware APPVolume Active Directory OU information. + .DESCRIPTION + Documents the configuration of VMware APPVolume in Word/HTML/Text formats using PScribo. + .NOTES + Version: 1.1.0 + Author: Chris Hildebrandt, @childebrandt42 + Editor: Jonathan Colon, @jcolonfzenpr + Twitter: @asbuiltreport + Github: AsBuiltReport + Credits: Iain Brighton (@iainbrighton) - PScribo module + + + .LINK + https://github.com/AsBuiltReport/AsBuiltReport.VMware.AppVolumes + #> + + [CmdletBinding()] + param ( + ) + + begin { + Write-PScriboMessage "Troubleshooting Archive InfoLevel set at $($InfoLevel.AppVolumes.Troubleshooting)." + Write-PscriboMessage "Troubleshooting Archive information." + } + + process { + if ($InfoLevel.AppVolumes.Troubleshooting -ge 1) { + 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?"} + + if ($TSAs.trblarchive.data) { + section -Style Heading3 "Troubleshooting Archives" { + Paragraph "The following section provide a summary of troubleshooting archives for $($AppVolServer.split('.')[0])." + BlankLine + $OutObj = @() + foreach ($TSA in $TSAs.trblarchive.data) { + try { + $inObj = [ordered] @{ + 'File Name' = $TSA.filename + 'Status' = $TSA.Status + 'Size' = $TSA.Size + } + $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + + $TableParams = @{ + Name = "Troubleshooting Archives - $($AppVolServer)" + List = $false + ColumnWidths = 70, 15, 15 + } + if ($Report.ShowTableCaptions) { + $TableParams['Caption'] = "- $($TableParams.Name)" + } + $OutObj| Sort-Object -Property Name | Table @TableParams + } + } + } + catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + } + } + end {} +} \ No newline at end of file diff --git a/Src/Private/Get-AbrAppVolWritable.ps1 b/Src/Private/Get-AbrAppVolWritable.ps1 index 625e13e..2524f5b 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: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -34,18 +34,18 @@ function Get-AbrAppVolWritable { } else {$Writables = Invoke-RestMethod -WebSession $SourceServerSession -Method Get -Uri "https://$AppVolServer/app_volumes/writables"} if ($Writables) { - section -Style Heading3 "Writable AppStack" { - Paragraph "The following section provide a summary of Writable AppStack components on $($AppVolServer.split('.')[0])." + section -Style Heading3 "Writable Volumes" { + Paragraph "The following section provide a summary of writable volumes on $($AppVolServer.split('.')[0])." Blankline $OutObj = @() foreach ($Writable in $Writables.data) { try { $inObj = [ordered] @{ - 'Name' = $Writable.Name - 'Owner Type' = $Writable.Owner_Type + 'Owner' = $Writable.name + 'Storage' = $Writable.Datastore_Name 'Status' = $Writable.Status - 'Size Total/Free' = "$([math]::Round(($Writable.total_mb / 1024)))GB / $([math]::Round(($Writable.free_mb / 1024)))GB" - 'Datastore Name' = $Writable.Datastore_Name + 'Created' = $Writable.created_at_Human + 'State' = $Writable.attached } $OutObj += [pscustomobject](ConvertTo-HashToYN $inObj) } @@ -55,23 +55,21 @@ function Get-AbrAppVolWritable { } $TableParams = @{ - Name = "Writable AppStack - $($AppVolServer)" + Name = "Writable Volumes - $($AppVolServer)" List = $false - ColumnWidths = 30, 15, 15, 15, 25 + ColumnWidths = 25, 20, 15, 15, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $OutObj | Sort-Object -Property Name | Table @TableParams if ($InfoLevel.AppVolumes.Writables -ge 2) { - section -Style Heading4 "Writable AppStack Details" { - Paragraph "The following section details Writable AppStack settings configured on $($AppVolServer.split('.')[0])." - Blankline + section -Style Heading4 "Writable Volume Details" { foreach ($Writable in $Writables.data | Sort-Object -Property Name) { try { - section -ExcludeFromTOC -Style NOTOCHeading5 $Writable.Name { + section -ExcludeFromTOC -Style NOTOCHeading5 "Writable Volume Details for - $($Writable.Name)" { $inObj = [ordered] @{ - 'Owner' = $Writable.Owner_name + 'Owner' = $Writable.name 'Owner Type' = $Writable.Owner_Type 'Created Date' = $Writable.created_at_Human 'Last Updated Date' = $Writable.updated_At_human @@ -91,14 +89,14 @@ function Get-AbrAppVolWritable { 'File Name' = $Writable.filename 'Path' = $Writable.path 'Datastore Name' = $Writable.Datastore_Name - 'Datastore Protected' = $WritablesIDSource.protected - 'Datastore Can Expand' = $WritablesIDSource.can_expand - 'OS Version' = $WritablesIDSource.primordial_os_name + 'Datastore Protected' = $Writable.datastore_host.protected + 'Datastore Can Expand' = $Writable.can_expand + 'OS Version' = $Writable.datastore_host.primordial_os_name } $OutObj = [pscustomobject](ConvertTo-HashToYN $inObj) $TableParams = @{ - Name = "Writable AppStack - $($Writable.Name)" + Name = "Writable volumes details - $($Writable.Name)" List = $true ColumnWidths = 50, 50 } diff --git a/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 b/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 index 63b42a4..ad81a8c 100644 --- a/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 +++ b/Src/Public/Invoke-AsBuiltReport.VMware.AppVolumes.ps1 @@ -5,7 +5,7 @@ .DESCRIPTION Documents the configuration of VMware AppVolumes in Word/HTML/XML/Text formats using PScribo. .NOTES - Version: 0.2.0 + Version: 1.1.0 Author: Chris Hildebrandt, @childebrandt42 Editor: Jonathan Colon, @jcolonfzenpr Twitter: @asbuiltreport @@ -25,6 +25,24 @@ [String] $StylePath ) + if ($PSVersionTable.PSEdition -ne 'Core') { + + add-type @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ +[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." @@ -32,6 +50,22 @@ 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" + # Check the current AsBuiltReport.VMware.AppVolumes installed module + Try { + $InstalledVersion = Get-Module -ListAvailable -Name AsBuiltReport.VMware.AppVolumes -ErrorAction SilentlyContinue | Sort-Object -Property Version -Descending | Select-Object -First 1 -ExpandProperty Version + + if ($InstalledVersion) { + Write-PScriboMessage -IsWarning "AsBuiltReport.VMware.AppVolumes $($InstalledVersion.ToString()) is currently installed." + $LatestVersion = Find-Module -Name AsBuiltReport.Veeam.VBR -Repository PSGallery -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Version + if ($LatestVersion -gt $InstalledVersion) { + Write-PScriboMessage -IsWarning "AsBuiltReport.VMware.AppVolumes $($LatestVersion.ToString()) is available." + Write-PScriboMessage -IsWarning "Run 'Update-Module -Name AsBuiltReport.VMware.AppVolumes -Force' to install the latest version." + } + } + } Catch { + Write-PscriboMessage -IsWarning $_.Exception.Message + } + # Check if the required version of VMware PowerCLI is installed Get-RequiredModule -Name 'VMware.PowerCLI' -Version '12.7' @@ -66,21 +100,30 @@ Paragraph "The following section provides a summary of the implemented components on the VMware App Volumes infrastructure." Get-AbrAPPVolGeneral section -Style Heading2 "Inventory" { - Get-AbrAppVolAppstack + Get-AbrAPPVolApplication + Get-AbrAppVolPackage + Get-AbrAppVolProgram + Get-AbrAppVolAssignment Get-AbrAppVolWritable + #Get-AbrAppVolAppstack } section -Style Heading2 "Directory" { Get-AbrAppVolADUser + Get-AbrAppVolComputer Get-AbrAppVolADGroup Get-AbrAppVolADOU } section -Style Heading2 "Infrastructure" { + Get-AbrAppVolMachine Get-AbrAppVolStorage Get-AbrAppVolStorageGroup + Get-AbrAppVolInstance + } + section -Style Heading2 "Activity" { + Get-AbrAppVolJob + Get-AbrAppVolTSArchive } section -Style Heading2 "Configuration" { - Paragraph "The following section details configuration settings for App Volumes Manager $($AppVolServer.split('.')[0])." - Blankline Get-AbrAppVolLicense Get-AbrAppVolADDomain Get-AbrAppVolAdminRole