Neustart des IPS-Server (Windows) über WebFront/App durchführen

Hallo allerseits!

Ihr wollt euren Server, auf dem IPS läuft, über das WebFront oder die Mobile-App neustarten? Mit folgenden Skripten wird der Computer/Server neugestartet (mit der Option „-f“, falls etwas hängt).

Soll der IPS-Dienst vorher beendet werden, dann muss der Dienst entweder unter dem jeweiligen Benutzer laufen, oder man kann das Skript mit „/runas“ ausführen lassen, damit die Berechtigungen passen.

Dazu legt euch z.B. die Datei „C:\TOOLS\Server-Neustart.bat“, mit folgendem Inhalt, auf dem IPS-Computer, an:

@echo off
echo Computer wird neugestartet
echo ###########################
shutdown -r -f -t 10

Dann müsst ihr euch in der IPS-Console noch ein Skript anlegen, an beliebiger Stelle, und mit diesem Inhalt füllen:

<?
IPS_Execute("C:/Tools/Server-Neustart.bat", "", false, false);
?>

…dieses Skript dann an gewünschte Stelle im WebFront verlinken, bestätigen, nach einer Minute wird der IPS-Computer/Server neugestartet :slight_smile:

> Denkt dran, ihr sägt euch dabei den eigenen Ast ab :wink:

Grüße,
Chris

Danke für den Tipp!

Hast du das IPS Dienste Neustart Skript rausgelöscht?

IPS_Dienste_neustart.bat


@echo off 
REM IPS-Dienst wird beendet 
net stop IPSServer 
echo ########################### 

echo 20 Sekunden warten 
@CHOICE /T 20 > NUL /D J 
echo ########################### 

echo IPS wird neugestartet
echo ########################### 
net start IPSServer

FUnktioniert top. Aus der Weboberfläche heraus, kann ich bei Bedarf auch nur mal „IPS“ durchstarten.

Wer Windowsupdates auf dem IPS Rechner installieren möchte -per IPS Weboberfläche -, könnte mal folgendes probieren:

In einer Batch folgendes VBS Skript starten:
ist von Microsoft Seite

cscript WUA_SearchDownloadInstall.vbs



Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If
    
WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()
 
    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 
 
    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

Hi!

Ja, hab den Teil rausgenommen mit dem IPS-Dienst. Weil das nur funktioniert, wenn die Rechte stimmen…

Aber dann für alle nochmal meine lange Version, wo vorher der IPS Dienst beendet wird, dazu hat er 60 Sekunden Zeit, wenn der Dienst bis dahin nicht beendet ist, dann wird er zwangsweise beendet und dann der Computer/Server neugestartet.

@echo off
  
REM IPS-Dienst wird beendet  
net stop IPSServer  
echo ###########################################  

echo 60 Sekunden warten 
@CHOICE /T 60 > NUL /D J  
echo ###########################################  

echo IPS Dienst hart beenden, falls noch nicht beendet
for /f "tokens=1,2,3,4 delims=/ " %%a in ('sc queryex IPSServer ^|FIND "PID"') do set PID=%%c
taskkill /f /pid %PID%
echo ###########################################  


echo Computer wird neugestartet
shutdown -r -f -t 10
echo ###########################################

exit

Grüße,
Chris

Hallo,

nachdem sich meine COM Ports immer wieder verabschieden und nur durch einen Neustart wieder richtig funzen, hab ich nach einem PC Neustart Skript gesucht.

Die Neustart .bat funktioniert auf dem Rechner. Leider will die IPS_Execute nicht das machen was sie soll.

<?php
<?
IPS_Execute(„C:/neustartIPS/neustart.bat“, „“, false, false);
?>

Fehlermeldung :

Parse error: syntax error, unexpected ‚<‘, expecting end of file in C:\ProgramData\Symcon\scripts\40914.ips.php on line 2

Wo ist das Problem.

Vielen Dank,
Stefan

Ich sag nur „<?php“ und „<?“ :wink:

Doppelt hält nicht besser :wink:

Viele Grüße,
Chris

:eek: f… ok…

komischerweise funktionierts auf einmal :banghead: