上一主题: run-SSHCommand 命令-通过 SSH 运行远程命令 (Funclet)下一主题: run-winRemote 命令-在多个远程 Windows 系统上执行命令 (Funclet)


run-SSHShell 命令-运行交互式 SSH 命令行 (Funclet)

run-SSHCommand 命令接受输入行,通过 SSH 将其发送到远程系统,并从远程节点显示输出。 可以在现有 SSH 会话或新的 SSH 会话中运行命令行。 在输入结束时销毁该会话。 虽然 AutoShell 使用 SSH 作为其主远程通信管道,但是该命令的远程节点不需要运行 AutoShell 客户端。 可以在任何运行 SSH 服务器的系统上执行命令。 可用命令、其选项和结束输入循环的方式取决于远程节点上配置的 shell。 通常可以通过输入“quit”或“exit”来终止输入循环。

命令的语法如下:

run-SSHShell [-host hostname] [-user username] [-pass password] [-key key phrase] 
[-prompt prompt] [-port portnumber] [-session ssh]
-host hostname

SSH 服务器的名称。

-user username

(可选)指定用于登录到远程节点的用户名。 用户名是密码身份验证或公钥身份验证所必需的。 如果没有指定用户名,则使用在 AutoShell 登录过程中输入的用户名。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:$$User

-pass password

(可选)指定用于登录到远程节点的密码。 如果没有指定密码,则使用在 AutoShell 登录过程中输入的密码。 要在发出该命令之后输入隐藏的密码,请指定使用可选提示作为参数的 PW_GET()。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:$$Pass

-key key

(可选)指定包含 RSA 私钥的文件的绝对路径或相对路径,用于登录到远程节点。 如果指定了私钥和密码,AutoShell 将首先尝试公钥登录,如果失败,则尝试密码登录。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。 仅在使用公钥身份验证联机创建 SSH 会话时需要此参数。

默认:""

短语

指定私钥的密码。 如果未加密密钥,则不需要该密码。 要在发出该命令之后输入隐藏的密码,请指定使用可选提示作为参数的 PW_GET()。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认:""

-prompt prompt

(可选)指定 SSH 服务器显示的提示字符串结尾的固定部分,以指示其可用于输入(例如:用于 AutoShell 的“::->”)。 需要该信息以确定在 SSH 会话期间执行的命令的完成情况。 指定尽可能多的固定字符。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:“::->”

-port portnumber

(可选)连接到目标系统的端口。

默认值:SSH 标准端口 22。

-session ssh

指定 new-SSHSession 返回的 CASSHELL 对象。 在传递现有 SSH 会话对象时,run-SSHShell 不需要创建 SSH 会话来从命令行执行命令。 如果指定该参数,则会忽略为 host、user、pass、key、phraseport 传递的值。 创建该会话时已指定该信息。

默认值:

示例

使用具有密码身份验证的 SSH 会话在主机上运行交互式命令行 shell:

run-SSHShell -host svr14 -user bob -pass xyz42 -prompt :>

明确分配 SSH 会话,首先运行命令,然后放到命令行输入循环:

ssh=new-SSHSession -host client8 -user bob -pass xyz42 -prompt ::->
run-SSHCommand -session ssh -command "cd /"
run-SSHShell -session ssh
ssh.disconnect();

另请参阅:

new-SSHSession 命令-创建一个新的安全 SSH 会话 (Funclet)

run-SSHCommand 命令-通过 SSH 运行远程命令 (Funclet)