文档库 最新最全的文档下载
当前位置:文档库 › PowerShell指令描述

PowerShell指令描述

东方网力公司技术文档 . . . . . . .. . .

PowerShell 指令描述 文档版本历史:

2004年2月11日,钟宏全创建0.1版

2004年2月25日,蒋宗文修改0.2版,补充了一些辅助指令 1 概述

本文档描述了PowerShell 实现的所有指令,给出了这些指令的语法以及一些简单的使用实例。

本文档的RMIP 通讯指令基本上与RMIP 协议文档中描述的指令一一对应。RMIP 协议文档及相关文档给出每条指令的详细含义。

除了这些RMIP 通讯指令外,还有一些建立/拆除连接以及其它辅助指令,本文档将给出它们的详细定义。

2 一些规则

? 首字母小写

为了区别以前版本的JSShell 指令,PowerShell 的指令将采用首字母小写的方式给出,例如,对于RMIP 中的GetProtocolVersion 指令,在PowerShell 中对应的指令为getProtocolVersion 。

? IP 地址采用点分十进制,而不是协议文档中描述的U32。 ? 两种调用方式

RMIP 中的所有指令均有一个表示该指令执行是否成功的返回值(大于等于0表示成功,小于0表示错误),同时有些指令包含需要返回的参数,根据指令是否有返回参数,可以把PowerShell 的所有指令分为以下的两类指令: 1. 对于没有返回参数的指令,其调用语法为: funcname(parm1,…)

2. 对于有返回参数的指令,其调用语法为: funcname(result, parm1,…)

其中的result 是一个动态数组,实现程序将把结果放置到这个数组中。 ? 可变参数

有些指令需传入的参数个数是不确定的,此时,这个指令要有一个count 类型的参数(设为xxx-count ),在这个参数之后的所有参数均要重复xxx-count 次。例如对于setAccess 指令,它可以一次为一个用户/用户组设置某对象的权限,也可以为多个用户/用户组设置该对象的权限。参见以下的例三。

? 可变返回参数

东方网力公司技术文档

与上述的可变化参数相同,返回参数也是可变的。在这些指令的result数组中会有一个count类型的值(设为xxx-count),在这个值之后的返回参数均要重复xxx-count次。

参见以下的例四。

举例一(无返回参数):

ret = setDateTime(“20040211120000”)

if (ret < 0)

print(“设置服务器日期时间时出错!”)//可能当前用户无权限else

print(“设置服务器日期时间时成功!”)

举例二(有返回参数):

result = []

ret = getProtocolVersion(result)

if (ret < 0)

print(“得到版本号时出错!”)

else

print(“协议的版本号是:”, result[0]>>16, ”.”, result[0]&0xffff)

举例三(可变参数):

ret = setAccess(“object_name”, 3,

“user_or_usergroup_name1”, right1, “expired_date_time1”

“user_or_usergroup_name2”, right2, “expired_date_time2”,

“user_or_usergroup_name3”, righ13, “expired_date_time3”)

if (ret < 0)

print(“权限设置出错!”)

else

print(“权限设置成功!”)

举例四(可变返回参数):

result = []

ret = getAccess(result, “object_name”)

if (ret < 0) {

print(“权限设置出错!”)

return

}

flags = result[0]

count = result[1]

for (var i=2; i<2+count*3; i+=3) {

//在这里输出权限的内容或进行处理

print(“User-group-object-name:”, result[i]);

print(“Right:”, result[i+1]);

print(“Expired-date-time:”, result[i+2]);

}

东方网力公司技术文档3 RMIP指令

本节对PowerShell的所有指令进行分类列表。列表只给出了示意性地使用指令的方法(示意性的英文,在需要字符串的时候加了引号),传入的参数以及返回的参数的具体含义请参见<>文档,进一步的关于对象的内容请参见<>文档。

另外,本节还单独列出了几个比较复杂的指令。

3.1 无返回参数的指令

?setDateTime(“YYYYMMDDhhmmss”)

?ipConfig(“ipaddr”, ”Netmask”, “Default-gateway”)

?login(“username”, “password”)

?logout()

?setObjectName(“object_name”, “new_name”)

?setAccess(“object_name”, access_count, “user_or_usergroup_name”, right,

“expired_date_time”, …)

?setAccessFlags(“object_name”, flags)

?deleteObject(“object_name”)

?deleteProperty(“object_name”, property)

?deleteFile(“file-name”)

?fill(av-port, x, y, width, height, color)

?text(av-port, x, y, color, “text-string”)

?scanDisk()

?formatDisk(disk-number, partition-count, partition-size, …)

?formatPartition(disk-number,partition-number)

?ejectDisk(disk-number)

?ptzControl(av-port, ptz-cmd,ptz-parm)

?lockCamera(av-port, locked)

?setAutoRecord(“Source-channel-name”, “Storage-channel-name”, ”Condition”)

?clearAutoRecord(“Storage-channel-name”, “Condition”)

?startTransfer(“Source-channel-name”, Data-type, target_count, Target-channel-

name, …)

?stopTransfer(“Target-channel-name”)

?setEventTransfer(“Target-channel-name”, Event-type, Event-count, Event-op-

bitmask, Event-port-bitmask …)

东方网力公司技术文档

?setAlarm(Alarm-count, Alarm-op-bitmask, Alarm-port-bitmask …)

3.2 有返回参数的指令

?getProtocolVersion(result)

?getIPConfig(result)

?getAccess(result, “object_name”)

?getAccessByRole(result, “user_or_usergroup_name”,”parent_object_name”)

?listObject(result, ”parent_object_name”, “condition”)

?listFile(result, “storage-channel-name”, Data-type, “Begin-date-time”, “End-

date-time”)

?deleteManyFile(result, “storage-channel-name”, Data-type, “Begin-date-time”,

“End-date-time”)

? listFilm(result, “condition”)

?scanAlarmDevice(result)

?listAutoRecord(result)

?listTransferStatus(result)

?prepareMulticast(result, “Source-channel-name”, Data-type)

?getTCPChannelName(result)

?listEventTransfer(result, “Target-channel-name”)

?executeMacro(result, “Macro-text”)

3.3 setObject

语法:setObject(result, “object_name”, Flags, Property_count, property, value…,)

共有Property-count个property和value参数。

result的内容为Failed-count, Property, Failed-code, …后面二项按failed-count重复。

举例如下:

ret =setObject(result, “av/1”,0, 2, title的id, “大门”, bitrate的id, “1000000”)

if (ret >=0) {

print(“设置属性成功!”)

return

}

for (var i=1; i<1+result[0]*2; i+=2) {

print(“property id:”,result[i]);

print(“Failed-code:”,result[i+1]);

}

东方网力公司技术文档

3.4 listProperty

语法:listProperty(result, “object_name”)

如果成功,result的内容为Property-count, property, value,其中后面两项重复Property_count次。

举例如下:

ret = listProperty(result, “av/1”)

if (ret < 0) {

print(“列出属性时出错!”)

return

}

for (var i=1; i

print(“property id:”,result[i]);

if (result[I+1] == null)

print(“该属性是long string或long binary或password类型”);

else

print(“property value:”,result[I+1]);

}

3.5 getProperty

语法:getProperty(result, “object_name”, Property-count, Property, …),其中Property-count是大于0且小于等于32的值。

如果成功,result的内容为value…,其中value的个数为property-count。

举例如下:

ret =getProperty(result, “av/1”,2, title的id, Bitrate的id)

if (ret < 0) {

print(“取得属性时出错!”)

return

}

for (var i=0; i<2; i++) {

if (result[i] == null)

print(“该属性不存在或是password类型”);

else

print(“property value:”,result[i]);

}

3.6 数据夹带指令

在使用夹带数据时通常要用到Raw对象。Raw对象实现了从文件中读取数据以及把数据保存为文件的功能。

?updateSystemFile(new Raw (“update_file_pathname”))

?bitmap(av-port, x, y, new Raw (“bitmap-file-pathname”))

东方网力公司技术文档

captureImage(result, av-port, File-format),如果成功,result[0]是一个Raw 对象,内含图像数据,可以使用Raw.store()方法将其保存为文件。

3.7 录像文件存取指令

目前不予支持。

4 RMIP辅助指令

r = init(host[, port])建立RMIP连接

r = uninit()拆除RMIP连接

errText = getErrorText(r)获得RMIP指令返回码的字符串信息

5 其它辅助指令

version()得到当前JavaScript的版本

print(var1, var2, …)打印并换行

printN(var1, var2, …)打印但不换行

gc()内存垃圾回收

buildInfo()得到本Shell的构造日期

load(fileName)装入并执行JavaScript脚本文件

line()得到当前行号

fLog = openLog(logFileName)打开日志文件

writeLog(fLog, var1, var2, …)写日志文件

closeLog(fLog)关闭日志文件

相关文档
相关文档 最新文档