Хотите верьте, хотите нет, но вы можете свободно вызывать объекты и функции aardio в PowerShell без какого-либо сложного кода? ! aardio теперь поддерживает такой геймплей, просто взгляните на код без всякой ерунды:
var ps1 = /*
# 定义命名参数
param($win,$external,$username)
# 自由调用参数传进来的 aardio 对象
$win.msgboxTest("这是 PowerShell 调用 aardio 打开的对话框。") #返回值会自动输出一行
# 自由调用 aardio 函数
$external.func("参数1","参数2")
*/
import win;
import dotNet.ps;
var output = dotNet.ps(ps1,{
win = win; //参数名前不要加$或-
external = {
func = function(title,text){
win.msgbox(text,title)
}
};
});
Очень волшебно, вы можете произвольно вызывать объекты aardio и функции aardio в PowerShell. Нет необходимости писать какой-либо сложный код.
Параметр @1 dotNet.ps(script,param) — это сценарий PowerShell, а параметр @2 — это параметр для вызова сценария. Этот параметр может быть табличным объектом. Пара «имя-значение» в таблице параметров — это тот, который указывает PowerShell.Именованные параметры. Элементы массива в таблице массива - это анонимные параметры.
Пример анонимного параметра:
var ps1 = /*
for ( $i=0; $i -lt $args.count; $i++){
write-host $args[$i]
}
*/
import dotNet.ps;
var output = dotNet.ps(ps1,{
"匿名参数1","匿名参数2","匿名参数3","匿名参数4"
});
import console;
console.log(output);
console.pause();
Анонимные параметры также можно записать так:
dotNet.ps(ps1,"匿名参数1","匿名参数2","匿名参数3","匿名参数4");
Если вы хотите выполнить команду, вы также можете использовать функцию dotNet.ps.command() Метод передачи параметров точно такой же, как и при использовании dotNet.ps Пример:
import dotNet.ps;
var output = dotNet.ps.command("Get-Command",{Name="*Process"});
import console;
console.logPause(output);
По умолчанию вывод PowerShell — например, с Write-Host, Write-Output автоматически перехватывается и возвращается в возвращаемом значении функции. Вы также можете указать функцию обратного вызова для получения выходных данных PowerShell, например:
import console;
import dotNet.ps;
dotNet.ps.onWrite = function(str){
console.log(str)
}
dotNet.ps.command("Get-Command",{Name="*Process"});
console.pause(output);
В качестве альтернативы мы можем указать обратный вызов dotNet.ps.onWriteProgress для настройки индикатора выполнения PowerShell, например:
Исходный код здесь:
aardio поставляется с примерами/вызовом других языков/PowerShell/индикатором выполнения
В приведенном выше примере есть несколько удобных гаджетов. Например, система по умолчанию запрещает выполнение PowerShell. Разумеется, выполнение PowerShell-скриптов в aarradio не будет ограничено. Это ограничение означает, что файлы скриптов *.ps1 нельзя запускать отдельно вне aardio, В примере представлен небольшой инструмент — вы можете включить или отключить это разрешение одним щелчком мыши:
Скрипты, как правило, более чувствительны, в отличие от EXE-файлов, которые могут иметь больше ложных срабатываний на поверхности, но не так уж сложно обнаружить сверхбелые изображения. Однако некоторые функции скрипта запрещены, что в принципе нерешаемо.
Если вы не хотите изменять настройки системных разрешений, aardio предоставляет функцию для прямого запуска скрипта ps1, например:
import process.popen;
var ps1 = process.popen.ps1("/test.ps1");
ps1.readAll()
В PowerShell есть много командлетов, написанных на C#, и программное обеспечение, написанное на C#, может использовать ILSpy для непосредственного просмотра исходного кода. На самом деле интересно посмотреть на исходный код некоторых Cmdlets , но шагов в этой операции много.Также я написал небольшой инструмент, который может напрямую перечислить все команды, искать и запрашивать и вызывать ILSpy для декомпиляции исходного кода одним щелчком мыши:
Другой пример вызова process.popen для создания конвейера процесса для выполнения команд PowerShell:
import console;
import process.popen;
console.showLoading(" 请稍候,正在调用 PowerShell");
var prcs = process.popen.ps(`-Command "& {Get-Command -Name *Process}"`);
var result = prcs.readAll();
console.log(result);
console.pause();