aardio 文档
aardio 范例:管道调用
//管道调用
import console.int;
import process.popen;
/*
调用 PowerShell.exe 执行 PowerShell 命令,
参数说明请参考 https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_powershell_exe
*/
var ps = process.popen.ps("-Command","Write-Output $PSVersionTable.PSVersion");
//这样写为之个参数也可以
var ps = process.popen.ps("-Command","Write-Output","$PSVersionTable.PSVersion");
/*
传多个命令行参数时,
单个参数如果首尾没有双引号,且包含空白字符、双引号等需要转义的字符,
aardio 会自动在首尾添加双引号并进行尾要的转义。
将 PowerShell 命令首尾用 { } 包起来,表示这是一个 PowerShell 语句。
最前面再加上 & 表示执行 PowerShell 语句。
这时候因为在 { } 内部的双引号并没有出现在参数首尾,
aardio 就会自动处理命令行参数转义并再次在参数首尾添加双引号。
PowerShell 就可以得到正确参数。
*/
var ps = process.popen.ps(`-Command`,`&{Get-FileHash "` + io._exepath + `"}`);
/*
返回的 ps 是 process.popen 对象,提供大量读写与操作进程管道的函数。
例如直接读取 PowerShell 进程全部输出:
*/
//var str = ps.readAll();
//自动输出到控制台
ps.logResponse(); //也可以输出到文本框 ps.logResponse(winform.edit)
//将 PowerShell 输出转换为 JSON
var ps = process.popen.ps(`-Command`,`&{
# PowerShell 会将仅用大括号包含的 PowerShell 作为字符串输出,
# 在前面加上一个 & 字符才会执行该语句块。
# PowerShell 2.0 不支持 ConvertTo-Json,这里先打个补丁
# Win10/Win11 已经自带 PowerShell 5.x,如果不想支持古老的 Win7,这段兼容代码可以不加。
if ($PSVersionTable.PSVersion.Major -lt 3){
Add-Type -assembly system.web.extensions
function ConvertTo-Json([object] $item){
$jss=New-Object system.web.script.serialization.javascriptSerializer
return $jss.Serialize($item)
}
};
function Get-Version {
ConvertTo-Json( $PSVersionTable.PSVersion )
}
Get-Version
}`);
//读取进程 JSON 输出
var psVersion = ps.jsonAll()
console.dump(psVersion);
console.pause();
Markdown 格式