Datenfeldabfrage in function

Post Reply
jlies
Posts: 76
Joined: 07. Dec 2009, 13:14
Location: Wunstorf
Contact:

Datenfeldabfrage in function

Post by jlies » 01. Jun 2010, 13:23

Hallo zusammen,
ich stelle die Frage noch mal in diesem Bereich, da sie hier woll besser passt und ich auf eine Antwort hoffe.

Ich möchte über Script im Formular SPSActivityTypeIncident.allgemein eine Batchdatei aufrufen, die den Assetnamen der Störung als Parameter mit übergibt.

Code: Select all

function RunProg2()
{
var Wsh = new ActiveXObject("WScript.Shell");
Wsh.Run("C:\\Scripte\\RemoteControll.bat <%=base.DataObject["SPSActivityClassIncident"]["Asset"].ToString()%>", 1)
}

top.SPS.PropertyDialogContainer.ProxyPage.RegisterClienSideTask(2,"00000000-0000-0000-0000-000000000000","Dameware Remote","RunProg2","/SPS/Images/icon16_dameware.png")

Mit der Aktuellen Version lässt sich die Batch jetzt aufrufen, leider wird aber nicht der Assetname, sondern nur die ID übergeben.

Mit " =T(SPSActivityClassIncident).Asset.T(SPSComputerClassBase).Name" kann ich im Tabellenlayout den Namen Anzeigen, aber leider nicht im Script.

Hat jemand eine Lösung dafür?

Code: Select all

<%=base.DataObject["SPSActivityClassIncident"]["Asset"]["SPSComputerClassBase"]["Name"].ToString()%> 
geht leider nicht!

Vielen Dank schon mal

Jan Lies

Florian Hüffler
Posts: 16
Joined: 30. Apr 2010, 14:12
Contact:

Re: Datenfeldabfrage in function

Post by Florian Hüffler » 11. Jun 2010, 16:45

Hallo,

damit sollte es gehen.
WICHTIG: das Skript nicht in einem Steuerelement, sondern im Reiter "Skript" anlegen.

Die Prüfung auf ob ein Asset ausgewählt ist, ist nötig da sonst ein "Neuer" Störungsdialog auf die Nase fällt.

Code:
//
// This function gives you the name of the selected Asset
//
function AssetName()
{
var Wsh = new ActiveXObject("WScript.Shell");
var Com = "cmd";
var ComOptions = " /k echo ";
var getAsset= document.getElementById(SPSActivityClassIncidentAsset).value;
var FullCom = Com + ComOptions + getAsset;
if(getAsset != '')
{
var oExec = Wsh.Run(FullCom);
while (oExec.Status == 0)
{
WScript.Sleep(100);
}
WScript.Echo(oExec.Status);
return false;
}
else
{
alert('Field <Asset> is empty!');
}
}
RegisterClienSideTask("00000000-0000-0000-0000-000000000000", "Show Assetname", "AssetName");
Florian Hüffler
Senior Consultant
Matrix42 Service Store

jlies
Posts: 76
Joined: 07. Dec 2009, 13:14
Location: Wunstorf
Contact:

Re: Datenfeldabfrage in function

Post by jlies » 14. Jun 2010, 11:18

Hallo,
vielen Dank erst mal.

Wie kann ich jetzt die Funktion noch aufrufen?

alt: Wsh.Run("C:\\Scripte\\RemoteControll.bat <%=base.DataObject["SPSActivityClassIncident"]["Asset"].ToString()%>", 1)
so hat es nicht geklappt!

Code: Select all

Wsh.Run("C:\\Scripte\\RemoteControll.bat <%=AssetName()%>", 1)
Das Formular startet nicht mehr!

Bitte noch einen kleien Tipp ;)

Gruß
Jan Lies

Florian Hüffler
Posts: 16
Joined: 30. Apr 2010, 14:12
Contact:

Re: Datenfeldabfrage in function

Post by Florian Hüffler » 14. Jun 2010, 13:09

Hallo,

var Com = ruft die cmd auf.
var ComOptions = Programmaufruf
var getAsset = der als Parameter zu übergebende String.

In Deinem Fall sollte also:

Code: Select all

var ComOptions = " /k C:\\Scripte\\RemoteControll.bat ";
ausreichen.
Wichtig ist das Leerzeichen nach ".bat" da sonst der Assetname direkt angehängt wird.

zum Testen:

Code: Select all

var ComOptions = " /k echo C:\\Scripte\\RemoteControll.bat ";

btw: welches RemoteControl-Tool setzt Ihr ein?

gruß
Florian
Florian Hüffler
Senior Consultant
Matrix42 Service Store

jlies
Posts: 76
Joined: 07. Dec 2009, 13:14
Location: Wunstorf
Contact:

Re: Datenfeldabfrage in function

Post by jlies » 14. Jun 2010, 14:18

Hallo Florian,

vielen Dank. War etwas blind hätte ich auch selbst drauf kommen müssen. Jetzt hab ich's. Hat mit super geholfen!

Remote Tool ist "Dameware".

Für andere die vieleicht interesse haben, hier meine gesamte Lösung:

Dameware Batchdatei auf c.\sciripte:

Code: Select all

set Client=%1
Echo off
Echo %date%	%time%	%username%	%computername%	%Client% >> h:\daten\Referat1\10\150\Helpdesk\RemoteDameware.log.xls
Start "" "C:\Program Files\DameWare Development\DameWare NT Utilities\DWRCC.exe" -c: -h: -a:2 -u:Administrator -p:Passwort -m:%Client% -a:1
pause
rem goto ende
rem :ende
exit
Und hier noch die JScripte:

Code: Select all

//
// This function gives you the name of the selected Asset and starts Dameware Remote Controll
//
function AssetRemote()
{
var Wsh = new ActiveXObject("WScript.Shell");
var Com = "cmd";
var ComOptions = " /k C:\\Scripte\\RemoteControll.bat ";
var getAsset= document.getElementById(SPSActivityClassIncidentAsset).value;
var FullCom = Com + ComOptions + getAsset;
if(getAsset != '')
{
var oExec = Wsh.Run(FullCom);
while (oExec.Status == 0)
{
WScript.Sleep(100);
}
WScript.Echo(oExec.Status);
return false;
}
else
{
alert('Field <Asset> is empty!');
}
}


//
// This function gives you the name of the selected Asset and starts ping
//
function RunPing()
{
var Wsh = new ActiveXObject("WScript.Shell");
var Com = "ping.exe";
var ComOptions = " -t ";
var getAsset= document.getElementById(SPSActivityClassIncidentAsset).value;
var FullCom = Com + ComOptions + getAsset;
if(getAsset != '')
{
var oExec = Wsh.Run(FullCom);
while (oExec.Status == 0)
{
WScript.Sleep(100);
}
WScript.Echo(oExec.Status);
return false;
}
else
{
alert('Field <Asset> is empty!');
}
}

top.SPS.PropertyDialogContainer.ProxyPage.RegisterClienSideTask(1,"00000000-0000-0000-0000-000000000000","PING Computer","RunPing")


top.SPS.PropertyDialogContainer.ProxyPage.RegisterClienSideTask(2,"00000000-0000-0000-0000-000000000000", "Dameware Remote Control", "AssetRemote","/SPS/Images/icon16_dameware.png")

Post Reply

Return to “Administration”

Who is online

Users browsing this forum: No registered users and 3 guests