type=page
status=published
title=uninstall-node-dcom
next=uninstall-node-ssh.html
prev=uninstall-node.html
~~~~~~
uninstall-node-dcom
===================

[[uninstall-node-dcom-1]][[GSRFM775]][[uninstall-node-dcom]]

uninstall-node-dcom
-------------------

uninstalls \{product---name} software from specified DCOM-enabled hosts

[[sthref2215]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] uninstall-node-dcom [--help]
[--installdir as-install-parent]
[--windowsuser windows-user] [--windowsdomain windows-domain]
[--force={false|true}]
host-list
----

[[sthref2216]]

Description

The `uninstall-node-dcom` subcommand uninstalls \{product---name}
software from the hosts that are specified as the operand of the
subcommand. This subcommand requires the Distributed Component Object
Model (DCOM) remote protocol to be configured on the host where the
subcommand is run and on each host where the \{product---name} software
is being uninstalled.


[NOTE]
=======================================================================

To uninstall \{product---name} software on hosts that use secure shell
(SSH), use the
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
subcommand.

=======================================================================


By default, if any node except the predefined node `localhost-`domain
resides on any host from which \{product---name} software is being
uninstalled, the subcommand fails. To uninstall the \{product---name}
software from a host on which user-defined nodes reside, set the
`--force` option to `true`. If the `--force` option is `true`, the
subcommand removes the entire content of the parent of the base
installation directory.

If a file under the parent of the base installation directory is open,
the subcommand fails.

If multiple hosts are specified, the configuration of the following
items must be the same on all hosts:

* Parent of the base installation directory for the \{product---name}
software
* Windows user
* Windows domain

The subcommand does not modify the configuration of the domain
administration server (DAS).

This subcommand is supported in local mode only.

[[sthref2217]]

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.
`--installdir`::
  The absolute path to the parent of the base installation directory
  where the \{product---name} software is installed on each host, for
  example, `C:\glassfish3`. +
  The user that is running this subcommand must have write access to the
  specified directory. Otherwise, an error occurs. +
  The specified directory must contain the installation of the
  \{product---name} software on the host. Otherwise, an error occurs. +
  The default is the parent of the base installation directory of the
  \{product---name} software on the host where this subcommand is run.
`--windowsuser`::
`-w`::
  The user on this node's host that is to run the process for connecting
  to the host through DCOM. The default is the user that is running the
  DAS process.
`--windowsdomain`::
`-d`::
  The name of the Windows domain that contains the user that the
  `--windowsuser` option specifies. The default is the name of the host
  on which the subcommand is run.
`--force`::
  Specifies whether the subcommand uninstalls the \{product---name}
  software from a host even if a user-defined node resides on the host.
  Possible values are as follows: +
  `false`;;
    If a user-defined node resides on a host, the software is not
    uninstalled and the subcommand fails (default). +
    If the `--force` option is `false`, the subcommand removes only the
    \{product---name} software files. Other content if the parent of the
    base installation directory, such as configuration files, are not
    removed.
  `true`;;
    The subcommand uninstalls the \{product---name} software from the
    host even if a user-defined node resides on the host. +
    If the `--force` option is `true`, the subcommand removes the entire
    content of the parent of the base installation directory.

[[sthref2218]]

Operands

host-list::
  A space-separated list of the names of the hosts from which the
  \{product---name} software is to be uninstalled.

[[sthref2219]]

Examples

[[GSRFM776]][[sthref2220]]

Example 1   Uninstalling \{product---name} Software From the Default
Location

This example uninstalls \{product---name} software on the hosts
`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.

[source,oac_no_warn]
----
asadmin> uninstall-node-dcom wpmdl1 wpmdl2
Command uninstall-node-dcom executed successfully.
----

[[GSRFM777]][[sthref2221]]

Example 2   Forcibly Uninstalling \{product---name} Software

This example uninstalls \{product---name} software on the host
`xkyd.example.com`.

The software is uninstalled even if a user-defined node resides on the
host. The entire content of the `C:\glassfish3` directory is removed.

[source,oac_no_warn]
----
asadmin> uninstall-node-dcom --force --installdir C:\glassfish3 xkyd.example.com
Command uninstall-node-dcom executed successfully.
----

[[sthref2222]]

Exit Status

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

[[sthref2223]]

See Also

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

link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]


