J'exécute un script JSL à partir du noyau PowerShell sous Windows.Quelqu'un a-t-il un bon moyen d'écrire sur la console à partir de JSL afin qu'il écrive dans mon script PowerShell?
Actuellement, j'écris dans un fichier temporaire, puis dans le script powershell, je vérifie ce fichier dans une boucle et j'écris le contenu de ce fichier.En espérant que quelqu'un ait fait quelque chose de plus robuste.
Il semble que vous ayez besoin de créer une DLL. JMP fonctionne bien avec ceux qui ont un seul paramètre. Cet argument pourrait être votre chaîne.
Cool.Je vais me renseigner.
Vous pourriez faire quelque chose comme ça. Voici (mon tout premier, plus ou moins) script powershell (merci github et le débordement de pile !) Corrigez le chemin d'accès au fichier de bureau...
Write-Output "Starting JMP"
Start-Process -FilePath "jmp.exe" -ArgumentList "C:\Users\v1\Desktop\pstest.jsl"
Write-Output "Started JMP"
# https://gist.github.com/staaldraad/153ab9d26d49c387550bcb5f974f7910
# thanks @ https://gist.github.com/staaldraad
$socket = new-object System.Net.Sockets.TcpListener('0.0.0.0', 1080);
if($socket -eq $null){
exit 1;
}
$socket.start();
$client = $socket.AcceptTcpClient();
$stream = $client.GetStream();
$buffer = new-object System.Byte[] 2048;
# $file = 'c:/afile.exe';
# $fileStream = New-Object System.IO.FileStream($file, [System.IO.FileMode]'Create', [System.IO.FileAccess]'Write');
$encoding = new-object System.Text.AsciiEncoding
do
{
$rawresponse = $null;
while($stream.DataAvailable -or $rawresponse -eq $null) {
$rawresponse = $stream.Read($buffer, 0, 2048);
if ($rawresponse -gt 0) {
$response = $encoding.GetString($buffer, 0, $rawresponse)
# $fileStream.Write($buffer, 0, $read);
$response # really? that's all it takes to print to the console?
}
}
} While ($rawresponse -gt 0);
# $fileStream.Close();
$socket.Stop();
$client.close();
$stream.Dispose();
Write-Output "all done, exit in 5 seconds..."
Start-Sleep -Seconds 5
Voici un script JSL, pstest.jsl, pour le bureau...
s=socket();
s<<CONNECT></CONNECT>
Je pense que c'était nécessaire, mais je ne peux pas en être sûr après quelques faux départs...
Boîte de dialogue à partir de Windows pour autoriser PowerShell à ouvrir un port.
Et éventuellement
Cliquez avec le bouton droit sur le script .PS1 sur le bureau et -> Exécuter dans PowerShell.