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 {productName} software from specified DCOM-enabled hosts

[[sthref2215]]

=== Synopsis

[source]
----
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 {productName}
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 {productName} software
is being uninstalled.

[NOTE]
====
To uninstall {productName} 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 {productName} software is being
uninstalled, the subcommand fails. To uninstall the {productName}
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 {productName} 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 {productName} software is installed on each host, for
  example, `C:\glassfish7`. +
  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
  {productName} software on the host. Otherwise, an error occurs. +
  The default is the parent of the base installation directory of the
  {productName} 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 {productName}
  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
    {productName} software files. Other content if the parent of the
    base installation directory, such as configuration files, are not removed.
  `true`;;
    The subcommand uninstalls the {productName} 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
  {productName} software is to be uninstalled.

[[sthref2219]]

=== Examples

[[GSRFM776]][[sthref2220]]

==== Example 1   Uninstalling {productName} Software From the Default Location

This example uninstalls {productName} software on the hosts
`wpmdl1.example.com` and `wpmdl2.example.com` from the default location.

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

[[GSRFM777]][[sthref2221]]

==== Example 2   Forcibly Uninstalling {productName} Software

This example uninstalls {productName} 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:\glassfish7` directory is removed.

[source]
----
asadmin> uninstall-node-dcom --force --installdir C:\glassfish7 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)]


