Datenfeldabfrage in function

Antworten
jlies
Beiträge: 72
Registriert: 07. Dez 2009, 13:14
Wohnort: Wunstorf
Kontaktdaten:

Datenfeldabfrage in function

Beitrag von 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: Alles auswählen

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: Alles auswählen

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

Vielen Dank schon mal

Jan Lies

Florian Hüffler
Beiträge: 16
Registriert: 30. Apr 2010, 14:12
Kontaktdaten:

Re: Datenfeldabfrage in function

Beitrag von 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
Beiträge: 72
Registriert: 07. Dez 2009, 13:14
Wohnort: Wunstorf
Kontaktdaten:

Re: Datenfeldabfrage in function

Beitrag von 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: Alles auswählen

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

Bitte noch einen kleien Tipp ;)

Gruß
Jan Lies

Florian Hüffler
Beiträge: 16
Registriert: 30. Apr 2010, 14:12
Kontaktdaten:

Re: Datenfeldabfrage in function

Beitrag von 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: Alles auswählen

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: Alles auswählen

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
Beiträge: 72
Registriert: 07. Dez 2009, 13:14
Wohnort: Wunstorf
Kontaktdaten:

Re: Datenfeldabfrage in function

Beitrag von 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: Alles auswählen

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: Alles auswählen

//
// 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")

Antworten

Zurück zu „Administration“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast