You can create .NET applications to perform searches using GPA. If you are running GPA on a 64‑bit platform, run these applications using a 32‑bit command prompt window. On a 64‑bit computer, you can access the 32‑bit command prompt window from the %WINDIR%\SysWOW64 folder.
To create a .NET application:
Create a console application in Microsoft Visual Studio.
NOTE:Ensure the logged on user account has Write permission on the GPA install location/Bin folder.
In Solution Explorer, right-click on your project name and select Properties.
Select the Build tab and change the output path to GPA install location/Bin.
In Solution Explorer select References, then right-click on Reference and select Add Reference.
Select the Browse tab, navigate to your GPA install location, and add the following assemblies:
Add the following libraries at the beginning of each application:
If you are using multiple search criteria, include the following library at the beginning of the application:
The following sections contain samples of searching using a single criterion and searching using multiple criteria.
NOTE:GPA returns these search results in XML format.
The following sample allows you to search for GPOs by name using the contains/does not contain/is exactly condition.
public void SearchForGPONAME() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like GPO Name. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoDisplayName; //Search Conditions like contains, Does not contains, Is exactly. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opContains; //Create Search query for example (GPO Name Contains 'gpo') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "gpo"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid AD domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Create scope for repository domain search . GPASearchScope.AddRepositoryDomain(); //Search for AD GPOs, REP GPOs or both. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by links using the Exist in/Does not exist in condition
public void SearchForGPOLinks() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like GPO Links. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gposomLinks; //Search Conditions like Exist in, Does not exist in. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opExistIn; //Create Search query for example (GPO Links Exist in '[All Sites]') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "[All Sites]"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid AD domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Create scope for repository domain search . GPASearchScope.AddRepositoryDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs, REP GPOs or both. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by security group using the Has this explicit permission/Does not have this explicit permission/Has this effective permission/Does not have this effective permission condition.
public void SearchForSecurityGroup() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like Security Group. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoSecurityGroup; //Search Conditions like Has this explicit permission, Does not have this explicit permission, //Has this effective permission, Does not have this effective permission. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opHasExplicitPermission; //Create Search query for example (NetIQLabs.com\JSmith Has this explicit permission 'Apply settings') //'Apply settings' = 1 //'Edit settings' = 2 //'Edit settings, delete, modify security' = 3 //'Read settings' = 4 IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "1","MYDOMAIN.LAB/user|group"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by linked WMI filter using the Is/Is not condition.
public void SearchForWMIFilter() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like WMI Filter. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoWMIFilter; //Search Conditions like Is, Is Not. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opEquals; //Create Search query for example (WMI Filter is 'operating system') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "operating system"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid AD domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Create scope for repository domain search . GPASearchScope.AddRepositoryDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs and REP GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInADAndREP); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by user configuration using the contains/does not contain condition.
public void SearchUserConfigurationSetting() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //For User Configuration. //Search query : (User Configuration Contains 'Deployed Printer Connections') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(GPASearchCriterionTypes.gpoUserExtensions, GPASearchOperatorTypes.opContains, "Deployed Printer Connections"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain, where intended to do search. GPASearchScope.AddRepositoryDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInREP); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); if (null == oGPASearchAPI) { Console.WriteLine("Failed to instance of GpaSearchAPI"); return; } //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by computer configuration using the contains/does not contain condition.
public void SearchComputerConfigurationSetting() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Computer Configuration //Sample Search query : (User Configuration Contains '802.3 Group Policy') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(GPASearchCriterionTypes.gpoComputerExtensions, GPASearchOperatorTypes.opContains, "802.3 Group Policy"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain, where intended to do search. GPASearchScope.AddRepositoryDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInREP); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); if (null == oGPASearchAPI) { Console.WriteLine("Failed to instance of GpaSearchAPI"); return; } //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by GUID configuration using the equals condition.
public void SearchForGUID() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like GUID. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoGUID; //Search Conditions like Equals. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opEquals; //Create Search query for example (GUID Equals '{DC047537-A1C0-4212-81D7-D2674D98AA89}') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "{DC047537-A1C0-4212-81D7-D2674D98AA89}"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by keyword using the Contains condition.
public void SearchForKeywordSearch() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like Keyword. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoKeyword; //Search Conditions like Contains. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opContains; //Create Search query for example (Keyword Contains 'Certificate Services Client - Auto-Enrollment') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "Certificate Services Client - Auto-Enrollment"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain, where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs by advanced keyword using the Contains/Begins with/Ends with/Equals condition.
public void SearchForAdvanceKeywordSearch() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Advance Keyword search Item. GPASearchCriterionTypes eSearchCriteriaType = GPASearchCriterionTypes.gpoAdvancedKeyword; //Setting Name Operator like Contains, Begins with, Ends with, Equals. GPASearchOperatorTypes eSettingNameOperator = GPASearchOperatorTypes.opContains; //Setting Name Operand. string strSettingNameOperand = "Configure Automatic Updates"; //Setting Value Operator like Contains, Begins with, Ends with, Equals. GPASearchOperatorTypes eSettingValueOperator = GPASearchOperatorTypes.opBeginsWith; //Setting Value Oprand. string strSettingValueOprand = "Enabled"; //Create Search query for example (Advanced Keyword Search Setting Name Contains 'Configure Automatic Updates' And Setting Value Begins with 'Enabled') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(eSearchCriteriaType, eSettingNameOperator, strSettingNameOperand, eSettingValueOperator, strSettingValueOprand); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid domain where intended to do search. GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs using multiple criteria.
public void SearchForMultipleSearchCriteria() { try { IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } IList participantArrayList = new ArrayList(); IGPASearchParticipant Participant; //First Search Item: GPO Name //Search query : (GPO Name Contains 'rc') Participant = gpaSearchCriteriaBuilder.CreateSearchFilter(GPASearchCriterionTypes.gpoDisplayName, GPASearchOperatorTypes.opContains, "rc"); //Add the Search query to the array list. participantArrayList.Add(Participant); //Second Search Item: GPO Links //Search query : (GPO Links Exist In 'MYDOMAIN.LAB') Participant = gpaSearchCriteriaBuilder.CreateSearchFilter(GPASearchCriterionTypes.gposomLinks, GPASearchOperatorTypes.opExistIn, "MYDOMAIN.LAB"); //Add the Search query to the array list. participantArrayList.Add(Participant); //Third Search Item: Keyword search //Search query : (Keyword Contains 'Enabled') Participant = gpaSearchCriteriaBuilder.CreateSearchFilter(GPASearchCriterionTypes.gpoKeyword, GPASearchOperatorTypes.opContains, "Enabled"); //Add the Search query to the array list. participantArrayList.Add(Participant); //List of search queries. IGPASearchParticipant gpaSearchParticipantList; //Final Search queries : (GPO Name Contains 'rc')AND(GPO Links Exist In 'MYDOMAIN.LAB')AND(Keyword Contains 'Enabled') //Relation Type of search: Match All Criteria = AND, Match Any Criteria = OR gpaSearchParticipantList = gpaSearchCriteriaBuilder.LinkSearchCriteriaEx(participantArrayList, GPASearchRelationshipType.AND/*Relation Type*/); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); GPASearchScope.AddDomain("MYDOMAIN.LAB", ""); //Create scope for repository domain search . GPASearchScope.AddRepositoryDomain("MYDOMAIN.LAB", ""); //Search for AD GPOs. //GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Search for REP GPOs. //GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInREP); //Search for AD GPOs and REP GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInADAndREP); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bresult = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bresult) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipantList, GPASearchScope); if (strSearchRequestID.Length > 0) // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }
The following sample allows you to search for GPOs in multiple domains.
public void SearchForMultipleDomain() { try { //Instantiate the Search Criteria Builder. IGPASearchCriteriaBuilder gpaSearchCriteriaBuilder = new CGPASearchCriteriaBuilder(); if (null == gpaSearchCriteriaBuilder) { Console.WriteLine("Failed to create NetIQGPASearchHelpers.CGPASearchCriteriaBuilder"); return; } //Search Item like GPO Name. GPASearchCriterionTypes cTypes = GPASearchCriterionTypes.gpoDisplayName; //Search Conditions like Contains. GPASearchOperatorTypes oTypes = GPASearchOperatorTypes.opContains; //Create Search query for example (GPO Name Contains 'rc_') IGPASearchParticipant gpaSearchParticipant = gpaSearchCriteriaBuilder.CreateSearchFilter(cTypes, oTypes, "rc_"); //Create the search scope IGPASearchScope GPASearchScope = new GpaSearchScope(); //Assign valid AD domains, where intended to do search. GPASearchScope.AddDomain("AD_Domain A", ""); GPASearchScope.AddDomain("AD_Domain B", ""); // Assign valid Repository domains, where intended to do search. GPASearchScope.AddRepositoryDomain("REP_Domain A", ""); GPASearchScope.AddRepositoryDomain("REP_Domain B", ""); //Search for AD GPOs. //GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInAD); //Search for REP GPOs. //GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInREP); //Search for AD GPOs and REP GPOs. GPASearchScope.AddOptions(SearchOptions.SearchType, SearchType.SearchInADAndREP); //Instantiate the GPAsearchAPI IGPASearchAPIs oGPASearchAPI = new GpaSearchAPI(); //Initialize the Search API. bool bstatus = oGPASearchAPI.Initialize("Server_host_name", "http", 63847); if (bstatus) { // Get the Search Request ID. string strSearchRequestID = oGPASearchAPI.SearchGPOs(gpaSearchParticipant, GPASearchScope); if (strSearchRequestID.Length > 0) { // Save the search xml. oGPASearchAPI.GetSearchResult(strSearchRequestID, "File_Location\\Filename.xml"); } } } catch (Exception genExp) { Console.WriteLine("Failed to Search." + genExp.Message); } }