type=page
status=published
title=list-audit-modules
next=list-auth-realms.html
prev=list-applications.html
~~~~~~

= list-audit-modules

[[list-audit-modules-1]][[GSRFM00149]][[list-audit-modules]]

== list-audit-modules

Gets all audit modules and displays them

[[sthref1316]]

=== Synopsis

[source]
----
asadmin [asadmin-options] list-audit-modules [--help]
[target]
----

[[sthref1317]]

=== Description

The `list-audit-modules` subcommand lists all the audit modules. This
subcommand is supported in remote mode only.

[[sthref1318]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.

[[sthref1319]]

=== Operands

target::
  Specifies the target on which you are listing the audit modules. Valid
  values are as follows:

  `server`;;
    Lists the audit modules for the default server instance `server` and
    is the default value.
  configuration_name;;
    Lists the audit modules for the named configuration.
  cluster_name;;
    Lists the audit modules for every server instance in the cluster.
  instance_name;;
    Lists the audit modules for a particular server instance.

[[sthref1320]]

=== Examples

[[GSRFM637]][[sthref1321]]

==== Example 1   Listing Audit Modules

[source]
----
asadmin> list-audit-modules
sampleAuditModule1
sampleAuditModule2
Command list-audit-modules executed successfully
----

[[sthref1322]]

=== Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1323]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-audit-module.html#create-audit-module-1[`create-audit-module`(1)],
link:delete-audit-module.html#delete-audit-module-1[`delete-audit-module`(1)]


