21 March 2006

Use Notification Server as package server

Create a Site that contains the local clients subnets, have no Package Servers exist in this Site.
When no Package Servers exist in a Site the Altiris Agents will download from the Notification Server.
Then create separate Sites containing Package Servers for those clients you do not wish to download from the NS.

21 February 2006

Deployment Solution Groups empty

Deployment Solution Groups that are scraped into NS do not show correctly in the Altiris Console. They may exhibit one or more of the following symptoms: No instance of a server appears or the Deployment Server Group does not update its Groups and/or Computers.

The reason is that the Deployment Server’s database tracks any changes made to it since the last synchronization occurred. If the Notification Server never receives the data that was sent during the last synchronization or if a backup copy of the Notification Server database was restored that doesn’t have that data or if for any other reason the Notification Server does not have the data that was sent in prior synchronizations, the Deployment Server Agent will not resend that data to the Notification Server, it will only send changes that were made since the last time synchronized data was sent.

There are two steps to resolving this issue.

Step 1 is to run one SQL query against the Notification Server (Altiris) database to wipe out the corrupt data from that database.

Step 2 is to run one SQL query against the Deployment Server (eXpress) database(s) to force the Deployment Server Agent to send ALL data from the Deployment Server database to the Notification Server as if it were new data.

There are two options for Step 1. The Step 1 Option A query will remove data from the Notification Server (Altiris) database concerning the Deployment Server that was specified in the query. To wipe out data for more than one Deployment Server, run the query once for each Deployment Server. It is then necessary to run the Step 2 query against the (eXpress) database of each Deployment Server where the Step 1 Option A query was run.

The Step 1 Option B query will remove data from the Notification Server (Altiris) database concerning ALL the Deployment Servers. It will then be necessary to run the Step 2 query against the (eXpress) database of ALL the Deployment Servers.


Step 1 Option A: run this script against the Altiris database to selectively remove the Deployment Server(s) from the Altiris database. Before running this script, it is required to replace <ServerName> with the name of the Deployment Server to be removed from the Altiris database.

*****Begin Query*****
/*WARNING: This script is intended to wipe out any data in the Altiris
database pertaining to a specific Deployment Server. Replace <ServerName>
with the name of the Deployment Server you want your Notification Server
to "forget", then run the script against the Altiris database.*/
DECLARE
@servername varchar(255)
SELECT @servername = '<ServerName>'
DELETE FROM Inv_AeX_AC_Client_Agent
WHERE [Agent Name] = 'Deployment Solution Agent'
AND _ResourceGuid IN (SELECT ResourceGuid FROM CollectionIncludeResource
WHERE CollectionGuid IN (SELECT [NS Guid] FROM DSObjectMap
WHERE Server = @servername))
DELETE FROM Evt_AeX_DS_Assigned_Jobs
WHERE DBServer = @servername
DELETE FROM Inv_AeX_DS_Database
WHERE [Deployment Server] = @servername
DELETE FROM Inv_AeX_DS_Machine_Inventory
WHERE _id IN (SELECT _id FROM Inv_AeX_DS_Machine
WHERE [Deployment Server] = @servername)
DELETE FROM Inv_AeX_DS_Machine
WHERE [Deployment Server] = @servername
DELETE FROM DSComputerFolder
WHERE DatabaseID IN (SELECT DatabaseID FROM DSDatabase
WHERE DBServer = @servername)
DELETE FROM DSJobFolder
WHERE DatabaseID IN (SELECT DatabaseID FROM DSDatabase
WHERE DBServer = @servername)
DELETE FROM DSJobConditions
WHERE JobID IN (SELECT JobID FROM DSJobs
WHERE DatabaseID IN (SELECT DatabaseID FROM DSDatabase
WHERE DBServer = @servername))
DELETE FROM DSJobs
WHERE DatabaseID IN (SELECT DatabaseID FROM DSDatabase
WHERE DBServer = @servername)
DELETE FROM DSDatabase
WHERE DBServer = @servername
DELETE FROM Item
WHERE Guid IN (SELECT [NS Guid] FROM DSObjectMap
WHERE Server = @servername)
DELETE FROM Item
WHERE ClassGuid = 'F1E8956A-A158-487F-8185-4C3B492734E7'
AND ProductGuid = '74093212-3CBB-4E0E-AB79-6283D44DB5A1'
AND Name LIKE 'DS Server ' + @servername + '%'
DELETE FROM DSObjectMap
WHERE Server = @servername
DELETE FROM CollectionIncludeResource
WHERE CollectionGuid NOT IN (SELECT Guid FROM Item)
DELETE FROM ItemReference
WHERE ParentItemGuid NOT IN (SELECT Guid FROM Item)
AND ParentItemGuid != '00000000-0000-0000-0000-000000000000'
DELETE FROM ItemReference
WHERE ChildItemGuid NOT IN (SELECT Guid FROM Item)
*****End Query*****


Step 1 Option B, run this script against the Altiris database to remove ALL Deployment Server(s) from the Altiris database. Before you run the script, you must replace <ServerName> with the name of the Deployment Server you want to be removed from the Altiris database.


*****Begin Query*****
/*WARNING: This script is intended to wipe out ALL data in the
Altiris database pertaining to ANY Deployment Server.
Simply run the script against the Altiris database.*/
DELETE FROM Inv_AeX_AC_Client_Agent
WHERE [Agent Name] = 'Deployment Solution Agent'
DELETE FROM Evt_AeX_DS_Assigned_Jobs
DELETE FROM Inv_AeX_DS_Database
DELETE FROM Inv_AeX_DS_Machine_Inventory
DELETE FROM Inv_AeX_DS_Machine
DELETE FROM DSComputerFolder
DELETE FROM DSJobFolder
DELETE FROM DSJobConditions
DELETE FROM DSJobs
DELETE FROM DSDatabase
DELETE FROM Item
WHERE ClassGuid = 'B8B666E1-FED3-4482-8D5A-0895658317B2'
AND ProductGuid = '74093212-3CBB-4E0E-AB79-6283D44DB5A1'
DELETE FROM Item
WHERE ClassGuid = 'F1E8956A-A158-487F-8185-4C3B492734E7'
AND ProductGuid = '74093212-3CBB-4E0E-AB79-6283D44DB5A1'
AND Name LIKE 'DS Server %'
DELETE FROM DSObjectMap
DELETE FROM CollectionIncludeResource
WHERE CollectionGuid NOT IN (SELECT Guid FROM Item)
DELETE FROM ItemReference
WHERE ParentItemGuid NOT IN (SELECT Guid FROM Item)
AND ParentItemGuid != '00000000-0000-0000-0000-000000000000'
DELETE FROM ItemReference
WHERE ChildItemGuid NOT IN (SELECT Guid FROM Item)
*****End Query*****


Step 2, run this script against the eXpress database(s) and then allow the Deployment Server resynchronization to occur at least twice.

*****Begin Query*****
/*Update the changeitem information to tell
Notification Server to delete all information
about this Deployment Server during the
next synchronization*/
UPDATE changeitems
SET _nslastsent = NULL
UPDATE changeitems
SET [change type] = 'deleted'
UPDATE changeitems
SET ns_guid = NULL
UPDATE changeitems
SET [change date] = getdate()
UPDATE event_schedule
SET _nslastsent = NULL
UPDATE history
SET _nslastsent = NULL
INSERT changeitems
SELECT c.computer_id, 'computer', 'deleted', getdate(), c.computer_name, c.domain_name, c.ns_guid, null
FROM computer c
WHERE c.computer_id NOT IN (select id FROM changeitems)
GO

/*Create a trigger that will run once after the
first synchronization completes and recreates the
changeitem table to ensure that only accurate
data is sent to the Notification Server on the
second synchronization*/
CREATE TRIGGER temp_reload_changeitems ON [dbo].[changeitems]
FOR INSERT, UPDATE, DELETE
AS
BEGIN
/*Only run this query if the Deployment Server Agent synchronization has completed and the trigger isn't already running*/
IF NOT EXISTS (SELECT id FROM changeitems WHERE _nslastsent IS NULL) AND EXISTS (SELECT id FROM changeitems)
BEGIN
/*Wipe out the changeitems table so it can be recreated*/
DELETE FROM changeitems
/*Insert Computer Group information*/
INSERT changeitems
SELECT g.group_id, 'computer_group', 'inserted', GETDATE(), NULL, NULL, NULL, NULL
FROM computer_group g
/*Insert Event Folder information*/
INSERT changeitems
SELECT f.folder_id, 'event_folder', 'inserted', GETDATE(), NULL, NULL, NULL, NULL
FROM event_folder f
/*Insert Event information*/
INSERT changeitems
SELECT e.event_id, 'event', 'inserted', GETDATE(), NULL, NULL, NULL, NULL
FROM event e
UPDATE computer
SET _nslastsent = NULL
UPDATE computer
SET ns_guid = NULL
UPDATE event_schedule
SET _nslastsent = NULL
UPDATE history
SET _nslastsent = NULL
/*Self destruct this trigger so it is only run once*/
DROP TRIGGER temp_reload_changeitems
END
END
GO

Howto Fix : Unable to get the config xml for the specified item

Question:
What is the cause of the a.log error "Unable to get the config xml for the specified item <guid>," and how can it be resolved?
Answer:
This error is generally caused when a NS tree object is orphaned in the database.

The steps to clean up the "unable to get the config xml for the specified item <guid>" message from your logs are as follows:

     1. Run the following script: nscript.exe deleteanitem.cs <GUID>. The deleteanitem.cs file is attached to the end of this article. This script deletes the orphaned object. Always validate the GUID before removing it. This can be done by the following steps:
          a. Open SQL Query Analyzer.
          b. Make sure that you select the correct database, i.e. Altiris.
          c. Type the following:  select * from vitem where guid like '<GUID>'

If it does not show, then go ahead and complete step 1.

Note: The nscript.exe file is found in ...\program files\altiris\notification server\bin.

     2. If the script in step 1 does not remove the NS tree object, then there is likely an association that needs to be removed. This can be done with the following script:
     delete from ItemReference where hint = 'policyappliestocollection' and ParentItemGuid = <GUID>

20 February 2006

How to do a clean reinstall of PXE 6.5

Question


How do I reinstall my PXE Manager and PXE server cleanly so that nothing is carried over from the previous installation?



--------------------------------------------------------------------------------

Answer


Sometimes, due to certain environment issues, a PXE server can install incorrectly and become corrupted because of some other environment change. This can create the need to do a clean reinstall of PXE. The following steps explain a detailed process of uninstalling and reinstalling PXE without keeping anything from the previous installation.

If you reinstall PXE using this method you will lose all PXE boot menu configurations and options. These will need to be recreated after installing PXE in this way. All jobs created in the Deployment Server console and images captured from client machines will be unaffected.

If you want to keep your PXE menu options from your previous installation you will need to back up your PXE boot menu. The following linked article explains how to migrate a PXE boot menu from one server to another. These steps can also be used to backup and restore the PXE boot menu after reinstallation.

Browse to the following path on your Deployment Server:
C:\Program Files\Altiris\eXpress\Deployment Server\PXE\MMAccessKey.ini
Copy this file into another directory outside of the PXE folder and keep it as a backup. This exact file will be needed after the uninstall of PXE. If this file is lost you will need to reinstall the entire Deployment Server to recreate the file.
Go to Add or Remove Programs in the Windows console panel and uninstall the following two components:
Altiris PXE Manager
Altiris PXE Server
Delete the following folder and all files in that folder:
C:\Program Files\Altiris\eXpress\Deployment Server\PXE
Do a search on your Deployment Server (search the entire computer, all drives) for "PXE*.*". Delete any files and folders that appear to contain an installation of a PXE Server. Be carefull not to delete any of the PXE installation files normally contained in the DSSetup directory. Mainly you want to make sure that no previous PXE installations from a different version exist, or are installed to a different drive or another folder on your system. Also do a search on your entire computer for "CDSA*" and delete any occurrences of that term.
Recreate the PXE folder under the Deployment Server folder (the same folder that was deleted in step 3). This folder should not contain any files at this point.
Copy the MMAccessKey.ini file back into the PXE folder created in step 5.
Reinstall the PXE Manager by running PXEMgr.exe from the DSSetup folder. Go through the wizard entering all of the information that it requests. When the wizard asks for a username, make sure if you are using a local machine account that you put the machine name in the username (that is, if the DS computer name was "AltirisDS" and the username was "Administrator" you would enter "AltirisDS\Administrator"). If you do not have the DSSetup folder (because it was deleted after installing Deployment Server), you will need to recreate that folder by running the Deployment Server installer file and selecting "Extract Only".
Reinstall the PXE Server by running PXE.exe from the DSSetup folder. Go through the installation wizard of that component entering in all requested information.
Verify that all PXE services are running. If they are not running, try to start them and note any error message that it gives, or the event log entries that show the error. If all services are running correctly open the PXE Configuration Utility to verify that PXE is working correctly.

Automaticlly Merge Duplicates

How do I automatically merge all duplicate computers found in the Merge Computers report-utility?

Author: 1116

Question:
How do I automatically merge all duplicate computers found in the Merge Computers report-utility (located under the Configuration Tab > Server Settings > Notification Server Settings > Merge Computers > Merge computers with duplicate names)?
Answer:
The following script will automatically merge all resouces found in the above mentioned report: DECLARE @MergeName nvarchar(400)DECLARE @MergeDomain nvarchar(400)DECLARE @FromGuid uniqueidentifierDECLARE @ToGuid uniqueidentifier DECLARE @PrimaryResource UNIQUEIDENTIFIER PRINT 'The following script will automatically merge resources as per the ''Merge computers with duplicate names'' report.'PRINT 'The merge automatically chooses the resource that has the most recent update.' DECLARE merge_cursor CURSOR FOR SELECT Ident.[Name], Ident.[Domain] FROM Inv_AeX_AC_Identification Ident INNER JOIN ( SELECT Ident1.[_ResourceGuid], Ident1.[Name], Ident1.[Domain] FROM Inv_AeX_AC_Identification Ident1 INNER JOIN Inv_AeX_AC_Identification Ident2 ON Ident2.[Name] = Ident1.[Name] AND Ident2.[Domain] = Ident1.[Domain] AND Ident2.[_id] != Ident1.[_id] INNER JOIN vComputerResource Ident3 ON Ident1.[_ResourceGuid] = Ident3.[Guid] GROUP BY Ident1.[_ResourceGuid], Ident1.[Name], Ident1.[Domain] ) udr ON Ident.[_ResourceGuid] = udr.[_ResourceGuid] GROUP BY Ident.[Name], Ident.[Domain] OPEN merge_cursor FETCH NEXT FROM merge_cursorINTO @MergeName, @MergeDomain WHILE @@FETCH_STATUS = 0BEGIN PRINT 'Merging ' + @MergeName + '.' + @MergeDomain CREATE TABLE #DUPLICATE_NAME (Resource UNIQUEIDENTIFIER, [Primary] BIT, [Name] NVARCHAR(64), [Domain] NVARCHAR(64), LastUpdated DATETIME, [OS Name] NVARCHAR(64)) INSERT INTO #DUPLICATE_NAME SELECT ident1.[_ResourceGuid] AS [Resource], CAST (0 AS BIT) AS [Primary], ident1.[Name], ident1.[Domain], md.[ModifiedDate] AS [LastUpdated], ident1.[OS Name] FROM Inv_AeX_AC_Identification ident1 JOIN ( SELECT ident2.[Name], ident2.[Domain] FROM Inv_AeX_AC_Identification ident2 GROUP BY ident2.[Name], ident2.[Domain] HAVING COUNT (ident2.[Name]) > 1 AND ident2.[Name] = @MergeName AND ident2.[Domain] = @MergeDomain ) dr ON ident1.[Name] = dr.[Name] and ident1.[Domain] = dr.[Domain] LEFT OUTER JOIN ( SELECT DISTINCT rus.[ResourceGuid], rus.[ModifiedDate] FROM ResourceUpdateSummary rus JOIN ( SELECT rus2.[ResourceGuid], MAX( rus2.[ModifiedDate] ) AS ModifiedDate FROM ResourceUpdateSummary rus2 GROUP BY rus2.[ResourceGuid] ) td ON td.ResourceGuid = rus.ResourceGuid AND td.ModifiedDate = rus.ModifiedDate ) md ON ident1.[_ResourceGuid] = md.[ResourceGuid] SELECT TOP 1 @PrimaryResource = Resource FROM #DUPLICATE_NAME ORDER BY [LastUpdated] DESC UPDATE #DUPLICATE_NAME SET [Primary]=1 WHERE Resource = @PrimaryResource /*SELECT * FROM #DUPLICATE_NAME ORDER BY [LastUpdated] DESC*/
SELECT TOP 1 @ToGuid = Resource FROM #DUPLICATE_NAME where Name = @MergeName and Domain = @MergeDomain and [Primary] = '1' SELECT TOP 1 @FromGuid = Resource FROM #DUPLICATE_NAME where Name = @MergeName and Domain = @MergeDomain and [Primary] = '0' DROP TABLE #DUPLICATE_NAME exec spResourceMerge @FromGuid,@ToGuid FETCH NEXT FROM merge_cursor INTO @MergeName, @MergeDomain END

15 February 2006

Enable Bulletins

Enable A lot of Bulletins

Body: 1. Introduction
This script will enable patch bulletins depending on the command line parameters entered, and create a software update task for each. Length of time to enable a bulletin will depend on how many files need to be downloaded within each bulletin.
2. General Instructions
a. Place the following files is in C:\Program Files\Altiris\Notification Server\bin.
i. Nscript.exe (in there by default)
ii. Nscript.exe.config (in there by default)
iii. Nscript.nrf
iv. EnableBulletins.cs
v. .txt file with a list of bulletins to be enabled (if applicable)
3. To Enable Specific bulletins **See Note 1
a. Create a .txt file (like SampleBulletinList.txt) and create a list of bulletins to be enabled.
b. From a command prompt run "NScript.exe EnableBulletins.cs YourTextFile.txt" ** See Note 2
4. To Enable All Bulletins with a Specific Security Rating
a. From a command prompt run "NScript.exe EnableBulletins.cs critical" ** See Note 3
5. To Enable All Bulletins
a. From a command prompt run "NScript.exe EnableBulletins.cs"


The script file can be obtained by a simple mail

11 January 2006

Gauge Summaries dashboard Error

When running the Gauge Summaries dashboard from a workstation with Dutch regional settings the following error occurs;
Error when node clicked: Unable to load the specified item (GUID:{4d343f01-5f63-4b37-a022-1c2e50f109a9})

It seems that this dashboard is using the regional settings on the workstation (which is dd–mm–yyyy),
probably Altiris expects the US regional settings mm/dd/yyyy.

Workaround:
A not acceptable workaround is to set the regional settings on the workstation to US.
(Not acceptable, because all other programs/reports/E-mail also appear with the US date.)

01 December 2005

Special Tokens

%#!computer@model_num%

which means, look in the Express database for the DS we're connected to, read the computer table, and grab model_num for the machine who's id is %ID%

This is just a number though and it's not necessarily what you want.

If you want to know like, "Latitude D600" or something similar

use

%#!computer@prod_name%

Just be careful, because prod name always has a space in it, and if you're comparing two strings in DOS, like this

SET model=%#!computer@prod_name%

IF "%model%"=="Latitude D600" goto D600

IF "%model%"=="Latitude D610" goto D610

it'll jump to D600 every time, because it only compares the first word before the space. To get around this, I have created a custom view in SQL of the computer table the changes the spaces into _ so then I get "Latitude_D600" back, which works beautifully.

See also Nice forum article

30 November 2005

Point Clients to another NS Server

What you need to do is run AeXAgentUtil.exe in the following format...

AeXAgentUtil.exe /server:NSServerName

If you own deployment server, you can make a job and deploy it.

10 November 2005

Creating special groups in Inventory Solution for Windows 6.1

Question:
How do I create special groups in Inventory Solution for Windows 6.1? I cannot see the tables or data classes for my new special group.
Answer:
Inventory for Windows 6.1 no longer creates data class and database tables for special groups. To get them created, follow the following steps:

     1. Create the special group in the auditpls.ini file using aexapedit. Create and enter a GUID. You will need a tool such as guidgen.exe for this, since Altiris does not supply GUIDs for new special groups. There are also GUID Generators on the Web. To find them, search for "GUID Generator" on a Web search engine.
     2. Create a copy of “specialgroup.config" and name it <new special group>.config. The specialgroup.config file is found in C:\Program Files\Altiris\Inventory\Config.
     3. Modify the new <new special group>.config file by changing the “XXXXXX-XXX” GUID string to the special group GUID used in the auditpls.ini file.
     4. Change the <name=…> tag values to the name of your auditpls.ini special group name. There are possibly eight or more occurrences that will need changing. The auditpls.ini special group name and the new config file names must match.
     5. Update the inventorysolution.config file with the name of the <new special group>.config file. It should be surrounded by these tags: <items source="New_SW_Group_Name.config"></items>. There is an example in the specialgroup.config file.
     6. Run C:\Program Files\Altiris\Notification Server\bin\aexconfig.exe as shown: aexconfig /configure “C:\Program Files\Altiris\Inventory\Config\InventorySolution.config”. If using the full path, the double quotes are required. This should take about one minute. If it only takes a second or two, the config did not complete. To find out if AeXConfig was successful, open the LogViewer before executing the command. You will then see the whole process in real time. If you have configured your <special group>.config files or the inventorysolution.config file incorrectly relating to your special groups, then you will see error messages associated with those special groups.

Once aexconfig is run, the tables should appear in the database. If the config files are setup correctly and inventory is being captured as expected, the information will appear in those tables after the next inventory run. If the data does not appear, ensure that the inventory can capture the data and that the config files were created and modified properly. All of the points-of-failure from previous versions of inventory still apply: file mode vs. package mode, exclusions, overrides, etc. Be sure to check those as well as the modifications of the config files.

Note: When creating names for special groups, it is helpful but not required, that they begin with “AeX SW.” This provides for better grouping of tables in the database and of data classes in the NS Console’s resource view.

28 September 2005

Site Maintenance

The Site Maintenance page is used to assign subnets to sites in order to maximize the effectiveness of Package Servers. Package Servers are automatically assigned to sites by virtue of their subnets.

Under normal operating conditions (for example, sites defined) a Package Server will only service Altiris Agents that exist within the same sites.

Note: If no sites are defined, then all Package Servers are available to service all Altiris Agents (not desirable) and the following occurs:

    • The Notification Server stores a mapping of Package Servers to subnets.
    • The Notification Server first tries to find any Package Servers on the same subnet(s) as the requesting machine. If any are found these codebases are returned.
    • If there are no Package Server codebases from Package Servers in the same subnet all Package Server codebases are returned.
    • If there are no Package Server codebases the NS codebases are returned.

To download packages ensure your Package Servers are assigned to sites either by assigning their subnets to sites or by allowing the Connector for Active Directory do it for you

Note: Under normal working conditions, Altiris Agents will only download packages from Package Servers that exist in the same site(s) as the Altiris Agent.

Sites are used to limit the Package Servers that an agent should use by virtue of subnet grouping. This generally limits them by proximity. Ultimately, once the list of candidate Package Servers is returned to the Altiris Agent, the Altiris Agent makes the choice based on speed and bandwidth.

The information on the Site Maintenance page is automatically populated if you have the Connector for Active Directory installed. This page allows you to supplement the Connector for Active Directory, if you have it installed. If not, if you use Package Servers, you must use this page to add sites and assign subnets to them so that your Package Servers function correctly.

If you have the Connector for Active Directory installed, Active Directory is the source of truth and overrides any subnets and sites that conflict with it. For example, if you assign subnets to sites on your own, and they conflict with what is in Active Directory, the Active Directory information is used.

The Sites tab, Subnets tab, and Package Servers tab views on this page give you three views of the same data and the Advanced tab shows scheduling options.

Sites Tab View

This tab view helps you see sites that are created and lets you create and edit sites.

Item
Description
Name
The name of the site.
No of Subnets
The number of subnets that have been associated with the site.
No. of Package Servers
The number of Package Servers that are in the site.

Note: The numbers in the "No. of Subnets" and "No. of Package Servers" columns provide links that take you to reports that give you specific information on the subnets or Package Servers respectively.

07 September 2005

Disable Multicast

If you are running a silent install of the aclient and you want to use the second transport option of connecting directly to a server rather than multicast include the following line in the inp file:

TransportUse=1

Setting it to 0 will use multicasting.

They should update documentation.

Its also in the registry if you already have it deployed and are using multicasting and want to change it:

HKLM\software\altiris\client service "USEMCast" =0|1 make the change then restart the Altiris Client Service.

29 August 2005

Disable HTTP or UNC download on PS

Package Server root

• [HKEY_LOCAL_MACHINE\SOFTWARE\Altiris\Altiris Agent\Package server]

Value Type Default Description

EnableUNC DWORD 1 Package server will publish UNC codebases.

EnableWeb DWORD 1 Package server will publish HTTP/HTTPS codebases.

16 August 2005

Troubleshooting the Process of an Altiris Agent Push in NS 6.0

Question:
What are the steps to troubleshoot a failed Altiris Agent Push in NS 6.0?
Answer:
The following outlines the process used for an Altiris Agent push, and possible causes for points of failure.  When the point of failure has been determined, usually the problem will be apparent either by a log entry or by the location of that failure.

1.  Configuration of the Altiris Agent Push
     a.View the Installation Settings in order to determine how the push is configured, located in the Altiris Agent push page by clicking the “Installation Settings” button.
     b. If the client uses a proxy server, check the option “Use Proxy”.
     c. Note the field “Use different Notification Server” and make sure the configuration is correct (or unchecked).
     d. *The credential fields are key to the Altiris Agent push.  If no credentials are chosen, it will use the account specified as the Application Identity/Application Credentials.  If pushing the Agent in a multi-Domain or Workgroup environment, the account used for the push must have local Administrator privileges on the machine(s) being pushing to.

2.  Initiating the Push
     a. A push can be done to one or more machines at one time.  Use the “Install Altiris Agent” to initiate the push.  
     b. The status section on the Agent push page can be useful.  Keep this in mind when walking through the items of a Push installation.

3.  Installer Service – AexSWDInstSvc.exe
     a. The actual install package for the Altiris Agent does not get pushed to the client machine.  The installer service, named AeXSWDInstSvc.exe, is pushed to the client machine.
     b. The user account specified on the push page settings, or the Application Identity if no account is supplied, is the account that attempts to access the \\machinename\admin$ share on the destination machine.
    c. As soon as the Installer Service reaches the client machine, it begins to log information into the log file AeXSWDInstSvc.log, located at C:\<Windir>\System32.  The EXE resides in the Admin$ share (generally the %windir%).
    d. It will register the EXE as a service.  This service has limited ability for throttling and check-point recovery when downloading the Agent install Package.  If a machine is rebooted before it has successfully downloaded the install package, the service will use check-point recovery to pick up where the download was terminated.
    e. If a push fails, and this log does not exist, then the Installer Service did not reach the client machine.  Troubleshoot access rights being used for the push, and look at the status in the Altiris Agent push page. If the log does exist, review the details.
    f. The installer service will download the actual install package, named AeXNSC.exe.
    g. Next it executes the install package.
    h. Once the install package is executed, the AeXSWDInstSvc.exe removes itself as a Service.
    i. Lastly, it removes itself (EXE) from %windir%.

4. Agent Install Package – AeXNSC.exe
     a. If the Installer Service fails to download the AeXNSC.exe file, it will be reflected in the AeXSWDInstSvc.log file.  Look for authentication or HTTP request errors.
     b. If the Installer Service fails to execute the downloaded file, it will also be reflected in the AeXSWDInstSvc.log file.  Look for execution errors.
     c. If the Install Package is downloaded successfully and executed, it will begin to write to the file AeXNSC.log, located at C:\<Windir>\System32.
     d. Any problems with the Package install will be logged in the AeXNSC.log file.
     e. When the installation is complete, the agent service will be started, and the Agent will begin logging information into the agent.log and subsequent log files.

5. Communication back to the Server – Agent installed
     a. It is possible that while a push it successful, the Agent Communication is unsuccessful.  This may result in an erroneous status on the Altiris Agent push page.

11 August 2005

Adding other Antivirus in inventory

If you'd like to utilize the built-in report on AntiVirus, you simply need to add the Norton 10.0.1 filename or product name or internal name, etc to the Special Group defined in the SW scan.

Use the AeXAPedit.exe to do this.
NSCap\bin\win32\x86\ AeXAPedit.exe

Run AexAPedit.exe and open the auditpls.ini file located in the Inventory Solution folder.
NSCap\bin\win32\x86\Inventory Solution

Select the Special Groups Tab. Select the AntiVirus Special Group. Notice it already has some internal filenames and product names in there. You can look through your Audit Detail reports to find this information for Norton 10.0.1. OR right click on one of the files that's on all your Norton 10.0.1 clients, and look at the internal name or filename or product name or manufacturer name, etc. This is the unique header info you need to put in the AntiVirus special group.

Add to the special group, save the auditpls.ini and close the AeXAPedit.exe program.

Force Policy Update script for usage with DS

The following VB Script can be used with an existing AClient to force the Altiris NS Agent to wake up and check for any new configuration / policy updates. This is not an issue with NS 6 since it can now do that, but for everyone with 5.5, this is still valuable.
 
 'vbscript
Option Explicit
 
' Declare variables
Dim Client
 
' Create the NS Client object
Set Client = CreateObject("Altiris.AeXNSClient")
 
' Ask the client's policy manager to refresh the configuration
Client.ClientPolicyMgr.Refresh
 
' Clean up
Set Client = Nothing

09 August 2005

Permissions on NS client Registry

This is now a well known issue guys.

If you ever have any problems on a computer regarding the registry check first that you are not running the AClient version 6.1.393 or 394 as it has a defect (changing permission on some of the Altiris registry keys).

20 July 2005

How to install Deployment Server on Microsoft Cluster Server.

How to install Deployment Server on Microsoft Cluster Server.
Article #: AKB7197
Author: 3108
Date: 3/11/2005 9:19:28 AM

--------------------------------------------------------------------------------

Question:
How to install Deployment Server on Microsoft Cluster Server?
Answer:
1. There must be two servers clustered and working.

2. Install the enterprise version of SQL from the primary node onto the virtual server. SQL will not let you install onto the virtual server that Microsoft Cluster Service created so you have to make a new virtual server. To run the Deployment Server (DS) on a cluster, a cluster virtual IP needs to be established.

3. Install the DS with the same settings from each cluster node but use the cluster IP address anywhere you enter an IP. From the Primary node in the cluster (the node that owns the storage) install an instance of the DS using the shared storage for the DS database and the Client Access Files. The DS should be installed to the local drive.

4. Fail the cluster over to the Secondary node and do the install the exact same way.

5. With all the files pointing to the exact same location, install the DS to the local drive. When both machines are rebooted, they should both be running the Altiris Express Service in Services Manager.

7. Now open Cluster Manager and create a new Generic Service; name the service the same name as the one running in Services Manager. Make it part of the Cluster Group that all the other services are running in.

8. Now it should be possible to fail over the service and it should start the Altiris Express Service on the inactive node.

Because the DS is not cluster aware, anytime there is an active node transfer it will be as if the axengine died and restarted. That means Aclient will probably become orphaned until it attempts a reconnect.

06 June 2005

Activate the Diagnostics without showing the NSCLient Icon

'vbscript
dim client
set client = CreateObject ( "Altiris.AeXClient" )

dim sessmgr
set sessmgr = client.SessionManager

'Client Diagnostics
sessmgr.ActivateObject ( "{E8B8B9D4-A461-4E19-9F14-B72E5110F631}" )

'Network Diagnostics
sessmgr.ActivateObject ( "{1D588FDC-D1DA-40DD-99F7-D43D161F043E}" )

'Power Management
sessmgr.ActivateObject ( "{2C71C589-25C8-4D5B-8FD2-68B376566601}" )

05 June 2005

Ports and Protocls

Want to find out more about the ports and protocols for DS 6.X?

Check out this Altiris White Paper AKB5447

03 June 2005

System Tokens

Here you can find the SYSTEM Tokens you can use for DS

DEPWPT120611

Batch file which will reconnect inactive Deployment Agent for Windows

KB Article : AKB5705
 
Question:
Sometimes administrators are not sure why aclient machines are not connected to the deployment server. Often times this is because the user has shut down the service.  What can an administrator do?
Answer:
Run this Sql Query on against the database:
This batch file will need to be modified to stop and then start the service to reconnect the clients that think they are connected but are not actually connected.

Note:  this must be run as a domain administrator to allow proper authentication to restart the aclient service.

Also note the OSQL statement may need to be modified if a remote SQL server exits or use SQL authentication to access the express database.


Example Batch file:

rem This will query the eXpress database for computers that are not connected and for each one will attempt to connect to the computer and start the aclient service.

for /f %%i in ('osql -E -d eXpress -h-1 -Q "set nocount on;select name from computer where computer_id not in (select computer_id from sessions)"') do sc \\%%i start aclient

Change IP Address for PXE

In this White Paper you can find the way to change the IP Address for a PXE Server.

Altiris AKB2401.

Or try this:

Change Altiris Deployment/PXE IP adress.
Stop All Altiris DS services.
Change IP i these Files:
C:\Program Files\Altiris\eXpress\Deployment Server\default.cfg
C:\Program Files\Altiris\eXpress\Deployment Server\PXE\PXE.ini
C:\Program Files\Altiris\eXpress\Deployment Server\aclient.inp
and the %name%\%name%.bdc Files under
C:\Program Files\Altiris\eXpress\Deployment Server\Bootwiz\config\

Start Altiris DS Services.
Change Bootdisks IP
Start DS Console (Not Webconsole)
Open PXE Configurator
Mark The Bootdisk you want to change
Select Make Boot Files
Change The line (set CONIP=-ip192.168.0.1) in autoexec.bat and startnet.bat
Right click on Th Bootdisk an select Make Boot File
Close and Repeat For all Bootdisks

Just an add-on to this excellent article.As I installed PXE Server after changing IP, there were no \PXE\PXE.INI to change in, and the PXE Server Service refused to start after the installation. I sorted it out by changing adress in \PXE\RPC.ini as well. Then PXE.ini gets created automatically, and the service started as it should.