Quantcast
Channel: Ivanti User Community : All Content - General
Viewing all 415 articles
Browse latest View live

Ivanti Endpoint Manager 2018.1 release information and useful links

$
0
0

Release Information

 

Ivanti Endpoint Manager (EPM) 2018.1 was released on May 11th, 2018.  It is a full release with various problem fixes and enhancements.

 

What's new?

 

Whats new for Software Distribution in EPM 2018.1

What's new for Mac in Ivanti EPM 2018.1

About EPM 2018.1 WS Remote Control

About New Inventory Features in EPM 2018.1

Windows CSPs (Configuration Service Provider)

Network Map

 

 

How to obtain Ivanti Endpoint Manager 2018.1

Download links are available to customers with a current maintenance agreement

 

Ivanti Endpoint Manager 2018.1 Download

 

Hashes:

Sha1: AD87D89FAD599019DEE8296487BFB6F30F8882B7

Sha256: B16563CC3D0BCADF2C0FE871113657710F77B2CC91D115B8824A677EC88305CE

 

Readme:

 

Click here to view the readme

 

Installation / Upgrades

 

Ivanti Endpoint Manager 2018.1 Install Guide

Installing Workspaces for Ivanti Endpoint Manager 2018.1

Ivanti Endpoint Manager 2018 Architecture Guidelines

 

Licensing

 

Customers who are already licensed for older versions of Ivanti Endpoint Manager or LANDesk Management Suite are entitled to a license for EPM version 2018.1.  Your current activation credentials will activate the new version.  Please contact support if you encounter any activation or licensing issues.

 

Customers who are not yet licensed, please contact your account/sales/partner contact to purchase the product.

Support will not be able to provide you with the software or license but can assist in finding who to contact if you are unsure.

 

Considerations Before Upgrading

 

Supported Platforms and Compatibility Matrix for LANDESK Management Suite/Ivanti Endpoint Manager

Prerequisites to Check Before Installing, Updating, or Patching the Ivanti Endpoint Manager Core Server

 

Useful Documents

 

About Windows PE versions used in Ivanti Endpoint Manager

Mobile Device Management

Linux and Unix

Features and Compatibility EOL Matrix for Management and Security Suite

Download the Latest Service Pack for Ivanti / LANDESK Software Products

Best Known Methods for installing Microsoft SQL Server 2012 for LDMS


Maintenance Plan for SQL Express

$
0
0

Purpose

 

SQL Express does not have any maintenance options built in like SQL Standard and SQL Enterprise. You can however work around this by creating scripts with your SQL Express Studio and utilizing the Windows Scheduler to launch tasks. This document will give some suggestions on actions that you can apply to your core server for a database maintenance plan.

 

Prerequisite

 

You will need to install the SQL Server Management Studio Express on your core. The following article will explain how to download, install and open the Studio.

Download SQL Server Management Studio (SSMS) | Microsoft Docs

 

Overview

 

Create a Database Backup Script

 

  1. Download the attached SQLMaintenance.SQL script and double click on the script. When you double click on the script while on your core with SQL Studio installed, it will open the Studio and you will need to press the execute button ( the ! sign in the menu) or F5.

 

    2. Now we can create a script that can be used with the windows scheduler to backup the database automatically. Lets look at the script first so you can make any modifications. Below you will notice that you will need to make a backups folder and a reports folder, you can update the path as needed but make sure you create the folders before proceeding.

 

    3. Copy the below code into notepad and after any changes save as SQLBackupScript.SQLat C:\backup scripts

exec expressmaint   
@database      = 'ALL_USER',   
@optype        = 'DB',   
@backupfldr    = 'c:\backups',   
@reportfldr    = 'c:\reports',   
@verify        = 1,   
@dbretainunit  = 'days',   
@dbretainval   = 1,   
@rptretainunit = 'weeks',   
@rptretainval  = 1,   
@report        = 1

 

    4. Now we will create the .CMD file that will launch our backup script. Open notepad and edit the following script to match your SQL server instance name. Edit the word KENNY and change it to your Core Computer Name. Save this file as SQLRunBackup.CMD

         sqlcmd -S KENNY\LDMSDATA -i"c:\backup scripts\userfullbackup.sql" -v DB="ALL_USER" -v BACKUPFOLDER="c:\backups" -v DBRETAINUNIT="days" -v DBRETAINVAL="1"


    5. By this time you should have three folders created, C:\Backups, C:\Reports and C:\Backup Scripts. Inside the scripts folder should be two scripts, SQLRunBackup.CMD and SQLBackupScript.SQL (shown below).

 

 

     6. Now we can create our Windows scheduled task to launch our Backup of the Database on a weekly basis.

 

     A. Navigate to the Microsoft Task Scheduler then click Create Task.

 

 

     B. Under the General tab, name your task ans select any additional settings you prefer.

 

     C. Under the Triggers tab, select to begin the task on a schedule and then select when you would like for your task to run.

 

     D. Under the Actions tab, select New... and for your action select Start Program. Then browse to the SQLrunBackup.CMD and click OK.

 

     E. Click OK to save your changes and enter the domain administrator username and password for the Core Server.

 

     F. When the task runs as scheduled you will see folders of your databases in the C:\backups folder with a full backup of each database inside.

 

Creating a Database Re-Index Script

 

Using the tools from the previous exercise we will create a Re-Index Script to run on a schedule.

 

     1. Download to your C:\Backup Scripts directory the SQLReIndex.SQL and the SQLRunReindex.CMD

     2. Edit the SQLRunReindex.CMD file and change the name KENNY to your Core Server name. If your database for EPM is named something other than LDDB, please edit the the SQLReIndex.SQLscript and edit the first line only changing LDDB to the name of your EPM Database.

     3. Using the Windows Scheduled task creation steps from above, create the task to run every week.

 

For more information about Re-Indexing please view the following article: http://community.landesk.com/support/docs/DOC-4362

 

Creating a Database Maintenance Script

 

Using the tools from the first exercise we will create a Maintenance Script to run on a schedule. This script is created based off the Tuning guide and should be customized for your environment. The tuning guide is located here: http://community.landesk.com/support/docs/DOC-5834

 

     1. Download to your C:\Backup Scripts directory the SQLTuning.SQL and the SQLRunTuning.CMD

     2. Edit the SQLRunTuning.CMD file and change the name KENNY to your Core Server name. If your database for EPM is named something other than LDDB, please edit the the SQLTuning.SQLscript and edit the first line only changing LDDB to the name of your EPM Database.

     3. Using the Windows Scheduled task creation steps from above, create the task to run every week.

 

     The SQL Tuning script will do the following actions:

 

    • Deleting Remote Control data older than 90 days
    • Deleting History older than 90 days
    • Deleting Patch History older than 90 days

 

Please remove or add items to the tuning script as needed for your environment.

 

Summary

 

The complete maintenance plan if you are using will Backup your database with a full backup each week, reindex your tables for efficiency and delete history older than 90 days that may not be of use anymore. If you are using this complete maintenance plan you should have the following items setup on your core server:

 

1. SQL tools Installed from the Prerequisite: http://community.landesk.com/support/docs/DOC-5764

 

2. The following directories should exist:

 

  • c:\backups
  • c:\reports
  • c:\backup scripts

 

3. Inside the c:\backup scripts you should have the following files:

 

  • SQLBackupScript.SQL
  • SQLMaintenance.SQL
  • SQLReindex.SQL
  • SQLTuning.SQL
  • SQLRunBackup.CMD
  • SQLRunReIndex.CMD
  • SQLRunTuning.CMD

 

4. Inside Windows Scheduled Tasks you should have 3 tasks pointing to the following files each running on a weekly schedule.

 

SQLRunBackup.CMD

SQLRunReIndex.CMD

SQLRunTuning.CMD

 

 

Affected Products

Endpoint Manager

LDMS

Documentation for Encrypted CD Session Close - Is there a document that shows this?

$
0
0

Is there a specific document that showcases the above fact?

Windows 10 1803

$
0
0

Is LDMS 2016.0 compatible with windows 10 1803?

Excel Connector to LDMS database?

$
0
0

We are nearing the end of a transition from IBM's BigFix product to LDMS (currently 2016.3).  BigFix has a tool they call an Excel Connector.  Here is their verbiage:

 

IBM BigFix operators often find that it is useful to extract the wealth of data on the BigFix Server for analysis and reporting. They either process the data themselves, or will often send the information to other consumers in an Excel format.

The IBM BigFix Excel Connector is created to simplify the data extraction process. It has a Wizard-like interface that makes it easier to extract data from the BigFix Server without the need to write Session Relevance language. In addition, the Connector has a built-in session relevance editor to query Web Reports. See a full standalone version of the session relevance editor here.

 

Is there anything like this for LDMS, that would allow us to use Excel to connect to the LDMS database and make queries to it?

Using Migration Manager with EPM

$
0
0

Hello folks,

 

we are in the process of evaluating "Ivanti Migration Manager 10.2" ( https://www.ivanti.com/solutions/unified-endpoint-management/user-profile-migration ) for automated use during OS deployment via EPM.

The tool works fine on it's own, yet we have to automate the process of profile migration during OS deployment.
The product description states: "Ivanti Migration Manager is an easy to use, scalable solution that integrates with Ivanti Unified Endpoint Management solutions to move user profile data to Windows 10. "

From the Migration Manager documentation, I can't find a way to integrate the tool into EPM. To my (current) knowledge, the only way to use MM via EPM is a Software Package running batch/powershell files, which isn't the kind of "integration" I'd expect from the description.

Did I just miss the "Install EPM Add-On here" button ?

 

I'd greatly appreciate any input.

Thank you

 

Kind regards,

Stefan Werner

On Demand Training Tutorials?

$
0
0

We have someone new joining our department and I would like this person to take some time and go through some Ivanti LANDesk tutorials. I have looked through the site and can't seem to find what I am looking for and though it wise to ask if it even exists. I was hoping to find tutorials on patch management, software deployment and imaging. We run LANDesk 2016 in our environment, any info you can pass my way would be much appreciated!

How to create an ODBC connection to your Landesk\Ivanti EPM database

$
0
0

For troubleshooting purposes, there are instances where it might be necessary to try to connect to the database via an Windows utility rather then Ivanti. This can help determine, if the there are issues with IIS, Ivanti or the ability of the core server to communicate with the database generally.

 

The tool that we are going to be using is an ODBC connector.

 

  • Click on start and then type in "ODBC"
  • Launch ODBC Data sources (64-Bit)

          Click on The system tab > Add

 

odbcsystemadd.PNG

 

  • Click on finish.
  • On the next screen,  it will have you fill out information.   The first two fields do not matter,  we only care about entering in the correct server.

 

sqlserverinfo.PNG

 

  • Click next.
  • Change the login to "with SQL Server authentication using a login ID and password entered by the user"
  • For the login id,  Use the same user ivanti is using to connect to the database.

 

login.PNG

 

  • Click next
  • If you can click the drop down and see all of your databases on the serer then,  the issue is most likely going to be with Ivanti or IIS.

 

successfull.PNG


LANDesk Server Log File Locations for Troubleshooting

$
0
0

Server Side Log file locations by LANDesk component

 

For a list of 9.5 Client Side Log locatons, see Community Article Doc-28888.

            For a list of 9.6 SP1 Client Side Log locations, see LANDESK Management Suite 9.6 SP1 Client Log File Locations

            For a list of 9.6 Client Side Log locations, see LANDESK Management Suite 9.6 Client Log File Locations

 

 

 

Alerting

\Program Files\LANDesk\ManagementSuite\log\alertdetail.log

\Program Files\LANDesk\ManagementSuite\log\alertname2table.exe.log

\Program Files\LANDesk\ManagementSuite\log\alertrule2xml.exe.log

\Program Files\LANDesk\ManagementSuite\log\alertruleset2table.exe.log

\Program Files\LANDesk\ManagementSuite\log\AlertService.log

\Program Files\LANDesk\ManagementSuite\log\sendemail.log

 

 

AMT

\Program Files\LANDesk\ManagementSuite\log\AMTProvMgr2.log

\Program Files\LANDesk\ManagementSuite\log\IPMIRedirectionService.log

\Program Files\LANDesk\ManagementSuite\log\AmtSessionMgrSvc.log

\Program Files\LANDesk\ManagementSuite\log\AmtSessionMgr.log

\Program Files\LANDesk\ManagementSuite\log\IpmiRedirectionService.log

C:\Windows\Temp\ServerSetup.log

C:\Windows\Temp\AMTConfigDll.log

%temp%\AMTConfigDll.log

 

 

LANDesk Policy Software Deployment

\Program Files\LANDesk\ManagementSuite\log\apmservice.exe.log

\Program Files\LANDesk\ManagementSuite\log\apmservice.log

\Program Files\LANDesk\ManagementSuite\log\schedpkgupdate.exe.log

\Program Files\LANDesk\ManagementSuite\log\scheduledtaskhandler_#.log

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

 

 

LANDesk Software Deployment

\Program Files\LANDesk\ManagementSuite\log\scheduledtaskhandler_#.log

\Program Files\LANDesk\ManagementSuite\log\landesk.scheduler.globalscheduler.exe.log

\Program Files\LANDesk\ManagementSuite\log\landesk.scheduler.globalscheduler.log

\Program Files\LANDesk\ManagementSuite\log\landesk.scheduler.globalscheduler.skeleton.log

\Program Files\LANDesk\ManagementSuite\log\landesk.scheduler.globalscheduler.skeleton.exe.log

\Program Files\LANDesk\ManagementSuite\log\MCC-[xxxxxxxxxxxxxxxxx].log

\Program Files\LANDesk\ManagementSuite\log\MCS-[xxxxxxxxxxxxxxxxx].log

\Program Files\LANDesk\Managementsuite\log\PreferredServerConfig.exe.log

\Program Files\LANDesk\Managementsuite\log\raxfer.log

 

 

  Scheduler Service – Queries and LDAP targeted tasks, Recurring scheduled jobs on the core

\Program Files\LANDesk\ManagementSuite\log\schedqry.exe.log

\Program Files\LANDesk\ManagementSuite\log\schedsvc.exe.log

\Program Files\LANDesk\ManagementSuite\log\schedsvc.log

 

 

  LANDesk Web Console and Component calls to LANDesk Core Web Services

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

C:\WINDOWS\system32\LogFiles\HTTPERR\httperr#.log

C:\WINDOWS\system32\inetsrv\w3wp.exe.log

 

 

LANDesk Process Manager

\Program Files\LANDesk\Process Manager\LaunchApp.log

\Program Files\LANDesk\Process Manager\DatabaseManager\DatabaseManager.log

\Program Files\LANDesk\Process Manager\TaskEngine\[xxxx]Landesk.Workflow.TaskEngine.Internal.log

\Program Files\LANDesk\Process Manager\TaskEngine\LANDesk.Workflow.TaskEngine.Internal.log

\Program Files\LANDesk\Process Manager\LANDesk.Workflow.TaskEngine.log

\Program Files\LANDesk\Process Manager\WorkflowManager\WorkflowManager.log

\Program Files\LANDesk\Process Manager\Web Services\LANDesk.Workflow.ServiceHost\LANDesk.Workflow.ServiceHost.log

\Program Files\LANDesk\ManagementSuite\log\mbsdk.log

\Program Files\LANDesk\ManagementSuite\mbsdkalerthandler.exe.log

 

 

LANDesk Provisioning

\Program Files\LANDesk\ManagementSuite\log\prov_schedule.exe.log

\Program Files\LANDesk\ManagementSuite\log\provisioning\provisioning.log

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

 

 

LANDesk OS Deployment

\Program Files\LANDesk\ManagementSuite\log\custjob.exe.log

\Program Files\LANDesk\ManagementSuite\log\corewebservices.log

\Program Files\LANDesk\ManagementSuite\log\CJ-OSD-[SCRIPT NAME].log

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

\Program Files\LANDesk\Managementsuite\log\raxfer.log

 

 

LANDesk Activation

\Program Files\LANDesk\ManagementSuite\log\landesk.managementsuite.licensing.activatecore.exe.log

\Program Files\LANDesk\ManagementSuite\log\landesk.managementsuite.licensing.usageservice.exe.log

\Program Files\LANDesk\ManagementSuite\log\landesk.managementsuite.licensing.activationservice.exe.log

 

 

LANDesk Management Gateway

\Program Files\LANDesk\ManagementSuite\log\BrokerService.log

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

 

 

LANDesk 32-bit Console

\Program Files\LANDesk\ManagementSuite\log\console.exe.log

 

 

LANDesk Security and Patch Manager

\Program Files\LANDesk\ManagementSuite\log\vaminer.exe.log

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

 

 

  LANDesk Antivirus and Spyware

\Program Files\LANDesk\Managementsuite\Ldlogon\antivirus\cab\cab.log

\Program Files\LANDesk\Managementsuite\Ldlogon\antivirus\bases\cab.log

\Program Files\LANDesk\Managementsuite\Ldlogon\spyware\vulscan.log

C:\Program Files\Ivanti\Update Server\var\log\arrakis\update.log

 

 

LANDesk Agent and Advance Agent

\Program Files\LANDesk\Managementsuite\Ldlogon\AdvanceAgent\[Agent Name].exe.log

\Program Files\LANDesk\Managementsuite\log\scheduledtaskhandler_#.log (For Agent Deployment tasks)

\Program Files\LANDesk\Managementsuite\log\cab_#.log

 

 

  LANDesk Inventory Server

\Program Files\LANDesk\ManagementSuite\log\LDInv32.exe.log

\Program Files\LANDesk\ManagementSuite\log\LDInv32.log

Windows Application Event Viewer - Most LANDesk Inventory Server errors or exceptions are logged to the Application Log

\Program Files\LANDesk\ManagementSuite\log\LDInv32.exe[xxxx_xxxx].log

(Note:  This is the rolling log and must be manually enabled in Configure | Services | Inventory | Advanced Settings | Use Rolling Log = 1)

 

 

  LANDesk Rollup Core

ONLY Applicable to Rollup older than 9.6

\Program Files\LANDesk\ManagementSuite\log\Rollup_[LinkName].log

NOTE:  Create the following dword value in the registry to log rollup tasks - HKLM\Software\LANDesk\ManagementSuite\Core\rollup log
The DWORD "rollup log" must be lower case and the value must be set to 1.
The log file will be called Rollup_LinkName.log and will be located in the folder where dbrollup.exe was run from.

 

 

  LANDesk Remote Control

\Program Files\LANDesk\ManagementSuite\log\console.exe.log

\Program Files\LANDesk\ManagementSuite\log\UserValidatorErrLog.txt

\Program Files\LANDesk\ManagementSuite\log\LANDeskManagementSuite.Information.log

Connection messages.txt – This is the text in the Remote Control Viewer interface

C:\inetpub\logs\LogFiles\W3SVC1\u_exXXXXXX.log (NOTE: The location of the IIS logs can be changed in the properties of the Web Site)

C:\WINDOWS\system32\LogFiles\HTTPERR\httperr#.log

C:\WINDOWS\system32\inetsrv\w3wp.exe.log

 

 

  Executive Dashboard

\Program Files\LANDesk\Managementsuite\log\dashboardreportservice.exe.log

How to manually install and remove LANDesk services

$
0
0

Sometimes a core server or an agent may be missing a service, and it is necessary to restore that service. Restoring a service may be more desirable than re-installing. This articles describes how to install and remove various LANDesk Management Suite services on core servers as well as agents.

 

Keep in mind that installing services only works if the files necessary to start the service are already in place. Adjust the paths in these commands as necessary.

 

LANDesk Services on the core server:

 

Install or remove the LANDesk Inventory Server service

"C:\Program files\LANDesk\ManagementSuite\LDInv32.exe" /Remove

"C:\Program files\LANDesk\ManagementSuite\LDInv32.exe" /install

 

Install the LANDesk(R) Management Agent service

"C:\Program Files\LANDesk\Shared Files\residentagent.exe" /register

 

Install the Intel Alert Handler, Intel Alert Originator, and Intel PDS services

"C:\Program Files\LANDesk\ManagementSuite\LdLogon\instams.exe" /core

 

Install the LANDesk Device Monitor service

%windir%\microsoft.net\framework\v1.1.4322\installutil.exe path to managementsuite directory\devicemonitor.exe

 

Install the LANDesk Scheduler service

"c:\program files\landesk\managementsuite\schedsvc.exe" /remove

"c:\program files\landesk\managementsuite\schedsvc.exe" /install

 

Install the LANDesk Policy Server:

"c:\Program Files\LANDesk\ManagementSuite\apmservice.exe" /register

 

Install the LANDesk Management Gateway Service

"c:\Program Files\LANDesk\ManagementSuite\brokerservice.exe" /register

 

Install the LANDesk(R) Console Redirection Services

sc create "IPMI_Redirection" binpath= "c:\program files\landesk\managementsuite\lpmiredirectionservice.exe" displayname= "LANDesk(R) Console Redirection Service"

 

Install the LANDesk Usage Service

sc create "LANDesk(r) Usage Service" binpath= "c:\program files\landesk\managementsuite\LANDesk.ManagementSuite.Licensing.UsageService.exe" displayname= "LANDesk Usage Service"

 

LANDesk Services on the agents:

 

Install the LANDesk Remote Control Service

"C:\Program Files\LANDesk\LDClient\issuser.exe" /install

"C:\Program Files\LANDesk\LDClient\issuser.exe" /remove

 

Install the LANDesk(R) Management Agent service

"C:\Program Files\LANDesk\Shared Files\residentagent.exe" /register

 

Install or remove the LANDesk(R) Software Monitoring service

"C:\Program Files\LANDesk\LDClient\softmon.exe" /install

"C:\Program Files\LANDesk\LDClient\softmon.exe" /remove

 

Install or remove the LANDesk Targeted Multicast service

"C:\Program Files\LANDesk\LDClient\tmcsvc.exe" /i

"C:\Program Files\LANDesk\LDClient\tmcsvc.exe" /r

Interactive Services Detection Popups

$
0
0

Purpose

 

When running certain tasks a popup occurs indicating "A program running on this computer is trying to display a message".

 

popup.jpg

 

Example:

[Window Title]

Interactive Services Detection

 

[Main Instruction]

A program running on this computer is trying to display a message

 

[Content]

The program might need information form you or your permission to complete a task.

Why does this happen?

 

[V] Show program details  [View the message] [Ask me later]

 

[Expanded Information]

Program(s) or devices(s) requesting attention.

 

Message title:  Custom Job Processing

Program path:  C:\Program Files (x86)\LANDesk\ManagementSuite\ENUCUSJ.DLL

Received:  Today, March 17, 2015, 19 minutes ago

 

This problem occurs when a program is not fully compatible with Windows.

Please contact the program or device manufacturer(s) for more information.

Cause

 

The Interactive Services Detection service is started.

 

 

Resolution

 

Disabling the Interactive Services Detection service will prevent the popup.

Note: Because this is a Windows service, user assumes all liability when modifying the service.

 

  • Open a run box and type services.msc
  • In the Services window locate Interactive Services Detection, right click and choose Properties.
  • In the Properties window Stop the service and set it to Manual or Disabled
    • If the service starts again when it is set to Manual, try instead setting it to Disabled

3-disabled.png

Clients not reporting to the console

$
0
0

Hi,

 

we have a number of clients (200+ of 6000 total) that have the "Last reported settings" 1 month or more old despite the fact that the clients are online.

Capture.JPG

 

Vulnerability scans fails on this clients because C:\ProgramData\vulscan\AgentBehavior_XXX.xml does not exist.

 

This is an extract of PolicySync.log :

 

Wed, 29 Aug 2018 17:31:41 ValidateSignature finished

Wed, 29 Aug 2018 17:32:00 ExecuteWithElevatedRight: LocalExecute succeeded with ExitCode=-1917648429

Wed, 29 Aug 2018 22:47:52 ValidateSignature start

Wed, 29 Aug 2018 22:47:52 ValidateSignature: Removing any leftover temporary signature files...

Wed, 29 Aug 2018 22:47:52 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

Wed, 29 Aug 2018 22:47:52 ValidateSignature finished

Thu, 30 Aug 2018 11:09:00 ValidateSignature start

Thu, 30 Aug 2018 11:09:00 ValidateSignature: Removing any leftover temporary signature files...

Thu, 30 Aug 2018 11:09:00 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

Thu, 30 Aug 2018 11:09:00 ValidateSignature finished

Thu, 30 Aug 2018 11:12:10 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 12:01:53 ValidateSignature start

Thu, 30 Aug 2018 12:01:53 ValidateSignature: Removing any leftover temporary signature files...

Thu, 30 Aug 2018 12:01:53 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

Thu, 30 Aug 2018 12:01:53 ValidateSignature finished

Thu, 30 Aug 2018 13:04:48 ValidateSignature start

Thu, 30 Aug 2018 13:04:48 ValidateSignature: Removing any leftover temporary signature files...

Thu, 30 Aug 2018 13:04:48 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

Thu, 30 Aug 2018 13:04:48 ValidateSignature finished

Thu, 30 Aug 2018 13:04:48 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 13:19:11 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 14:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 15:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 16:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 17:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 18:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 18:19:12 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 19:19:13 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 20:19:13 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 21:19:13 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 22:19:14 ExecuteWithElevatedRight: LocalExecute failed

Thu, 30 Aug 2018 23:19:14 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 00:19:15 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 01:19:15 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 02:19:14 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 03:19:15 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 04:19:15 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 05:19:16 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 06:19:16 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 07:19:16 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 08:19:17 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 09:19:17 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 10:19:17 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 11:19:17 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 12:19:18 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 12:45:10 ValidateSignature start

Fri, 31 Aug 2018 12:45:10 ValidateSignature: Removing any leftover temporary signature files...

Fri, 31 Aug 2018 12:45:10 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

Fri, 31 Aug 2018 12:45:10 ValidateSignature finished

Fri, 31 Aug 2018 12:45:10 ExecuteWithElevatedRight: LocalExecute failed

Fri, 31 Aug 2018 19:19:17 ExecuteWithElevatedRight: LocalExecute failed

Sat, 01 Sep 2018 13:19:13 ExecuteWithElevatedRight: LocalExecute failed

Sat, 01 Sep 2018 13:40:15 ValidateSignature start

Sat, 01 Sep 2018 13:40:15 ValidateSignature: Removing any leftover temporary signature files...

Sat, 01 Sep 2018 13:40:15 CleanupAnyLeftoverTemporarySignatureFiles: There were no leftover temporary signature files, exiting...

 

 

Client Agent version: 11.0.0.1091

 

 

Any suggestions?

2016.3 SU5 upgrade to 2017.3 SU5

$
0
0

Actual facts:

 

Core: Windows Server 2012 R2, >36000  clients.

 

Last weekend we performed the upgrade for our productive Core. Unfortunately we got in troubles. Not because the upgrade, it went well. We find out that after upgrade, all the clients must be immediately upgraded from 2016.3 SU5 to 2017.3 SU5 because remote control is not working, having the error "the signed right document was not valid. authentication failed".

 

In the community are some workarounds but these are working for small environments not for big ones, like ours....how can someone from Ivanti can assume that we can upgrade more than 36000 clients at once and in the very next day we will have all clients upgraded? This is a long medium/long term project(1-2 months).

All previous upgrades allow us some time to upgrade our clients. We are at the 4rd major upgrade but we never had this problems until now.

 

Regarding Ivanti communication with their clients, very disappointed. Where is written a disclaimer for upgrade to 2017 from a lower version where is sentenced that remote control will not work if do not upgrade also the clients ? Or will not work if we do not do tricks with issuer.exe or with security settings from Remote  Agent Settings?

 

Even if we miss the disclaimer, such a major change in the security side, must assure your clients that they can still have working clients into the console. Ivanti never did such major change, all the upgrades giving the possibility to the costumers to have enough time to upgrade, considering their own specific environment and rules.

Can't deploy Office 13 Msp installation on Landesk 2016...

$
0
0

Hello,

 

I am trying to deploy a batch file that has 3 parts:

First is to remove Office 2010 cleanly

Second is to install office 2013 with an MSP file

Finally,the installation of Picture manager portable version.

 

I am getting every time FAILED status, with 16386 code and a log with no real info..

https://drive.google.com/open?id=1Go3YhtJ7nJuBLeT6PWCIE9lsJ23ivejPXOWEz_YBMBA

 

I used all kinds of accounts: Active directory accounts, local accounts and chose the Download and install option in the package.

For info, i am trying to do it from a NAS and such installs always worked before as per the system administrator.

 

The script is as follows:

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

 

ECHO OFF

IF EXIST "%CommonProgramFiles(x86)%\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe" (

  "%CommonProgramFiles(x86)%\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe"/uninstall PROPLUS /dll OSETUP.DLL /config %~dp0uninstall.xml

) ELSE (

  echo "Office 2010 Not Found"

)

 

%~dp0FR\setup.exe /adminfile %~dp0Office.Upgrade\UpgradeOffice10to13.MSP

 

msiexec -i "%~dp0Office.Upgrade\FRA\Microsoft Office Professional Edition 2003.msi" /qn /norestart

 

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

 

 

Thank you in advance for your help!

CSA and core server certificate issue

$
0
0

Hello,

 

the core server can not post a certificate to the csa.
Everything works before, but suddenly it stopped after our core could not communicate with the Ivanti license server for quite some time.

 

I already tried the following steps.

 

Error: "Failed to post the certificate to the CSA"

CSA - Failed to post the certificate to the CSA

 

I deleted the csa from database.

I checked the firewall that everything on port 443 goes through.

 

Any suggestions what i can do?

 

Info from console.exe.log:

10/04/2018 14:35:07 INFO  2716:Main Thread RollingLog : CSA certificate has subject names CN=landesk.url.com

10/04/2018 14:35:07 INFO  2716:Main Thread RollingLog : Request to gateway got error trust failure with gateway hostname = landesk.url.com while CSA cert CN = landesk.url.com error Die zugrunde liegende Verbindung wurde geschlossen: Für den geschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden..

10/04/2018 14:35:07 INFO  2716:Main Thread RollingLog : CSA certificate has subject names CN=landesk.url.com

 

Thanks for incoming hints.


Core Activated But get Invalid licence when i try to log in

$
0
0

I was working along today patching some computers and i had to log out of the remote console. When i tried to log back in it gives me the error below. I have tried copying the ldpgp.exe and ldpgp.sig from the core to my client computer. That did not work. I get the same message when i try to log onto the console on the core as well. Ran the Activation Utility and it activates just fine. Thank you for any help on this issue.

 

Password

$
0
0

Where to update the ivanti administrator account password ?

Does anyone have a library of "manual download patches"??

$
0
0

All,

 

I've parsed thorugh my log of downloaded vulnerabilities and I have 5 pages (single space) of patches that I need to find and "manually download".

 

Does anyone out there have all or most of these "manual downloads" available on their website or mirror?   Seems silly that ALL of us have to find each of these patches and download them one by one.

 

I know there are licensing issues so LANDesk doesn't do it for us... but maybe we can work together and get them all in one place?

 

??

 

TIA! 

 

-B

All Clients are report Failed: Unable to interpret data (LDSS 9.0)

$
0
0

Hi Guys

 

I have a case open to try and resolve this issue but I want to see if anyone can assist me on the community website.

 

I have a new install of LDMS and LDSS 9.0 on Windows 2008 64-bit. I can download patch definitions to the core with no problem. The issue that I am having is that none of the workstations can complete a security scan. They reach the stage where they download the patch definition data but then they report "Failed: Unable to intrepret data"

 

I have noticed that there isn't a VulnerabilityData folder under the ldlogon folder.

 

Here is an excerpt from a client vulscan .log file (I have replaced the core server's name with <coreserver> and removed ip addresses)

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

Getting Started with the MBSDK (Example Scripts Included)

$
0
0

 

I - Introduction & Prerequisites

This article looks in more detail & with practical examples

 

Note a very basic introduction on talking to the MBSDK via Powershell can be found in this article - How to invoke a LANDesk MBSDK method using Powershell .

 

The examples in this article will be purely based on PowerShell as well - but you can use any scripting / programming language you prefer which is capable of communicating with and authenticating to WWW-services.

 

So a .BAT file will not be possible - but VB, Python, Powershell and anything remotely sophisticated should be fine. This also means that ideally YOU should be able to script (awesome reason to get skilled up in this area) ideally. Yes, if you have access to scripters, you can lean on them - but since you (should be /) are the LANDesk specialist, it usually requires less explaining if you know what the tool is capable of & what you want to get done (and how).

 

In addition, having a foundation in SQL can be helpful - the WWW-method calls tend to refer to certain database-side identifiers (unique ID's for computers, tasks, etc.) and some familiarity with the database and SQL language can help make sense / give context with this.

 

In summary - having a foundation in SQL language (enough to be able to query the database, so you can resolve various attributes and IDN's that the MBSDK may use) if of strong benefit here. Beyond SQL, the other set of expertise you need to have access to (either yourself or via colleagues) is a scripting language that's capable of communicating via HTTP / www-calls.

 

 

II - Considerations / Gotchas around invoking the MBSDK

This section covers common gotchas that catch people out / things that script authors need to be consciously aware of..

 

II.A - Authentication

In order to use the MBSDK / WWW-calls, you need to be authenticated (no anonymous access methods are permitted). There are no special creation rules here - the MBSDK ties in automatically / makes use of existing LANDesk Users.

 

All authentication is NT-based authentication (and requires a valid LANDesk user). This can be used to great effect by simply launching your respective script in a user-context ("run as") of a user you desire - often a service or processing account.

 

II.B - What can I *DO* / what can I do it *TO*?

Most (if not all) of your day-to-day operations should already have methods in the MBSDK. Any device that's in the database can be targeted / queried - essentially "if you can do it / access it in the console" you can do the relevant action through the MBSDK.

 

As mentioned above, you need to authenticate with a valid user to make use of the MBSDK - this is where the rest of the "what can I do / what can I do stuff TO" falls in to place as well. The LANDesk User you authenticate with has one or more Scopes and one or more Roles. THESE are automatically applied as permissions & limitations. So - "whatever you have access to in the console, is what you have access to in the MBSDK".

 

This makes user configuration fairly easy, as it differs in no way to regular user creation/configuration.

 

A complete listing of all methods in the MBSDK can be had by accessing the MBSDK "site" via a browser here -- http://YOUR-CORE-NAME/MBSDKService/MsgSDK.asmx -- and as a (very basic) list, you can do the following sorts of things:

  • Add / Remove devices from tasks\
  • Create / delete tasks
  • Start tasks
  • Get the status of a task / of a machine in a task
  • Delete devices from inventory
  • Query device data / essentially run query.
  • Check a user / the current user for a right (i.e. "do I have rights for software distribution")

 

The beautiful thing around having a (hopefully somewhat) intelligent script language to talk to the MBSDK is that you can use this to automate a lot of things.

 

What does this look like? Here's a (somewhat complex) possible example that works across multiple systems, showing what you can do through sophisticated use of www-service integration:

  1. Users connect to a www-form and request a new Windows 10 machine
  2. A script talks to the www-calls of VMWare (separate subject alltogether) and creates a basic VM placeholder. This may or may not include details like desired Name of the device, etc.
  3. The script talks to VMWare and pulls back the MAC-address of the newly created device.
  4. A script talks to the MBSDK and creates a new (basic) device entry, based on the MAC-address we've received back from step 3.
  5. The script calls the MBSDK and creates a new provisioning task to deploy a Windows 10 image on to the device.
  6. The script starts the Provisioning task (even though the VM is powered off) - so that the task is active & the Provisioning task is now effectively pre-targeting the device upon boot.
  7. The script sleeps for a bit (say - 30 seconds) to let the task do its thing and initialise properly.
  8. The script calls back to VMWare and starts the VM up.
  9. The VM (being configured to boot over network first) will PXE-boot and (due to PXE pre-targeting mentioned above) automatically be booted into Provisioning & have the WIndows 10 image put down on it.
  10. Depending on what data was collected - we could be naming the device based on what was requested in the www-form - and/or install software applications that have been requested.

 

 

II.C - Regarding credentials...

For those who haven't done scripting - please be aware that it's a *HUGE* "No! No!" to hard-code either usernames and/or (especially) passwords into a script.

 

Certainly while one is technically capable of this - doing so breaks a lot of very basic security rules. If you include a plain text username / password in a stored file (i.e. - a script) you've just made any malicious actors' life a lot easier should they ever come across / get access to said script.

 

ALWAYS have security as a #1 focus - and don't give a processing user "admin rights" just because it would be potentially convenient to do so. Always treat them like a "proper" user, and only give them only the permissions that they need to do their job. Consider having several processing users for instance with different levels of privileges. Think CAREFULLY about what you actually need.

 

Automation can be very powerful -- which is precisely why you should treat it with a healthy dose of respect and be ever so mindful of security fundamentals.

 

Safer methods to deal with credentials include:

  • Query the user running the script for a set of credentials interactively.
  • Pass-through the credentials of the user-context running the script automatically
  • Use an external method to control user context (Windows Scheduled Task / LANDesk software distribution) and then use a "pass-through" authentication, assuming the scripting language supports such (PowerShell does).

 

II.D - Regarding Scopes & the need to refresh

This is primarily a "gotcha" around newly added devices.

 

By default, LANDesk only re-resolves users' scopes & rights about 1x / hour. If a user has a limited scope, and a device is added to them, this may not show up for some time.

 

There is a method - "ResolveScopeRights" which will resolve that on an on-demand basis where needed. Alternatively, if you give a user the "All Devices" scope then they will have immediate access to any newly added devices.

 

This is primarily only an issue that is encountered when dealing with the initial provisioning of devices, and there are multiple ways of handling this. Some examples include:

  • As mentioned above - run the "ResolveScopeRights"
  • As mentioned above, give the processing user the "All Devices" scope.
  • If you absolutely don't want any "cross pollination" but want the "All Devices" scope for something else, you can always set up a (separate) LANDesk Core whose sole purpose it is to provision devices up to the point at which they're ready, and then install the "live" Core server's LANDesk agent on them. This logical segregation will guarantee that you've got a highly contained build environment that doesn't risk affecting your live environment for instance.

 

II.E - Practice Safe Development

Just as a general precaution against any "whooops"-type accidents, I'd strongly advise that you develop in / author your scripts against a test environment.

 

That way if you end up breaking something horribly (not something that is particularly LIKELY, but anything's potentially possible, especially if shortcuts such as "full admin accounts" are used) -- no live systems will be affected.

 

II.F - Public versus private queries / objects

Certain methods may require access to either LANDesk queries, column sets and similar things - where it becomes very significant whether these are specific objects are publicly owned or (alternatively) personally owned by the process user. Just because you (as an admin) have potential access to all objects doesn't mean that the process user does.

 

To make your life easier, especially across multiple process users, you may want to make use of public queries / publicly owned items for use with process users as this will prevent you from running into surprises about "user X does not have access to object Y you tried to access".

 

 

III - The Basics Of Access

From a browser, you can access the MBSDK calls/methods by simply entering -- http://YOUR-CORE-NAME/MBSDKService/MsgSDK.asmx -- and be greeted with a short description of each method / call that's available to you.

 

However, in order to access these through a script, you need to follow the WSDL rules (which essentially means adding a "?WSDL" to the path). Just trying to browse to the above path via a script will not work. For scripts, you need to use -- http://YOUR-CORE-NAME/mbSDKService/MsgSDK.asmx?WSDL -- for things to work.

 

 

 

IV - A Few Example WWW-methods (manual method)

The manual / browser method is usually quite useful when getting to grips with a particular www-service call and provides quick, visual feedback of either success or failure.

 

IV.A - Getting to the root of the www-service

So - let's get a going - connect up to your Core Server, and launch your preferred www-browser - then go to -- http://YOUR-CORE-NAME/mbSDKService/MsgSDK.asmx? -- and authenticate if needed (in case your browser doesn't automatically attempt to pass through your credentials). You would be greeted with a screen like the below.

 

MBSDK-root.jpg

 

In order to explore / try these, all you need to do is just click on the relevant call you want to check out. Which brings us to our first test.

 

IV.B - Getting the LANDesk Version

As a starting point, let's begin with a really basic / simple www-service call -- The "GetVersion" method-- a request to return the running version for instance. No input required for our first call.

 

So - from the listing of the www-service calls, scroll to the bottom and click on the "GetVersion" link

 

Not much to see here (which is the point) beyond the "INVOKE"-button. So let's go ahead and click it - see what happens!

 

GetVersion-Basic.jpg

After pressing INVOKE, a new browser tab will open up, and you'll see something along the following:

GetVersion-Results.jpg

 

In this case, the Core is a LANDesk Management Suite 2016 Core server (hence version 10). Older version of LANDesk would have strings such as "9.60.x.x" or "9.50.x.x" for instance.

 

Great - you've just completed your first (albeit interactive) call of a www-method.

 

IV.B - A Basic input example

On to a slightly more advanced example - a single data input method, for which we're going to use the "GetTaskStatus" method to report back on the status of an existing task.

 

For this example, we're going to report back on a task based on the Task ID - the Task ID is a unique identifier which every task ever created / deleted has assigned to it, I've re-arranged the data columns in "Scheduled Tasks" to pull the Task ID field forward for the screenshot below:

3 - Task ID Console.jpg

 

Now that we have a few legitimate Task ID's - let's open up the www-method in our browser:

3 - Task ID MBSDK Entry.jpg

 

So after adding a valid Task ID & pressing INVOKE, we get back something along the following back:

3 - Task ID MBSDK Results.jpg

 

From this we can very easily see various potentially interesting fields:

  • Task Name (in the Console) & current status of the task
  • Start time of the Task
  • Total (2) / Completed (0) / Failed (0) device counts

 

Whilst in the browser view (/the "manual" method) the XML text can become somewhat rich, different script tools may handle the response XML differently - so some gentle testing with your particular scripting / programming language is advised.

 

IV.C - A Multi-data Method (GetMachineData)

This is a www-method which brings back a data set as defined by the column set used for a device.

 

NOTE:

This particular example intentionally includes a "bad form" step which results in a vast amount of data being returned.

 

This is intentionally included to highlight simple things that can have unexpected consequences if not carefully considered.

        

 

I've configured a public Data Column Set that is public which has the following items (the first three are the default items, I've just added a list of the Software Package Names):

  • "Computer"."Display Name"
  • "Computer"."Type"
  • "Computer"."OS"."Name"
  • "Computer"."Software"."Package"."Name"

 

For this method, we need a device ID (the unique ID that each device has) as well as the name for a column set ("Test Column Set") for this example.

 

You can find the device ID of a device in the root of its' inventory tree:

4.1 - GetMachineData Inv.jpg

 

So - with a device ID string & a Column set string, we are now ready to use this specific method:

4.2 - GetMachineData Begin.jpg

Once we press the INVOKE button, THIS result will likely take somewhat longer to return, and once it's fully loaded it'll be quite long.

4.3 - GetMachineData Results.jpg

 

KEY LEARNING & EXPLANATION

... the reason for this is that (having defined the Software - Package column, we'll be getting a list of ALL of the packages on a device. Due to the way in which XML formats a list, you end up with a massive vertical list, while in the console you'd have a more sensible X by Y axis. This should serve as encouragement to define your desired data set as precisely as you can - or you'll have to filter through quite a bit of chaff to get your actually desirable nuggets.

 

The above is just a single line of data - and every line will have to have a repetition of the display name, the type and the OS name - so quite a bit of wasted data for each individual / separate software package.

 

IV.D - BNF syntax example & gotchas

Certain MBSDK methods (such "ListMachines" for example) can make use of BNF (Backus Naur Form). You've probably already used it without knowing it. To help clarify what it is & how to use it - you're usually best off building the query you want in the LANDesk Console.

 

Now - you can also use existing LANDesk queries - which is good if you HAVE those queries at the time. The use of BNF allows you to query dynamically (without having stored this as a LANDesk query first. Let's look at a simple LANDesk Query that looks for the presence of 7-zip on a device for instance:

5 - BNF in Console.jpg

 

This is 98% of the BNF you need. The *ACTUAL* string you need to add as a BNF (for a LIKE operator) looks as follows:

5.1 - BNF in MBSDK.jpg

 

KEY DIFFERENCES:

The two strings are nearly identical - there is ONE difference though. That is the presence of the %.

 

This is actually a SQL thing (see above, where I suggested you pick up on SQL). The % character is used in LIKE statements to clarify on which side (i.e. - to the right, left or both) of a given string you want the LIKE to actually match wildcards.

 

The Windows Console takes care of this for you (without telling you) and simply encapsulates any LIKE-d strings automatically in %-ages on both sides. If you want to use the BNF in the MBSDK you need to do so yourself (as a simple -- (...) LIKE "7-Zip" -- will fail, as it would attempt an exact string match - as no wildcard starting points have been given).

 

A few additional BNF example strings to help you along:

"Computer"."Device Name" LIKE "%MyCoreServer%"
"Computer"."OS"."Name" EXISTS
"Computer"."OS"."Name" LIKE "%2012%"
"Computer"."Software"."Package"."Name" LIKE "7-Zip%"         

 

Notice the last (7-zip) based query, which only has a single % -- you don't HAVE to have a % on both sides of your string. This follows the regular SQL rules for this operator.

 

V - First Steps - Basic Examples of using the MBSDK in a script

Now that we've covered the basics of dealing with the MBSDK on a manual basis - the next step is to actually start calling the MBSDK through scripts.

 

While all example scripts used here will be based on PowerShell, you can use the scripting language of your preference. Certain things may be handled differently in different languages -

 

V.A - My very first WWW-call / script (GetVersion)

This PowerShell based script is meant to be run locally on the Core Server (due to the use of 'localhost') with a valid LANDesk user. The handling of credentials is dealt with in a "pass through" context here (i.e. - which ever user context is running this script - that's the set of credentials that will get used).

# Point to the MBSDK www-service methods 
[string]$where = 'http://localhost/mbSDKService/MsgSDK.asmx?WSDL' 

Try {
    # Pass the current users' NT-credentials for authentication    $WebService = New-WebServiceProxy -uri $where -UseDefaultCredential
}
Catch {
# Error handling goes in here
}

# Call the "GETVERSION" method & show me the result:
$WebService.GetVersion()<#
The result / return will look something like this:
PS C:\Xx> C:\Xx\ZZ_WWW-Service-test.ps1

VersionString
-------------
9.60.0.244
#>            

 

The script is provided in a simple "copy & paste" format, so that you don't have to be concerned about downloading an external powershell script.

 

V.B - Adding a device to a task.

The next example will involve passing an actual parameter through to a MBSDK method. Here we're going to do a couple of things:

  • We're going to prompt for credentials (even though we've hard-coded the username)
  • We're going to add a device to the Task with Task ID "10".
  • We're going to automatically resolve the device-name of the computer that runs the script (this is what the "$env:COMPUTERNAME" PowerShell bit does at the bottom) as an example of dynamically using a device name. We could just as easily use an actual string.

 

IMPORTANT NOTES:

There's an intentional use of "bad manners" here - a hardcoded string (for the username)!

 

Also - the actual script itself is only about 5-6 lines overall - the vast majority of text here is comment & explanation. No need to be afraid

        

 

# Point to the MBSDK www-service methods
$where = 'http://localhost/mbSDKService/MsgSDK.asmx?WSDL' 

# You can choose to either provide a username or just leave the "Get-Credential" command on its own.
# Please note that in the following line is an (INTENTIONAL) example of a *BAD* scripting/programming practice. It should NOT be encouraged/followed.
# In the current example, I've (intentionally) 'hard' coded the user-name to one I log in as -- though this can be changed in the GUI-window that'll be prompted easily.
$Creds = Get-Credential -Credential HELLESPOINT\BOB

# If you REALLY want (and it's a BAD idea), you can hard-code the password to be a secure string. Use the "ConvertTo-SecureString" to get those.
# $Creds.Password = "{A_SECURE_STRING}"
# If you just want to be "lazy", simply use Powershell's own option to use passthrough authentication for NT-credentials as the user-context running the script.


Try {
    $WebService = New-WebServiceProxy -uri $where -Credential $Creds
}
Catch {    # Error handling goes in here
}

# Call the "AddDeviceToScheduledTask" method to add a device (based on device-name) to a task (based on task ID #).
# For instance, in the example below, we use "10" ==> is the LD_TASK_IDN - a PUBLIC task!
# Currently - with ($env:COMPUTERNAME) - I'm reading out the name of the computer running the PS-script, and using that as the computer name parameter
# Alternatively, you can hard-code names. For instance "CARTHAGE" as the DEVICENAME.
$WebService.AddDeviceToScheduledTask("10", ($env:COMPUTERNAME))

# IMPORTANT NOTE -- in order to prevent problems, make sure the task is *PUBLIC* !!
         

 

 

VI - More advanced example(s) of using the MBSDK in a script

The following script is one that allows for the deletion of devices using a script & GUI and making use of the MBSDK method.

 

VI.A - The All Important Disclaimer / "Be careful what you wIsh for"

 

IMPORTANT REMINDER - use DELETE-s with great *CARE* :

Using automated steps to delete anything - especially devices or tasks - is something that needs to be done with great care & accuracy. There is no "undo" button for any kind of mistake. Treat any such operation as a potential "high risk" and make double/triple check to ensure you're only going to target what you actually intend to.

 

So make sure that you've got logging (to keep track of what has been deleted - when - by whom - and why / upon whose request) as well as fact checking (as "close enough" tends to be a rather risky approach to permanently deleting anything). Also thoroughly test your own scripting / programming logic - The MBSDK will behave "as told to", which can be quite different to the "as intended to" line of though. Make sure your logic is accurate.

 

Also - be aware of consequences. If you delete software distribution tasks for packages - and those packages have uninstall associations ... that will proc the relevant uninstall(s) to run on the devices that previously had the task targeted. The MBSDK methods give you a lot of power that can be automated.

 

Please, be careful & respectful with it. Bad scripting logic / practices WILL get you into trouble.

 

VI.B - A script with GUI to delete devices from multiple Core Server

This script was written by a LANDesk TAM (who prefers to be anonymous but has an awesome beard).

 

Instructions for use:

  • Copy the script to C:\ on the core server.
  • Create a “del.txt” file on the root of C:\ that lists all devices you want to remove from the database i.e.:
    • DeviceName-1
    • DeviceName-2
    • DeviceName-3
  • Make sure the ExecutionPolicy for PowerShell is set correctly.
  • Run the script and provide your domain credentials:

6 - MBSDK DeleteDevice - LogonExample.jpg

  • Select the appropriate coreserver name from the list and click on OK:

6.1 - MBSDK DeleteDevice - Device Deleter Example.jpg

 

Note: If desired you can remove the list of Cores in the script and only include the one you are targeting.

 

The process will echo the results to the PS screen and It will create a log file C:\ldms_del_comp.log with the results.

 

Note: Please make sure the account you authenticate with has the appropriate LDMS rights.

 

Last thing - *** USE AT YOUR OWN DISCRETION ***  and (as always when operating with deletes), make sure you have the appropriate backups in-place!

 

$mycreds = Get-Credential #Read credentials
$username = $mycreds.username
$password = $mycreds.GetNetworkCredential().password

# Get current domain using logged-on user's credentials
$CurrentDomain = "LDAP://" + ([ADSI]"").distinguishedName
$domain = New-Object System.DirectoryServices.DirectoryEntry($CurrentDomain,$UserName,$Password)

if ($domain.name -eq $null)
{
write-host "Authentication failed - please verify your username and password."
exit #terminate the script.
}
else
{
write-host "Successfully authenticated with domain $domain.name"
}


$CoreServer ='LD2016-1','LD2016-2','LD2016-3' | Out-GridView -OutputMode Single -Title "Select LANDESK Core Server"
$inputfile = "C:\del.txt"
write-host $inputfile
$LogTime = Get-Date -Format "MM-dd-yyyy hh:mm:ss"
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()

Function LogWrite
{
   Param ([string]$logstring)   $logstring = $logtime + " " + $logstring   Add-content $Logfile -value $logstring
}

$Logfile = "C:\ldms_del_comp.log"
Write-Host $Logfile
$log = "++++++++++ Delete Devices"
LogWrite $log

$Landesk = New-WebServiceProxy -uri http://$CoreServer/MBSDKService/MsgSDK.asmx?wsdl -Credential $mycreds

foreach ($computer in Get-Content $inputfile)
{
    $Device=$computer.Trim()    $Machine = $Landesk.ListMachines('Computer."Device Name" = '+ $Device)    Write-Host ($Device + " - Trying")    If ($Machine.Count -eq 1)        {            $log = ($Device + " " + "Found")              $MachineGuid = $Machine.Devices.Guid              $Landesk.DeleteComputerByGUID($MachineGuid) | Out-Null              $Machine = $Landesk.ListMachines('Computer."Device Name" = '+$Device)            If ($Machine.Count -eq 0)                   {                    Write-Host ($Device + " - Deleting")                    $log = ($Device + " " + "Removed" )                    LogWrite $log                   }              Else                   {                    Write-Host ($Device + " - Could Not Delete")                    $log = ($Device + " " + "NOT Removed")                    LogWrite $log                   }        }        Else        {        Write-Host ($Device + " - Not Found")        $log = ($Device + " " + "NOT FOUND")        }
}
$RowCount = $inputfile.Count.ToString()
$log =  $RowCount + " - Total Devices Completed"
LogWrite $log
$log = "++++++++++ Finished Tasks in Total Elapsed Time: $($elapsed.Elapsed.ToString())"
LogWrite $log      

 

 

VII -Important information on Column sets (and how to specify them)

There are two basic ways of defining what data columns you want to have displayed for the devices you're querying.

 

This is principally relevant for the "GetMachineData"-function but may apply elsewhere too, if the option for a column definition is provided.

 

VII.A - Basic rules with column sets

Here are a few general points to bear in mind when handling column sets:

  • This part is *case sensitive* usually in the MBSDK. So make sure you respect case!
  • Your users needs to be able to have access to the relevant column set. So make sure your users owns it, or that it's a public column set!

 

 

VII.B - Option 1 - using an existing column set from the LANDesk Console

The easiest way to define data columns (both - WHAT you want to see, and the order which you want to see it) is to just refer to an existing Column set.

 

Here, I have 2 Column sets in the console (one "Basic" and one "complicated":

CONSOLE - Basic Column Set.jpg

and

CONSOLE - Complex Column Set.jpg

 

And here's how I make use of them in the "GetMachineData" function.

 

First, the basic column set example & data return (I am calling a DeviceID / GUID that's relevant to my database):

MBSDK - Basic Column Set Config.jpg

which returns the following:

MBSDK - Basic Column Set Output.jpg

 

... whereas, the Complex column set would be called like so ...

MBSDK - Complex Column Set Config.jpg

... and would bring me back the following (partial) result (I had to cut it off as it ran off the screen):

MBSDK - Complex Column Set Output_Partial.jpg

 

... so - quite simple to use. Especially if you have complicated data sets to return, making use of an existing column set is VERY convenient.

 

 

 

VII.C - Option 2 - Creating a column set on the fly - The basic premise

But what if you need a "on the fly" column set. What if you have data where you need different data columns all the time & can't pre-plan or don't want to create 100-s of column sets?

 

Well - that is possible and catered for as well!

 

This section will go over the "basic layout" of what the "dynamic" column definition XML looks like - it's not going to work (due to changes in IIS validation) in its current state, but it is MUCH easier to read for humans. So - let's explain the basic format. Let's specify a column set which displays the following two attributes:

  • ID (record # in the database)
  • Device Name

 

The basic column definition would look like so (formatted for "nice" human readability).

 

<Columns>    <Column>        Computer.ID    </Column>    <Column>        Computer."Device Name"    </Column></Columns>

 

KEY LEARNINGS & EXPLANATION:

  • The columns respect the BNF notation for the inventory attributes
  • If you have attributes / objects that have a space in them (such as - "Device Name) be sure to surround them in quotes
  • ... by and large, that's all there is to it

 

Now, all you'd need to do is just copy / paste the above text into a single line, and you're good to go. NEARLY... beware the next point!

 

IMPORTANT NOTE:

The example shown above is a "style guide" in essence and WILL NOT WORK with current

 

VII.D - Specifying your desired columns via XML - The ACTUAL truth and format

While the above is very human-readable, it will not work, if you put the XML column definition into the MBSDK!

 

IIS will error out with an error message like this one:

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ColumnDefXML=&quot;&lt;Columns&gt;&lt;Column&gt;Com...&quot;).

   at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)

   at System.Web.HttpRequest.ValidateHttpValueCollection(HttpValueCollection collection, RequestValidationSource requestCollection)

   at System.Web.HttpRequest.get_Form()

   at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)

   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()

   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

 

Why? What's going on?

 

What's happened is that IIS has (over the years) become a lot more security focussed as well, and as part of that, it validates input strings much more carefully.

 

The basic *SYNTAX* described in the previous sub-chapter is 100% correct. We just need to substitute 2 items. We need to replace the <-s and the >-s.

 

We need to go from the following:

<Columns>    <Column>        Computer.ID    </Column>    <Column>        Computer."Device Name"    </Column></Columns>

 

and perform the following changes:

 

"Old" Character
"New Syntax" - becomes
<&lt;
>&gt;

 

Pay particular note to the semi-colons at the end!

 

... so we end up with :

&lt;Columns&gt;    &lt;Column&gt;        Computer.ID    &lt;/Column&gt;    &lt;Column&gt;        Computer."Device Name"    &lt;/Column&gt;&lt;/Columns&gt;

 

And - as a single line this would appear as follows:

&lt;Columns&gt;&lt;Column&gt;Computer.ID&lt;/Column&gt;&lt;Column&gt;Computer."Device Name"&lt;/Column&gt;&lt;/Columns&gt;

 

... which is quite a bit more painful to look at. But - it works. Let's give it a try.

 

First - our MBSDK input for the "GetMachineData"-call (note that our Column definition XML is a lot longer than what the box displays):

MBSDK - Custom Column Config.jpg

... and our output...

MBSDK - Custom Column Results.jpg

Beautiful.

 

That would cover everything around Custom Column Sets - and cover both pre-configured use as well as dynamic / on the fly configuration.

 

VIII - Other useful snippets

This is a collection of various - hopefully useful - items that can make life easier / come in useful during various points of interacting with various systems. This section will likely grow as time develops.

 

VIII.A - Basic example of grabbing HTTP status codes

This one is from -- http://stackoverflow.com/questions/1473358/how-to-obtain-numeric-http-status-codes-in-powershell#1479204 -- and is a basic example of how to capture HTTP status codes. While this isn't going to be often useful specifically around the MBSDK (as we already return some form of "success / fail" result), it may be useful when integrating with other systems. So this is included for convenience & completeness here.

 

Here's the relevant code snippet:

# From -- http://stackoverflow.com/questions/1473358/how-to-obtain-numeric-http-status-codes-in-powershell#1479204
$url = 'http://google.com'
$req = [system.Net.WebRequest]::Create($url)
try {    $res = $req.GetResponse()
} catch [System.Net.WebException] {    $res = $_.Exception.Response
}

# The below will return "OK"
$res.StatusCode

# The below returns 200 in this particular example
[int]$res.StatusCode
           

 

VIII.B - A Quick & Dirty logger function

The following is a Logging function that I've developed for some of my longer / more complicated scripts for several reasons. Logging helps you keep track of where you actually are, as well as keeping an eye on performance figures ("how long does it take for me to process a data set").

 

This is far from ideal, "but it works", and is a nice, lazy copy & paste job that you can then call from within your script. conveniently.

# Initial global variable declaration
[string]$WorkingPath = (Get-Location).ToString() + "\" # "Hard"-linking the log-file location to the directory from which the script is executed.
[string]$LogFilePath = $WorkingPath + "MyLogFile.txt" # Name / Link to our log-file

### LOGGER FUNCTION ###
# Simple logger function to keep track of things & write desired strings into out log.
# Will create an empty line (for white space) if the string handed to it is empty.
function Logger ([string]$LogString) {    if ($LogString -eq "") {    Out-File -FilePath $LogFilePath -inputobject "" -Append    Write-Host ("")    }    else {    [string]$FullLineString = (Get-Date -Format r).ToString() + " :: " + $LogString    Out-File -FilePath $LogFilePath -inputobject $FullLineString -Append    Write-Host $FullLineString    }
}


# Examples of use:
# Add an empty line into my log-file:
Logger("")

# Add actual text into my log file:
Logger("*** SQL FAILED ***")

<#
The resulting log-entry from the above will look like so:
""

Mon, 30 May 2016 14:31:36 GMT :: *** SQL FAILED ***
""
#>        

 

 

IX- Additional resources

General catch-all for various hopefully useful / helpful related links. These links may take you outside of the LANDesk community.

 

  • For PowerShell related resources, you can pretty much google up anything you are likely to need.

 

  • SQL resources:

 

 

 

X- FAQ

This section covers various Q&A related items. If there

 

Q - Does LANDesk patch problems / vulnerabilities / etc. in the MBSDK?

Yes - absolutely.

 

It's a component and supported like any other. You just log a case with support, reporting the relevant issue & as appropriate, the normal process for defects will be followed from there on out.

 

Prior to LANDesk Management Suite 2016, MBSDK updates are part of the "BASE" parts of component patches.

 

Q - The MBSDK doesn't do something I want it to - what do I do?

Enhancement Requests (which is what new feature requests are) can be filed here -- Enhancement Requests  -- and follow the normal process around product improvements.

 

 

XI- In Conclusion

This article should provide a comprehensive introduction & guide to using the MBSDK along with practical examples & usable scripts to help you get started on writing automation scripts.

Viewing all 415 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>