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

[[delete-node-dcom-1]][[GSRFM569]][[delete-node-dcom]]

delete-node-dcom
----------------

deletes a node that is enabled for communication over DCOM

[[sthref906]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] delete-node-dcom [--help] 
[--uninstall={false|true}] [--force={false|true}]
node-name
----

[[sthref907]]

Description

The `delete-node-dcom` subcommand deletes a node that is enabled for
communication over the Distributed Component Object Model (DCOM) remote
protocol from the domain. The DCOM protocol is available only on Windows
systems. This subcommand does not require DCOM to be configured.

This subcommand can delete only a node that is enabled for communication
over DCOM. The subcommand for deleting other types of nodes depends on
the type of the node:

* A node that is enabled for communication over secure shell (SSH) must
be deleted by using the
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)]
subcommand.
* A node that is not enabled for communication must be deleted by using
the
link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)]
subcommand.

To determine whether a node is enabled for communication over DCOM, use
the link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.

No \{product---name} instances must reside on the node that is being
deleted. Otherwise, the subcommand fails. Before running this
subcommand, delete any instances that reside on the node by using, for
example, the
link:delete-instance.html#delete-instance-1[`delete-instance`(1)]
subcommand or the
link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)]
subcommand.

This subcommand is supported in remote mode only.

[[sthref908]]

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.
`--uninstall`::
  Specifies whether the \{product---name} software is uninstalled from
  host that the node represents. +
  Possible values are as follows: +
  `false`;;
    The \{product---name} software is not uninstalled from the host
    (default).
  `true`;;
    The \{product---name} software is uninstalled from the host. 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.
`--force`::
  If `--uninstall` is true, 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.

[[sthref909]]

Operands

node-name::
  The name of the node to delete. The node must enabled for
  communication over DCOM. Otherwise, an error occurs.

[[sthref910]]

Examples

[[GSRFM570]][[sthref911]]

Example 1   Deleting a Node That Is Enabled for Communication Over DCOM

This example deletes the node `xkyd`, which is enabled for communication
over DCOM.

[source,oac_no_warn]
----
asadmin> delete-node-dcom xkyd
Command delete-node-dcom executed successfully.
----

[[sthref912]]

Exit Status

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

[[sthref913]]

See Also

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

link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]


