使用 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 命令,以查看命令的返回代码:
- •在 DOS shell 中:echo %ERRORLEVEL%
- •在 UNIX Bourne 或 Korn shell 中:echo $?
- •在 UNIX C shell 中:echo $status
下表描述了 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
要表示空字符串,请使用两个单引号 ('') 或两个双引号 ("")。