Error “The tools ISO must be ejected from all running VMs in the pool” While installing XenServer hotfix.


1) Find out out all the VDI which are related to tools ISO

#xe vdi-list | grep -B2 tools

Except the vdi which has name-label xs-tools.iso, no other VDI should have Virtual block devices attached to it.

2) To figure out that run the following command against each VDI

#xe vdi-list uuid=<UUID from step1> params=vbd-uuids

If any of the above except vdi with name-label xs-tools.iso return a VBD, we need to remove that object which holds that VBD

#xe vbd-list uuid=<UUID from step2> params=all

This will tell you which one is holding the VBD. In one case, it was a snapshot, which was destroyed using

#xe snapshot-destroy= UUID

Related:

  • No Related Posts

Running Add-PvsDeviceToDomain commandlet from PowerShell without any parameter causes unexpected behavior.

This problem has already been identified by Citrix and is currently working towards fixing the same in the future releases.

The only work around available for now is to use a Parameter along with the PowerShell Commandlet – “Add-PvsDevicesToDomain”, which are as below:

-Guid or DeviceId [<Guid[]>]

GUID of the Device to Add to the Domain.

-Name or DeviceName [<String[]>]

Name of the Device to Add to the Domain.

-DeviceMac [<PvsPhysicalAddress[]>]

MAC of the Device to Add to the Domain.

-CollectionId [<Guid[]>]

GUID of the Collection to Add all Devices to the Domain.

-SiteViewId [<Guid[]>]

GUID of the Site View to Add all Devices to the Domain.

-FarmViewId [<Guid[]>]

GUID of the Farm View to Add all Devices to the Domain.

-FarmViewName [<String[]>]

Name of the Farm View to Add all Devices to the Domain.

-CollectionName [<String[]>]

Name of the Collection to Add all Devices to the Domain.

-SiteViewName [<String[]>]

Name of the Site View to Add all Devices to the Domain.

-Domain [<String[]>]

Domain to add the Device(s) to. If not included, the first Domain Controller found on the Server is used.

-OrganizationUnit [<String[]>]

Organizational Unit to add the Device(s) to. This parameter is optional. If it is not specified, the device is

added to the built in Computers container. Child OU’s should be delimited with forward slashes, e.g.

“ParentOU/ChildOU”. Special characters in an OU name, such as ‘”‘, ‘#’, ‘+’, ‘,’, ‘;’, ‘>’, ‘=’, must be

escaped with a backslash. For example, an OU called “commaIn,TheMiddle” must be specified as

“commaIn,TheMiddle”. The old syntax of delimiting child OU’s with a comma is still supported, but deprecated.

Note that in this case, the child OU comes first, e.g. “ChildOU,ParentOU”.

-SiteId [<Guid[]>]

GUID of the Site.

-SiteName [<String[]>]

Name of the Site.

-Confirm [<SwitchParameter>]

The impact of this operation is “low”. If -Confirm is specified, the operation will be confirmed.

$ConfirmPreference can be set to “low” to have confirmation without the Confirm parameter.

-Object [<PvsObject[]>]

Object: will use the DeviceId, CollectionId, SiteViewId or FarmViewId.

Related:

Importing Computer structure causes Ghost console to crash.

I need a solution

Hi,

I’ve run into an issue with our exported Computer file structure causing ghost to crast when importing. 

I’ve determine the root cause to the problem and a temporary workaround however this is not a solution.

We had a catastrophic failure on our ghost server after an upgrade in October 2019.  After a clean rebuild we started exporting the tasks and computer structure on a regular basis weeklybi-weekly basis.  Our January export of the computers structure when imported crashes the console part way through.  After manually digging around I’ve determined the problem to be 4 systems in different containers have no NIC listed.  In the console it states that the NIC are disabled.  In the exported file they are identified by having “<nics/>” which basically indicates no NIC.

                                <name>aaaTNTLIB-104</name>

                                <computer_name>aaaTNTLIB-104</computer_name>

                                <serial_num>CY09aaaa</serial_num>

                                <uuid>{4C4C4544-aaaa-3010-8039-C3C04F305132}</uuid>

                                <UAC>1</UAC>

                                <nics/>

                                <grouppath>

                                                <group>aaaton</group>

                                                <group>Tlib</group></grouppath></computer>

If I remove them from the exported file, it will import properly.

For now, I deleted those system from the console and they added themselves properly with their working NIC’s.  Now the export file will import fine, however there is no dynamic group rule I could come up with to detect such systems before an export.

Has anyone run into this before? 

Using Symantec Ghost Suite Ver3.3 R3  (Build 2642)

Running on MS Server 2016.

Thanks,

  Ed White

0

Related:

PVS XenDesktop Setup Wizard not using HomeServer affinity from XenServer Template when creating VMs

To resolve this issue:

1. Change the name of the storage to “Local storage”

2. After changing the storage name it may appear as “Local storage on Host” as in the image below.

User-added image

3. Or it may appear as just “Local storage” as below

User-added image

4. The store should appear as “Local storage” Only, in the list on the left.

User-added image

5. We need to check the other-config (MRW) setting for local storage is populated correctly

  • Copy the UUID of the local storage
  • Open the hosts console
  • Type in the following, pasting the uuid in to where it says sr-uuid: xe sr-param-list uuid=<sr-uuid>
  • Scroll down and check the section that says “other-config”. If its blank as below we need to set it correctly
User-added image

6. To set the other-config correctly do the following:

  • Copy the UUID of the local storage
  • xe sr-param-set other-config:i18n-original-value-name_label=”Local storage” uuid=UUID
  • xe sr-param-set other-config:i18n-key=”Local-storage” uuid=UUID
Home server affinity is broken if the local storage name is changed to anything other than "Local Storage".After changing the storage name to "Local storage" please refer to CTX225019 for updating your host connection.Note:  If your host connection was created prior to 7.13 you will need to recreate the host connection.

Related:

  • No Related Posts

Devices getting software not assigned to them

I need a solution

This has been a ongoing random issue for about 1 1/2 now, these devices are not assigned to the filter nor any policies for the software yet the agent installs the software. We thought maybe it was dup GUID so we turned on the policy to correct GUID and that did find devices but the fact we have dup GUID is even odder, our imaging is doing sysprep and some of these dupe GUID on Mac devices that we don’t image, people have non-mac software beeing assigned to them  If our devices didn’t not get sysprepred we would having a whole ton of other issues and it would be more then just the 50 or so devices that showed.

Open a ticket but I have run out of ideas of what is even causing this or where to start, use to blame it on someone adding devices to filters by mistake but audits show those filters are not even updating

0

Related:

  • No Related Posts

Citrix Hypervisor Export Running VM – Export snapshot to file through CLI

Find the VM that you want to backup: xe vm-list

Snapshot the VM, see https://docs.citrix.com/en-us/xencenter/7-1/vms-snapshots-take.html

Find the snapshot to export by listing snapshots and their corresponding VMs: xe snapshot-list params=uuid,name-label,snapshot-of

Set the snapshot to be exportable: xe snapshot-param-set is-a-template=false uuid=<snapshot uuid>

Export the snapshot to a file: xe vm-export uuid= filename=<snapshot uuid>

Later, it can be imported: xe vm-import filename=<path> preserve=true force=true sr-uuid=<uuid> (xe sr-list to find the sr uuid)

Related:

Citrix Hypervisor Export Running VM – Export snapshot to file

Find the VM that you want to backup: xe vm-list

Snapshot the VM, see https://docs.citrix.com/en-us/xencenter/7-1/vms-snapshots-take.html

Find the snapshot to export by listing snapshots and their corresponding VMs: xe snapshot-list params=uuid,name-label,snapshot-of

Set the snapshot to be exportable: xe snapshot-param-set is-a-template=false uuid=<snapshot uuid>

Export the snapshot to a file: xe vm-export uuid= filename=<snapshot uuid>

Later, it can be imported: xe vm-import filename=<path> preserve=true force=true sr-uuid=<uuid> (xe sr-list to find the sr uuid)

Related:

Vb Script Custom Inventory

I need a solution

I need a vb script for a custom inventory on TPM.  I have a working script to geives me the results I need IF the pc has TPM activated.  However, if it is set to deactivat, then the script reurns no results and in the databse I get nulls.  The problem is, if I run the script against a pc that is not connected , I also get  no results and nulls in db.  I had posted the script on Stack Overflow and was given an IF statement to include.  However, it does not post the results as ‘not applicable”. Hoping Symantec can see what the issue is so I can complete this.  This is the working script (which does not work  on a pc that does not have TPM activated:

‘===================================================================================================================

strComputer = “.”

Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootCIMV2SecurityMicrosoftTpm”)

Set colItems = objWMIService.ExecQuery(“SELECT * FROM Win32_Tpm”, “WQL”, wbemFlagReturnImmediately + wbemFlagForwardOnly)

‘===================================================================================================================

‘Create instance of Altiris NSE component

‘===================================================================================================================

‘Create instance of Altiris NSE component

dim nse

set nse = WScript.CreateObject (“Altiris.AeXNSEvent”)

‘ Set the header data of the NSE

nse.To = “{1592B913-72F3-4C36-91D2-D4EDA21D2F96}”

nse.Priority = 1

‘Create Inventory data block. Here assumption is that the data class with below guid is already configured on server

dim objDCInstance

‘Modify this class guid to match the one generated when you create the custom data class

set objDCInstance = nse.AddDataClass (“{fb2182e6-f2db-4c62-8d0f-190dca8723c5}”)

dim objDataClass

set objDataClass = nse.AddDataBlock (objDCInstance)

For each objInfo in colItems

dim objDataRow

set objDataRow = objDataClass.AddRow

WScript.Echo objInfo.IsActivated_InitialValue

WScript.Echo objInfo.IsEnabled_InitialValue

WScript.Echo objInfo.IsOwned_InitialValue

WScript.Echo objInfo.ManufacturerId

WScript.Echo objInfo.ManufacturerVersion

WScript.Echo objInfo.ManufacturerVersionInfo

WScript.Echo objInfo.PhysicalPresenceVersionInfo

WScript.Echo objInfo.SpecVersion

objDataRow.SetField 0, objInfo.IsActivated_InitialValue

objDataRow.SetField 1, objInfo.IsEnabled_InitialValue

objDataRow.SetField 2, objInfo.IsOwned_InitialValue

objDataRow.SetField 3, objInfo.ManufacturerId

objDataRow.SetField 4, objInfo.ManufacturerVersion

objDataRow.SetField 5, objInfo.ManufacturerVersionInfo

objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo

objDataRow.SetField 7, objInfo.SpecVersion

Next

nse.SendQueued

‘===================================================================================================================

This is the script that is supposed to ouput Not applicable but doesn’t:

‘===================================================================================================================

strComputer = “.”

Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootCIMV2SecurityMicrosoftTpm”)

Set colItems = objWMIService.ExecQuery(“SELECT * FROM Win32_Tpm”, “WQL”, wbemFlagReturnImmediately + wbemFlagForwardOnly)

‘===================================================================================================================

‘Create instance of Altiris NSE component

‘===================================================================================================================

‘Create instance of Altiris NSE component

dim nse

set nse = WScript.CreateObject (“Altiris.AeXNSEvent”)

‘ Set the header data of the NSE

nse.To = “{1592B913-72F3-4C36-91D2-D4EDA21D2F96}”

nse.Priority = 1

‘Create Inventory data block. Here assumption is that the data class with below guid is already configured on server

dim objDCInstance

‘Modify this class guid to match the one generated when you create the custom data class

set objDCInstance = nse.AddDataClass (“{fb2182e6-f2db-4c62-8d0f-190dca8723c5}”)

dim objDataClass

set objDataClass = nse.AddDataBlock (objDCInstance)

dim objDataRow

If colItems.Count > 0 Then
     For each objInfo in colItems
      set objDataRow = objDataClass.AddRow

 objDataRow.SetField 0, objInfo.IsActivated_InitialValue
        objDataRow.SetField 1, objInfo.IsEnabled_InitialValue
        objDataRow.SetField 2, objInfo.IsOwned_InitialValue
        objDataRow.SetField 3, objInfo.ManufacturerId
        objDataRow.SetField 4, objInfo.ManufacturerVersion
        objDataRow.SetField 5, objInfo.ManufacturerVersionInfo
        objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo
        objDataRow.SetField 7, objInfo.SpecVersion
    Next

Else

    Set objDataRow = objDataClass.AddRow

    objDataRow.SetField 0, “Not Applicable”
    objDataRow.SetField 1, “Not Applicable”
    objDataRow.SetField 2, “Not Applicable”
    objDataRow.SetField 3, “Not Applicable”
    objDataRow.SetField 4, “Not Applicable”
    objDataRow.SetField 5, “Not Applicable”
    objDataRow.SetField 6, “Not Applicable”
    objDataRow.SetField 7, “Not Applicable”

End If

objDataRow.SetField 0, objInfo.IsActivated_InitialValue

objDataRow.SetField 1, objInfo.IsEnabled_InitialValue

objDataRow.SetField 2, objInfo.IsOwned_InitialValue

objDataRow.SetField 3, objInfo.ManufacturerId

objDataRow.SetField 4, objInfo.ManufacturerVersion

objDataRow.SetField 5, objInfo.ManufacturerVersionInfo

objDataRow.SetField 6, objInfo.PhysicalPresenceVersionInfo

objDataRow.SetField 7, objInfo.SpecVersion

nse.SendQueued

‘===================================================================================================================

0

Related: