pmcmd 命令引用 > 使用 pmcmd
  

使用 pmcmd

pmcmd 是用于与集成服务通信的程序。 使用 pmcmd 可执行一些任务(如启动和停止工作流和会话),这些任务在工作流管理器中同样可以执行。
在下列模式下使用 pmcmd
使用 pmcmd 可将环境变量用于用户名和密码。 还可以使用环境变量自定义 pmcmd 在运行集成服务进程的计算机上显示日期和时间的方式。 使用 pmcmd 之前,请在运行集成服务进程的计算机上配置这些变量。 环境变量适用于节点上运行的 pmcmd 命令。

在命令行模式下运行命令

每次您发出命令时,命令行模式都会调用 pmcmd,然后再退出。 如果要通过批处理文件、脚本或其他程序运行 pmcmd 命令,命令行模式则非常有用。
pmcmd 命令与 cron 之类的操作系统调度工具配合使用,也可以将 pmcmd 命令嵌入到 shell 或 Perl 脚本中。
在命令行模式下运行 pmcmd 时,需要在每个命令中输入连接信息,如域名、集成服务名称、用户名和密码。 例如,要在文件夹“SalesEast”中启动工作流“wf_SalesAvg”,请使用以下语法:
pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f SalesEast wf_SalesAvg
用户 seller3(密码为“jackson”)发送启动工作流的请求。
如果您忽略或错误地输入了必需选项之一,命令则会失败,pmcmd 返回一个非零返回代码。 有关所有返回代码的详细信息,请参阅pmcmd 返回代码
要在命令行模式下返回 pmcmd 命令,请执行以下操作:
    1. 在命令提示符下,切换到 pmcmd 可执行文件所在的目录。
    默认情况下,PowerCenter 安装程序将 pmcmd 安装在 \server\bin 目录中。
    2. 输入 pmcmd,后跟命令名称及其必需选项和参数:
    pmcmd command_name [-option1] argument_1 [-option2] argument_2...

pmcmd 返回代码

在命令行模式下,pmcmd 通过返回代码指示命令成功或失败。 返回代码“0”指示命令成功。 任何其他返回代码均指示命令失败。
在运行 pmcmd 命令后立即使用 DOS 或 UNIX echo 命令,以查看命令的返回代码:
下表描述了 pmcmd 的返回代码:
代码
说明
0
对于所有命令,返回值为零表示命令已成功运行。 您可以在 wait 或 nowait 模式下发出以下命令:starttask、startworkflow、aborttask 和 abortworkflow。 如果在 wait 模式下发出命令,则返回值为零表示命令已成功运行。 如果在 nowait 模式下发出命令,则返回值为零表示请求已成功传输到集成服务,并且已确认请求。
1
集成服务不可用,或 pmcmd 无法连接到集成服务。 TCP/IP 主机名、端口号或者网络存在问题。
2
任务名称、工作流名称或文件夹名称不存在。
3
启动或运行工作流或任务时出错。
4
使用错误。 您将错误的选项传递到 pmcmd
5
发生了内部 pmcmd 错误。 请联系 Informatica 全球客户支持部门。
7
您使用的用户名或密码无效。
8
您没有相应的权限或特权,无法执行该任务。
9
发送请求时,与集成服务的连接超时。
12
集成服务无法启动恢复,因为会话或工作流已计划、正在等待事件、正在等待、正在初始化、正在中止、正在停止、已禁用或正在运行。
13
用户名环境变量设置为空值。
14
密码环境变量设置为空值。
15
缺少用户名环境变量。
16
缺少密码环境变量。
17
参数文件不存在。
18
集成服务找到参数文件,但没有用于会话参数的初始值,例如 $input 或 $output。
19
集成服务无法恢复会话,因为工作流配置为持续运行。
20
发生存储库错误。 确保存储库服务和数据库正在运行,并且未超过与数据库的连接数限制。
21
集成服务正在关闭,不接受新的请求。
22
集成服务找不到您指定的工作流/会话的唯一实例。 使用文件夹名称或工作流名称再次输入命令。
23
没有可用于请求的数据。
24
内存不足。
25
已取消命令。

在交互模式下运行命令

在交互模式下使用 pmcmd 启动和停止工作流与会话,无需编写脚本。 使用交互模式时,输入域名、集成服务名称、用户名和密码等连接信息。 您可以运行后续命令,无需为每个命令输入连接信息。
例如,以下命令可调用交互模式,建立到集成服务“MyIntService”的连接,并在文件夹“SalesEast”中启动工作流“wf_SalesAvg”和“wf_SalesTotal”:
pmcmd
pmcmd> connect -sv MyIntService -d MyDomain -u seller3 -p jackson
pmcmd> setfolder SalesEast
pmcmd> startworkflow wf_SalesAvg
pmcmd> startworkflow wf_SalesTotal
要在交互模式下运行 pmcmd 命令,请执行以下步骤:
    1. 在命令提示符下,切换到 pmcmd 可执行文件所在的目录。
    默认情况下,PowerCenter 安装程序会在 \server\bin 目录中安装 pmcmd
    2. 在命令提示符下,键入 pmcmd
    这会在交互模式下启动 pmcmd,并显示 pmcmd> 提示。 在交互模式下,您不必在每个命令之前键入 pmcmd
    3. 为域和集成服务输入连接信息。 例如:
    connect -sv MyIntService -d MyDomain -u seller3 -p jackson
    4. 按照以下格式键入命令及其选项和参数:

    command_name [-option1] argument_1 [-option2] argument_2...
    pmcmd 会运行该命令并再次显示提示。
    5. 键入 exit 以结束交互会话。

设置默认值

使用 pmcmd 连接至集成服务后,可以指定在集成服务每次执行命令时使用的默认文件夹或条件。 例如,如果要发出一系列命令或同一文件夹中的任务,请使用 setfolder 命令指定文件夹名称。 默认情况下,所有后续命令使用该文件夹。
下表描述了用于设置后续命令默认值的命令:
命令
说明
setfolder
指定一个文件夹作为在其中执行所有后续命令的默认文件夹。
setnowait
在 nowait 模式下执行后续命令。 集成服务接收到上一个命令后,pmcmd 提示符可用。 非等待模式为默认模式。
setwait
在 wait 模式下执行后续命令。 集成服务完成上一个命令后,pmcmd 提示符可用。
unsetfolder
反转 setfolder 命令。
可以使用 pmcmd ShowSettings 命令显示默认设置。

在等待模式下运行

可以在等待模式或不等待模式下运行 pmcmd。 在等待模式下,pmcmd 会在命令完成之后才返回到 Shell 或命令提示符。 在此期间将无法运行后续命令,直至上一个命令完成。
例如,如果输入以下命令,pmcmd 会启动工作流“wf_SalesAvg”,并且会在该工作流完成之后才返回到命令提示符:
pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f SalesEast -wait wf_SalesAvg
在不等待模式下,pmcmd 会立即返回到 Shell 或命令提示符。 您不必等待当前命令完成后再运行下一个命令。
例如,如果输入以下命令,即使工作流“wf_SalesAvg”仍在运行,pmcmd 也会启动工作流“wf_SalesTotal”:
pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f SalesEast wf_SalesAvg
pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f SalesEast wf_SalesTotal
默认情况下,pmcmd 会在不等待模式下执行命令。
在命令行模式或交互模式下运行时,可以配置等待模式。 在命令行模式下,使用 -wait 选项即可在等待模式下运行命令。 在交互模式下,请使用 setwait 或 setnowait 命令,然后再输入后续命令。

用脚本编写 pmcmd 命令

使用 pmcmd 时,可以定期将一些命令与特定选项和参数配合使用。 例如,您可以使用 pmcmd 来检查集成服务的状态。 在此情况下,您可以创建脚本或批处理文件以调用一个或多个 pmcmd 命令,包括其选项和参数。
您可以在命令行模式下运行脚本。 您不能在交互模式下运行 pmcmd 脚本。
例如,以下 UNIX shell 脚本会检查集成服务“testService”的状态,如果其正在运行,则获得会话“s_testSessionTask”的详细信息:
#!/usr/bin/bash
# Sample pmcmd script
# Check if the service is alive

pmcmd pingservice -sv testService -d testDomain
if [ "$?" != 0 ]; then

    # handle error

    echo "Could not ping service"

    exit

fi
# Get service properties

pmcmd getserviceproperties -sv testService -d testDomain
if [ "$?" != 0 ]; then

    # handle error

    echo "Could not get service properties"

    exit

fi
# Get task details for session task "s_testSessionTask" of workflow

# "wf_test_workflow" in folder "testFolder"

pmcmd gettaskdetails -sv testService -d testDomain -u Administrator -p adminPass -folder testFolder -workflow wf_test_workflow s_testSessionTask
if [ "$?" != 0 ]; then

    # handle error

    echo "Could not get details for task s_testSessionTask"

    exit

fi

输入命令选项

pmcmd 提供多种方式来输入一些命令选项和参数。 例如,要输入密码,请使用以下语法:

<<-password|-p> password|<-passwordvar|-pv> passwordEnvVar>
要输入密码,请在密码前使用 -password 或 -p 选项:
-password ThePassword
or
-p ThePassword
如果使用密码环境变量,请在变量名称前使用 -pv 或 ‑passwordvar 选项:
-passwordvar PASSWORD
or
-pv PASSWORD
如果命令选项包含空格,请使用单引号或双引号将选项引起来。 例如,在以下语法中使用单引号将文件夹名称引起来:
abortworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f 'quarterly sales' -wait wf_MyWorkflow
要表示空字符串,请使用两个单引号 ('') 或两个双引号 ("")。