+Table 20 - Application links for - 7zip
+1.2.2.1.2 Package - Google Chrome 104-update
-Owner | Jonathan A. Colon Feliciano |
+App Name | Google Chrome 104-update |
+Application Name | Google Chrome |
+Version # | 104.0.5112.102 |
+Current Status | enabled |
+Life Cycle Stage | New |
+Delivery | classic |
+Total Attachments | 18 |
+File Name | Google!20!Chrome!20!104-update.vmdk |
+Format | AV |
+Template | [SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages/Google!20!Chrome-update.vmdk |
+Agent Version | 4.7.0.64R |
+Base Package | Google Chrome 88 |
+Date Added | Aug 25 2022 |
+Modified | Aug 25 2022 |
+Description | -- |
+Note | -- |
+Programs Count | 1 |
+Operating Systems Count | 1 |
+Package Size | 940.00 MB |
+On-Demand Capable | Yes |
+Attachment Limit | -- |
+Path | appvolumes/packages |
+Datastore Name | SSD-VM-HIGH-CAPACITY-PERF-KN |
+OS Version | Windows 10 (x64) |
+Provisioning Duration | 10 minutes |
+Is Current | CURRENT |
+
+
Table 21 - Package Details - Google Chrome 104-update
+Programs
+Program Name | Build # | Publisher Name | Program Created | Program Updated |
+Google Chrome | 104.0.5112.102 | Google LLC | Aug 25 2022 | Aug 25 2022 |
+
+
Table 22 - Programs for Application - Google Chrome 104-update
+Operating Systems
+OS Name | OS Version | Processor Arch | Type |
+Windows 10 (x64) | 10.0 | 9 | Desktop |
+
+
Table 23 - Operating Systems for -
+Storage Locations for - Google Chrome 104-update
+Location | Path | Host | File Status | Created |
+SSD-VM-HIGH-CAPACITY-PERF-KN | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 25 2022 |
+SSD-VM-HIGH-CAPACITY-PERF-MK | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 25 2022 |
+
+
Table 24 - Storage Location for - Google Chrome 104-update
+Application links for - Google Chrome 104-update
+App Link Name | Entry Point |
+Google Chrome | C:\Users\Public\Desktop\Google Chrome.lnk |
+Google Chrome | C:\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 Name | Google Chrome 88 |
+Application Name | Google Chrome |
+Version # | 88.0.4324.150 |
+Current Status | enabled |
+Life Cycle Stage | New |
+Delivery | classic |
+Total Attachments | 0 |
+File Name | Google!20!Chrome-update.vmdk |
+Format | AV |
+Template | [SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages/Google!20!Chrome.vmdk |
+Agent Version | 4.3.0.57R |
+Base Package | -- |
+Date Added | Aug 25 2022 |
+Modified | Aug 25 2022 |
+Description | -- |
+Note | -- |
+Programs Count | 1 |
+Operating Systems Count | 1 |
+Package Size | 783.00 MB |
+On-Demand Capable | No |
+Attachment Limit | -- |
+Path | appvolumes/packages |
+Datastore Name | SSD-VM-HIGH-CAPACITY-PERF-KN |
+OS Version | Windows 10 (x64) |
+Provisioning Duration | 5 minutes |
+Is Current | -- |
+
+
Table 26 - Package Details - Google Chrome 88
+Programs
+Program Name | Build # | Publisher Name | Program Created | Program Updated |
+Google Chrome | 88.0.4324.150 | Google LLC | Aug 25 2022 | Aug 25 2022 |
+
+
Table 27 - Programs for Application - Google Chrome 88
+Operating Systems
+OS Name | OS Version | Processor Arch | Type |
+Windows 10 (x64) | 10.0 | 9 | Desktop |
+
+
Table 28 - Operating Systems for -
+Storage Locations for - Google Chrome 88
+Location | Path | Host | File Status | Created |
+SSD-VM-HIGH-CAPACITY-PERF-KN | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 25 2022 |
+SSD-VM-HIGH-CAPACITY-PERF-MK | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 25 2022 |
+
+
Table 29 - Storage Location for - Google Chrome 88
+1.2.2.1.4 Package - Office2021
+
+App Name | Office2021 |
+Application Name | Office 2021 |
+Version # | 16.0.14332.20358 |
+Current Status | enabled |
+Life Cycle Stage | New |
+Delivery | classic |
+Total Attachments | 14 |
+File Name | Office2021.vmdk |
+Format | AV |
+Template | [SSD-VM-HIGH-CAPACITY-PERF-MK] appvolumes/packages_templates/template.vmdk |
+Agent Version | 4.7.0.64R |
+Base Package | -- |
+Date Added | Aug 25 2022 |
+Modified | Aug 25 2022 |
+Description | -- |
+Note | -- |
+Programs Count | 7 |
+Operating Systems Count | 1 |
+Package Size | 4.37 GB |
+On-Demand Capable | Yes |
+Attachment Limit | -- |
+Path | appvolumes/packages |
+Datastore Name | SSD-VM-HIGH-CAPACITY-PERF-KN |
+OS Version | Windows 10 (x64) |
+Provisioning Duration | 32 minutes |
+Is Current | CURRENT |
+
+
Table 30 - Package Details - Office2021
+Programs
+Program Name | Build # | Publisher Name | Program Created | Program Updated |
+Teams Machine-Wide Installer | 1.4.0.19572 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Office 16 Click-to-Run Licensing Component | 16.0.14332.20358 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Office 16 Click-to-Run Extensibility Component | 16.0.14332.20358 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Microsoft Visio LTSC Professional 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Microsoft Project Professional 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Microsoft OneDrive | 21.030.0211.0002 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+Microsoft Office LTSC Professional Plus 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Aug 25 2022 | Aug 25 2022 |
+
+
Table 31 - Programs for Application - Office2021
+Operating Systems
+OS Name | OS Version | Processor Arch | Type |
+Windows 10 (x64) | 10.0 | 9 | Desktop |
+
+
Table 32 - Operating Systems for -
+Storage Locations for - Office2021
+Location | Path | Host | File Status | Created |
+SSD-VM-HIGH-CAPACITY-PERF-KN | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 26 2022 |
+SSD-VM-HIGH-CAPACITY-PERF-MK | appvolumes/packages | vcenter-01v.pharmax.local | Yes | Aug 25 2022 |
+
+
Table 33 - Storage Location for - Office2021
+Application links for - Office2021
+App Link Name | Entry Point |
+Access | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Access.lnk |
+Database Compare | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Database Compare.lnk |
+Excel | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Excel.lnk |
+Office Language Preferences | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Office Language Preferences.lnk |
+OneDrive | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk |
+OneNote | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\OneNote.lnk |
+Outlook | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk |
+PowerPoint | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PowerPoint.lnk |
+Project | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Project.lnk |
+Project Server Accounts | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Project Server Accounts.lnk |
+Publisher | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Publisher.lnk |
+Spreadsheet Compare | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Spreadsheet Compare.lnk |
+Telemetry Dashboard for Office | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Telemetry Dashboard for Office.lnk |
+Telemetry Log for Office | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office Tools\Telemetry Log for Office.lnk |
+Visio | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visio.lnk |
+Word | C:\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 Name | Version # | Publisher Name | Package Name |
+Office 16 Click-to-Run Licensing Component | 16.0.14332.20358 | Microsoft Corporation | Office2021 |
+Office 16 Click-to-Run Extensibility Component | 16.0.14332.20358 | Microsoft Corporation | Office2021 |
+Microsoft Visio LTSC Professional 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Office2021 |
+Microsoft Project Professional 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Office2021 |
+Microsoft Office LTSC Professional Plus 2021 - en-us | 16.0.14332.20358 | Microsoft Corporation | Office2021 |
+7-Zip 22.01 (x64 edition) | 22.01.00.0 | Igor Pavlov | 7zip |
+Google Chrome | 88.0.4324.150 | Google LLC | Google Chrome 88 |
+Google Chrome | 104.0.5112.102 | Google LLC | Google Chrome 104-update |
+Microsoft OneDrive | 21.030.0211.0002 | Microsoft Corporation | Office2021 |
+Teams Machine-Wide Installer | 1.4.0.19572 | Microsoft Corporation | Office2021 |
+
+
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)
+
+Name | 7-Zip 22.01 (x64 edition) |
+Package | 7zip |
+Publisher | Igor Pavlov |
+Install Location | -- |
+Version Number | 22.01.00.0 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Google Chrome |
+Package | Google Chrome 104-update |
+Publisher | Google LLC |
+Install Location | -- |
+Version Number | 104.0.5112.102 |
+Created | Aug 25 2022 |
+Updated | Aug 25 2022 |
+Icon | /snapvols/9/Google_Chrome.png |
+
+
Table 37 - Program Details - Google Chrome
+1.2.3.1.3 Program Details - Google Chrome
+
+Name | Google Chrome |
+Package | Google Chrome 88 |
+Publisher | Google LLC |
+Install Location | -- |
+Version Number | 88.0.4324.150 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Microsoft Office LTSC Professional Plus 2021 - en-us |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | C:\Program Files\Microsoft Office |
+Version Number | 16.0.14332.20358 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Microsoft OneDrive |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | -- |
+Version Number | 21.030.0211.0002 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Microsoft Project Professional 2021 - en-us |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | C:\Program Files\Microsoft Office |
+Version Number | 16.0.14332.20358 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Microsoft Visio LTSC Professional 2021 - en-us |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | C:\Program Files\Microsoft Office |
+Version Number | 16.0.14332.20358 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Office 16 Click-to-Run Extensibility Component |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | -- |
+Version Number | 16.0.14332.20358 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Office 16 Click-to-Run Licensing Component |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | -- |
+Version Number | 16.0.14332.20358 |
+Created | Aug 25 2022 |
+Updated | Aug 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
+
+Name | Teams Machine-Wide Installer |
+Package | Office2021 |
+Publisher | Microsoft Corporation |
+Install Location | -- |
+Version Number | 1.4.0.19572 |
+Created | Aug 25 2022 |
+Updated | Aug 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.
+Entity | Marker | Package | Applications | Computers | Assigned |
+PHARMAX\jocolon | CURRENT | Google Chrome 104-update | Google Chrome | All | Aug 26 2022 |
+PHARMAX\jocolon | CURRENT | 7zip | 7-Zip 22.01 (x64 edition) | All | Aug 26 2022 |
+PHARMAX\jocolon | CURRENT | Office2021 | Teams 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-us | All | Aug 26 2022 |
+PHARMAX\veeam_admin | CURRENT | Google Chrome 104-update | Google Chrome | All | Aug 26 2022 |
+PHARMAX\veeam_admin | CURRENT | 7zip | 7-Zip 22.01 (x64 edition) | All | Aug 26 2022 |
+PHARMAX\veeam_admin | CURRENT | Office2021 | Teams 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-us | All | Aug 26 2022 |
+PHARMAX\Domain Admins | CURRENT | Google Chrome 104-update | Google Chrome | vm- | Aug 26 2022 |
+PHARMAX\Domain Admins | CURRENT | 7zip | 7-Zip 22.01 (x64 edition) | vm- | Aug 26 2022 |
+PHARMAX\Domain Admins | CURRENT | Office2021 | Teams 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-us | vm- | Aug 26 2022 |
+PHARMAX\Domain Users | CURRENT | Google Chrome 104-update | Google Chrome | All | Sep 06 2022 |
+PHARMAX OU:VEEAM WorkStations | CURRENT | Google Chrome 104-update | Google Chrome | All | Oct 06 2022 |
+PHARMAX OU:Fortinet EMS | CURRENT | Google Chrome 104-update | Google Chrome | All | Oct 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.
+Owner | Storage | Status | Created | State |
+PHARMAX\veeam_admin | SSD-VM-HIGH-CAPACITY-PERF-MK | disabled | Aug 26 2022 | Detached |
+PHARMAX\jocolon | SSD-VM-HIGH-CAPACITY-PERF-MK | enabled | Mar 02 2022 | Detached |
+
+
Table 47 - Writable Volumes - Horizon-APV-01V.pharmax.local
+1.2.5.1 Writable Volume Details
Writable Volume Details for - PHARMAX\jocolon
+
+Owner | PHARMAX\jocolon |
Owner Type | User |
Created Date | Mar 02 2022 |
Last Updated Date | Aug 26 2022 |
@@ -286,13 +644,13 @@
Path | appvolumes/writables |
Datastore Name | SSD-VM-HIGH-CAPACITY-PERF-MK |
Datastore Protected | -- |
-Datastore Can Expand | -- |
+Datastore Can Expand | Yes |
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
-Owner | veeam admin |
+Owner | PHARMAX\veeam_admin |
Owner Type | User |
Created Date | Aug 26 2022 |
Last Updated Date | Aug 26 2022 |
@@ -313,32 +671,58 @@
Path | appvolumes/writables |
Datastore Name | SSD-VM-HIGH-CAPACITY-PERF-MK |
Datastore Protected | -- |
-Datastore Can Expand | -- |
+Datastore Can Expand | Yes |
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.
-Name | Last Logon | Status | Writable | AppStack | Assignments | Login |
-PHARMAX\veeam_admin | Aug 26 2022 | Enabled | 1 | 0 | 3 | 2 |
-PHARMAX\jocolon | Aug 26 2022 | Enabled | 1 | 0 | 3 | 3 |
-PHARMAX\Administrator | Aug 25 2022 | Enabled | 1 | 0 | 0 | 18 |
-
-
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.
-Name | Last Logon | Status | Writable | AppStack | Assignments |
-AD - SRM Recovery Group | Oct 05 2022 | Enabled | 0 | 0 | 0 |
-Domain Admins | Aug 25 2022 | Enabled | 0 | 0 | 3 |
-Domain Users | Sep 06 2022 | Enabled | 0 | 0 | 1 |
-ho-mar-distlist1 | Oct 05 2022 | Enabled | 0 | 0 | 0 |
-
-
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.
-Name | Last Logon | Status | Writable | AppStack | Assignments |
-Fortinet EMS | Oct 06 2022 | Enabled | 0 | 0 | 1 |
-VEEAM WorkStations | Oct 06 2022 | Enabled | 0 | 0 | 1 |
-
-
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.
+Name | Writable | Assignments | Attachments | Login | Last Logon | Status |
+PHARMAX\veeam_admin | 1 | 3 | 0 | 2 | Aug 26 2022 | Enabled |
+PHARMAX\jocolon | 1 | 3 | 0 | 11 | Dec 16 2023 | Enabled |
+PHARMAX\Administrator | 0 | 0 | 0 | 24 | Dec 15 2023 | Enabled |
+
+
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.
+Computer | Agent | OS | Writables | Assignments | Attachments | Boots | Last Boot | Status |
+it539764880 | 4.7.0.64R | TServer | 0 | 0 | 0 | 1 | Dec 14 2023 10:33PM | Enabled |
+it1496457899 | 4.12.0.81R | TServer | 0 | 0 | 0 | 3 | Dec 15 2023 09:34PM | Enabled |
+vm-01 | 4.7.0.64R | Desktop | 0 | 0 | 0 | 21 | Aug 27 2022 06:34PM | Enabled |
+vm-02 | 4.7.0.64R | Desktop | 0 | 0 | 0 | 21 | Aug 27 2022 06:34PM | Enabled |
+vm-01-hr | 4.7.0.64R | TServer | 0 | 0 | 0 | 3 | Aug 27 2022 10:24AM | Enabled |
+HORIZON-RDS-02T | 4.12.0.81R | TServer | 0 | 0 | 0 | 2 | Dec 15 2023 05:43PM | Enabled |
+app-farm-02 | 4.12.0.81R | TServer | 0 | 0 | 0 | 8 | Dec 21 2023 08:43AM | Enabled |
+app-farm-01 | 4.12.0.81R | TServer | 0 | 0 | 0 | 7 | Dec 21 2023 08:43AM | Enabled |
+farm-01 | 4.7.0.64R | TServer | 0 | 0 | 0 | 3 | Aug 27 2022 10:24AM | Enabled |
+HORIZON-RDS-01T | 4.12.0.81R | TServer | 0 | 0 | 0 | 6 | Dec 15 2023 12:40PM | Enabled |
+HORIZON-CAP-01V | 4.7.0.64R | Desktop | 0 | 0 | 0 | 19 | Aug 25 2022 09:00PM | Enabled |
+
+
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 Name | Writable | Assignments | Last Logon | Status |
+Domain Users | 0 | 1 | Sep 06 2022 | Enabled |
+ho-mar-distlist1 | 0 | 0 | Oct 05 2022 | Disabled |
+AD - SRM Recovery Group | 0 | 0 | Oct 05 2022 | Enabled |
+Domain Admins | 0 | 3 | Aug 25 2022 | Enabled |
+
+
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.
+Name | Last Logon | Status | Writable | Assignments |
+Fortinet EMS | Oct 06 2022 | Disabled | 0 | 1 |
+VEEAM WorkStations | Oct 06 2022 | Enabled | 0 | 1 |
+
+
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.
+Name | Host | Source | Created | Status |
+app-farm-01 | esxsvr-00f.pharmax.local | Agent | Dec 15 2023 09:40PM | Existing |
+app-farm-02 | esxsvr-00f.pharmax.local | Agent | Dec 15 2023 09:40PM | Existing |
+cp-replica-4620aa2d-a8bc-4ae0-b375-cc552f9002d9 | esxsvr-00f.pharmax.local | Agent | Dec 15 2023 09:34PM | Existing |
+cp-template-b8e348b5-1c9b-49b5-aaf3-2bd528121cbc | esxsvr-00f.pharmax.local | Other | Dec 15 2023 09:28PM | Existing |
+Horizon-CAP-01V | esxsvr-00f.pharmax.local | Agent | Aug 25 2022 02:17PM | Existing |
+Horizon-RDS-01T | esxsvr-00f.pharmax.local | Agent | Dec 15 2023 11:00AM | Existing |
+Horizon-RDS-02T | esxsvr-00f.pharmax.local | Agent | Dec 15 2023 05:42PM | Existing |
+
+
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.
Name | Host | AppStacks | Writables | Attachable | Status |
EDGE_SAN_PLACEHOLDER | vcenter-03v | 0 | 0 | Yes | Existing |
esx-00f | vcenter-01v | 0 | 0 | Yes | Existing |
@@ -351,250 +735,282 @@
NVME-VM-HIGH-PERF-01 | vcenter-01v | 0 | 0 | Yes | Existing |
SRM_HQ_REPLICATED_01 | vcenter-01v | 0 | 0 | Yes | Existing |
SSD-VM-HIGH-CAPACITY-PERF-KN | vcenter-01v | 1 | 0 | Yes | Existing |
-SSD-VM-HIGH-CAPACITY-PERF-MK | vcenter-01v | 1 | 3 | Yes | Existing |
+SSD-VM-HIGH-CAPACITY-PERF-MK | vcenter-01v | 1 | 2 | Yes | Existing |
+TrueNAS_VM_DATA | vcenter-01v | 0 | 0 | Yes | Existing |
+TrueNAS_VM_DATA (1) | vcenter-01v | 0 | 0 | Yes | Existing |
VMDatastore | vcenter-03v | 0 | 0 | Yes | Existing |
VMWARE_VDI_DATASTORE_2 | vcenter-01v | 0 | 0 | Yes | Absent |
-
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 Manager | vcenter-03v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-EDGE |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-03v.pharmax.local |
Template Storage | -- |
Host Username | -- |
Free Space | 8 GB |
Capacity | 10 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
Free Space | 111 GB |
Capacity | 112 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 341 GB |
+Free Space | 344 GB |
Capacity | 931 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 3 TB |
+Free Space | 2 TB |
Capacity | 4 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
Free Space | 2 TB |
Capacity | 4 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | No |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
Free Space | 8 GB |
Capacity | 10 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 37 GB |
+Free Space | 41 GB |
Capacity | 50 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 105 GB |
+Free Space | 27 GB |
Capacity | 238 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 218 GB |
+Free Space | 122 GB |
Capacity | 477 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
Free Space | 48 GB |
Capacity | 50 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 608 GB |
+Free Space | 168 GB |
Capacity | 894 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
-Free Space | 589 GB |
+Free Space | 138 GB |
Capacity | 931 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 Manager | vcenter-01v.pharmax.local |
+Category | -- |
+Datacenter | PHARMAX-VSI-DC |
+Notes | NFS41 |
+Description | Type: NFS41 - Share Mode: Local |
+Accessible | Yes |
+Template Storage | -- |
+Host Username | root |
+Free Space | 827 GB |
+Capacity | 829 GB |
+
+
Table 68 - Storage Details - TrueNAS_VM_DATA
+Storage Details - TrueNAS_VM_DATA (1)
+
+Display Name | [PHARMAX-VSI-DC] TrueNAS_VM_DATA (1) |
+Machine Manager | vcenter-01v.pharmax.local |
+Category | -- |
+Datacenter | PHARMAX-VSI-DC |
+Notes | NFS41 |
+Description | Type: NFS41 - Share Mode: Local |
+Accessible | No |
+Template Storage | -- |
+Host Username | root |
+Free Space | 0 KB |
+Capacity | 0 KB |
+
+
Table 69 - Storage Details - TrueNAS_VM_DATA (1)
+Storage Details - VMDatastore
Display Name | [PHARMAX-VSI-EDGE] VMDatastore |
+Machine Manager | vcenter-03v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-EDGE |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | No |
-Host | vcenter-03v.pharmax.local |
Template Storage | -- |
Host Username | -- |
Free Space | 90 GB |
Capacity | 100 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 Manager | vcenter-01v.pharmax.local |
Category | -- |
Datacenter | PHARMAX-VSI-DC |
Notes | VMFS |
Description | Type: VMFS - Share Mode: Local |
Accessible | Yes |
-Host | vcenter-01v.pharmax.local |
Template Storage | -- |
Host Username | root |
Free Space | 18 GB |
Capacity | 20 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 Strategy | Spread |
Template Storage | SSD-VM-HIGH-CAPACITY-PERF-MK |
Members Count | 2 |
Member Name Prefix | -- |
-Space Used | 628 GB |
+Space Used | 1.48 TB |
Total Space | 1.78 TB |
Creation Date | Aug 25 2022 01:36PM |
Auto Import | Yes |
Auto Replicate | Yes |
-Last Replicated Date | Oct 07 2022 09:23AM |
-Last Imported Date | Oct 07 2022 08:23AM |
+Last Replicated Date | Jan 02 2024 11:33AM |
+Last Imported Date | Jan 02 2024 08:34AM |
Last Curated Date | Aug 25 2022 01:42PM |
-
Table 37 - Storage Group - APPVOL-SG
-Datastore Members
+Table 72 - Storage Group - APPVOL-SG
+Datastore Members
Name | DataCenter | Space Used | Space Total | Is Deleted |
-SSD-VM-HIGH-CAPACITY-PERF-KN | PHARMAX-VSI-DC | 286 GB | 894 GB | No |
-SSD-VM-HIGH-CAPACITY-PERF-MK | PHARMAX-VSI-DC | 342 GB | 931 GB | No |
+SSD-VM-HIGH-CAPACITY-PERF-KN | PHARMAX-VSI-DC | 726 GB | 894 GB | No |
+SSD-VM-HIGH-CAPACITY-PERF-MK | PHARMAX-VSI-DC | 793 GB | 931 GB | No |
-
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
Distribution Strategy | Round-robin |
Template Storage | SSD-VM-HIGH-CAPACITY-PERF-KN |
Members Count | 2 |
Member Name Prefix | HDD-VM-MED-PERF |
-Space Used | 2.22 TB |
+Space Used | 2.68 TB |
Total Space | 7.28 TB |
Creation Date | Oct 05 2022 02:11PM |
Auto Import | No |
@@ -603,19 +1019,44 @@
Last Imported Date | -- |
Last Curated Date | Oct 05 2022 02:47PM |
-
Table 39 - Storage Group - CAL-PB-01
-Datastore Members
+Table 74 - Storage Group - CAL-PB-01
+Datastore Members
Name | DataCenter | Space Used | Space Total | Is Deleted |
-HDD-VM-MED-PERF-01 | PHARMAX-VSI-DC | 1.05 TB | 3.64 TB | No |
-HDD-VM-MED-PERF-02 | PHARMAX-VSI-DC | 1.17 TB | 3.64 TB | No |
+HDD-VM-MED-PERF-01 | PHARMAX-VSI-DC | 1.5 TB | 3.64 TB | No |
+HDD-VM-MED-PERF-02 | PHARMAX-VSI-DC | 1.19 TB | 3.64 TB | No |
-
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.
+Name | Status | Interval | Last Run At |
+Audit Vms | enabled | 9 hours 21 minutes | about 3 hours ago |
+Collect Logs | enabled | 12 hours | about 3 hours ago |
+Expire Sessions | enabled | 33 minutes | 16 minutes ago |
+Finalize Application Deletion | enabled | 10 minutes | 10 minutes ago |
+Finalize Package Deletion | enabled | 10 minutes | 10 minutes ago |
+Fulfill Writables | enabled | 4 hours 1 minute | about 3 hours ago |
+Import Storage Groups | enabled | 4 hours | about 3 hours ago |
+License Extension | enabled | 24 hours | about 3 hours ago |
+Marshal Writables | enabled | 2 minutes 30 seconds | 5 minutes ago |
+Prune Archival Tables Job | enabled | 24 hours | about 19 hours ago |
+Refresh Attachments | enabled | 3 hours 35 minutes | about 3 hours ago |
+Refresh Computers | enabled | 2 hours 11 minutes | about 1 hour ago |
+Refresh Domains | enabled | 8 hours | about 3 hours ago |
+Refresh Machines | enabled | 22 hours | about 19 hours ago |
+Remove Stale Storage Locations | enabled | 4 hours | about 1 hour ago |
+Replicate Storage Groups | enabled | 1 hour | 22 minutes ago |
+Sweep Vms | enabled | 24 hours | about 19 hours ago |
+Sync Ad | enabled | 59 minutes | 23 minutes ago |
+Sync Instances | enabled | 12 hours | about 3 hours ago |
+Synchronize Storage | enabled | 3 hours 1 minute | 22 minutes ago |
+Update Sync Counts | enabled | 15 minutes | 7 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.
Key Create Date | 2020-10-07 17:03:38 -0700 |
Key Valid | Yes |
Limit Users | 50000 |
-Usage Users | 2 |
+Usage Users | 3 |
Limit Desktops | 50000 |
Usage Desktops | 0 |
Limit Servers | 50000 |
@@ -627,7 +1068,7 @@
Limit Concurrent Servers | -- |
Usage Concurrent Servers | 0 |
Limit Terminal Users | 50000 |
-Usage Terminal Users | 0 |
+Usage Terminal Users | 2 |
Limit Concurrent Terminal Users | -- |
Usage Concurrent Terminal Users | 0 |
Limit Max Attachments Per User | No limit |
@@ -639,8 +1080,13 @@
Valid Until Date | Perpetual |
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
+Domain | NetBIOS | Base | Username | Security | SSL Verify | Port |
+pharmax.local | PHARMAX | -- | administrator@pharmax.local | LADP | Yes | 389 |
+
+
Table 78 - AD Domain Summary - Horizon-APV-01V.pharmax.local
+AD Domain Details - pharmax.local
Username | administrator@pharmax.local |
Base | -- |
@@ -648,57 +1094,64 @@
LDAPS | No |
LDAP_TLS | No |
SSL Verify | Yes |
-Port | -- |
-Effective Port | 389 |
+Port | 389 |
Created At | 2022-08-25 13:31:15 -0400 |
Updated At | 2022-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 UPN | Role | Type | Created at |
PHARMAX\AD - SRM Recovery Group | Writables Administrators | Group | 10/5/2022 |
PHARMAX\ho-mar-distlist1 | AppStacks Administrators | Group | 10/5/2022 |
PHARMAX\Domain Admins | Administrators | Group | 8/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
+Host | Username | Type |
+vcenter-01v.pharmax.local | administrator@vsphere.local | VMware vCenter |
+vcenter-03v.pharmax.local | administrator@vsphere.local | VMware vCenter |
+
+
Table 81 - Machine Managers - Horizon-APV-01V.pharmax.local
+Machine Manager Details - vcenter-01v.pharmax.local
-Username | administrator@vsphere.local |
-Host Username | root |
Type | VMware vCenter |
-Supports Multi | Yes |
-Is Connected | Yes |
-SSL Validation Enabled | Yes |
-Mount On Host | Yes |
-Mount Queues | Yes |
-Mount Async | Yes |
-Mount Throttle | 5 |
-Description | VMware vCenter Server 7.0.3 build-20395099 |
-
-
Table 44 - Machine Manager - vcenter-01v.pharmax.local
-1.5.4.2 vcenter-03v.pharmax.local
-
-Username | administrator@vsphere.local |
-Host Username | -- |
+Host Name | vcenter-01v.pharmax.local |
+Username | root |
+Fast Attach | -- |
+Mount ESXi | Yes |
+ESXi Username | root |
+Use Local Volumes | -- |
+Use Reconfigure Queues | Yes |
+Use Async | -- |
+Concurrent Mount Operations | 5 |
+SSL Validation | Yes |
+SSL Fingerprint | f7: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
+
Type | VMware vCenter |
-Supports Multi | Yes |
-Is Connected | No |
-SSL Validation Enabled | Yes |
-Mount On Host | -- |
-Mount Queues | Yes |
-Mount Async | Yes |
-Mount Throttle | 5 |
-Description | -- |
+Host Name | vcenter-03v.pharmax.local |
+Username | -- |
+Fast Attach | -- |
+Mount ESXi | -- |
+ESXi Username | -- |
+Use Local Volumes | -- |
+Use Reconfigure Queues | Yes |
+Use Async | -- |
+Concurrent Mount Operations | 5 |
+SSL Validation | Yes |
+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 Path | appvolumes/packages |
Default Template Path | appvolumes/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
Default Storage Location | [PHARMAX-VSI-DC] SSD-VM-HIGH-CAPACITY-PERF-MK |
Default Storage Path | appvolumes/writables |
@@ -706,27 +1159,32 @@
Default Backup Path | appvolumes/writables_backup |
Template Path | appvolumes/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 Name | Version | Status | First Seen | Last Seen |
+HORIZON-APV-01V | 4.12.0.81 | Registered | Aug 25 2022 | Jan 02 2024 |
+
+
Table 86 - App Volumes Manager Server Details - Horizon-APV-01V
+Manager Servers Details - HORIZON-APV-01V
-Product Version | App Volumes 4, version 2206 (4.7.0.64) |
-Internal Version | 4.7.0.64 |
+Product Version | App Volumes 4, version 2309 (4.12.0.81) |
+Internal Version | 4.12.0.81 |
Domain Name | PHARMAX |
Computer Name | HORIZON-APV-01V |
-Computer FQDN | Horizon-APV-01V.pharmax.local |
+Computer FQDN | Unknown |
Registered | Yes |
Secure | Yes |
Status | Registered |
First Seen At | Aug 25 2022 |
-Last Seen At | Oct 07 2022 |
+Last Seen At | Jan 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.
UI Session Timeout | 30 |
Non-Domain Entities | No |
Writeable Volumes Regular Backups | Yes |
-Writeable Volumes Regular Backups Interval | 7 days |
+Writeable Volumes Regular Backups Interval | 7 - days |
Writeable Volumes Storage Location | SSD-VM-HIGH-CAPACITY-PERF-MK |
Writeable Volumes Storage Path | appvolumes/writables_backup |
Disable Agent Session Cookie | No |
@@ -734,8 +1192,9 @@
Disable Token AD Query | No |
Enable Volumes (2.x) | No |
Allow package delivery to any operating system | Yes |
+VMDK Package Resiliency | No |
Join the VMware CEIP | Yes |
-
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