Script uitvoeren bij afsluiten/afmelden

Pagina: 1
Acties:
  • 4.291 views

Acties:
  • 0 Henk 'm!

  • joep1222
  • Registratie: Maart 2010
  • Laatst online: 15-06 15:45
Ik heb hier thuis een computer die 24/7 aanstaat. Deze moet natuurlijk eens in de zoveel tijd voor bijvoorbeeld update's opnieuw opstarten.
Sinds kort heb ik op deze computer ook een virtual machine draaien via VMware player.
Als de computer voor bijvoorbeeld update's nu opnieuw opstart komt deze niet verder dan "1 programma moet nog worden gesloten: " dit is de virtual machine en sluit de computer dus ook niet af.

Nu heb ik voor het opstarten al een bat-scriptje gemaakt zodat de virtual machine automatisch wordt opgestart als windows wordt opgestart met behulp van VMware VIX. Dit gebeurd met de volgende regel:
"D:\Programmas\VIX VMware\vmrun.exe" start "D:\Gebruikers PC\Windows 7.vmx"
Dit werkt perfect.
Voor het afsluiten heb ik ook een scriptje gemaakt:
"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
Ook dit werkt perfect als ik deze met de hand uitvoer.

Nu wil ik dat het afsluit script wordt uitgevoerd als windows van de host pc ook afsluit. Ik heb geprobeerd dit in de groups policy te zetten onder computerconfiguratie -> windows-Instellingen -> Scripts(Opstarten/Afsluiten) en onder Gebruikersconfiguratie -> windows-Instellingen -> Scripts(Aanmelden/Afmelden).

Echter dit wordt pas uitgevoerd nadat de melding van 1 programma moet nog worden afgesloten verdwenen is (dus de virtual machine al afgesloten is).

Hoe kan ik ervoor zorgen dat dit script meteen wordt uitgevoerd als bijvoorbeeld het commando shutdown.exe /r wordt gebruikt of als windows update opnieuw wilt opstarten, zonder dat ik eerst handmatig de VM moet afsluiten.

Met vriendelijke groet,

Joep1222

Acties:
  • 0 Henk 'm!

  • HomePlayer
  • Registratie: Maart 2005
  • Laatst online: 31-08-2022

Acties:
  • 0 Henk 'm!

  • joep1222
  • Registratie: Maart 2010
  • Laatst online: 15-06 15:45
Beste HomePlayer,

Dit heb ik al geprobeerd. Het probleem hiermee is dat dit script pas wordt uitgevoerd als de programma's al afgesloten zijn (dus ook de virtual machine). Maar het script zorgt er juist voor dat de virtual machine wordt afgesloten, zodat windows ook kan worden afgesloten.

Acties:
  • 0 Henk 'm!

  • SiC123
  • Registratie: Februari 2007
  • Laatst online: 17-06 06:58
Ik heb het met /R (reboot) nooit geprobeerd, maar met /S (shutdown) kun je er een timer aan hangen.
The list of shutdown options include:

No args Display help. This is the same as typing /?.
/? Display help. This is the same as not typing any options.
/i Display the graphical user interface (GUI). This must be the first option.
/l Log off. This cannot be used with /m or /d options.
/s Shutdown the computer.
/r Full shutdown and restart the computer.
/g Full shutdown and restart the computer. After the system is rebooted, restart any registered applications.
/a Abort a system shutdown. This can only be used during the time-out period.
/p Turn off the local computer with no time-out or warning. Can be used with /d and /f options.
/h Hibernate the local computer. Can be used with the /f option.
/hybrid Performs a shutdown of the computer and prepares it for fast startup. Must be used with /s option.
/e Document the reason for an unexpected shutdown of a computer.
/o Go to the advanced boot options menu and restart the computer.
/t xxx Set the time-out period before shutdown to xxx seconds. The valid range is 0-315360000 (10 years), with a default of 30.
/c Comment on the reason for the restart or shutdown. Maximum of 512 characters allowed.
/f Force running applications to close without forewarning users.
/d Provide the reason for the restart or shutdown.
Misschien als je hem even de tijd geeft in met voordat de reboot geactiveerd wordt dat het dan is opgelost?
Misschien dat /F helpt?

Acties:
  • 0 Henk 'm!

  • joep1222
  • Registratie: Maart 2010
  • Laatst online: 15-06 15:45
SiC123, Bedankt voor het antwoord, maar ook dit is niet de bedoeling. De virtuele machine moet wel goed kunnen afsluiten en als een ander programma de host computer om wat voor reden dan ook wil afsluiten kan deze er ook geen tijd aan verbinden, dus moet het script nog voor het commando shutdown.exe in principe worden uitgevoerd.

Ik ben nog is aan het proberen geweest en heb uiteindelijk in system32 het bestandje shutdown.exe naar shutdown2.exe veranderd. Vervolgens heb ik een nieuw exe bestand gemaakt met de naam shutdown waar de volgende regels in staan:

"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
C:\windows\system32\shutdown2.exe /r

Dus alle programma's roepen nu de nieuwe shutdown.exe aan en die op zijn beurt weer de orginele shutdown.exe.

Dit werkt na een aantal testen te hebben uitgevoerd goed.
Nu ga ik dit nog verder aanpassen, zodat als er eventueel door een programma andere parameters worden doorgegeven aan het bestandje shutdown.exe deze ook kunnen worden gebruikt in plaats van alleen /r.

Voor mijn idee moet dit dan verder geen problemen geven.

[ Voor 5% gewijzigd door joep1222 op 22-01-2015 15:19 ]


Acties:
  • 0 Henk 'm!

  • HomePlayer
  • Registratie: Maart 2005
  • Laatst online: 31-08-2022
joep1222 schreef op donderdag 22 januari 2015 @ 15:18:
Ik ben nog is aan het proberen geweest en heb uiteindelijk in system32 het bestandje shutdown.exe naar shutdown2.exe veranderd. Vervolgens heb ik een nieuw exe bestand gemaakt met de naam shutdown waar de volgende regels in staan:

"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
C:\windows\system32\shutdown2.exe /r

Dus alle programma's roepen nu de nieuwe shutdown.exe aan en die op zijn beurt weer de orginele shutdown.exe.
.
Hmm, natuurlijk, slim gevonden. ga ik proberen te onthouden. <--- ook wel eens bezig met VM's die ik dan vergeet af te sluiten.

Dank voor deze oplossing :)

Acties:
  • 0 Henk 'm!

  • joep1222
  • Registratie: Maart 2010
  • Laatst online: 15-06 15:45
joep1222 schreef op donderdag 22 januari 2015 @ 15:18:
SiC123, Bedankt voor het antwoord, maar ook dit is niet de bedoeling. De virtuele machine moet wel goed kunnen afsluiten en als een ander programma de host computer om wat voor reden dan ook wil afsluiten kan deze er ook geen tijd aan verbinden, dus moet het script nog voor het commando shutdown.exe in principe worden uitgevoerd.

Ik ben nog is aan het proberen geweest en heb uiteindelijk in system32 het bestandje shutdown.exe naar shutdown2.exe veranderd. Vervolgens heb ik een nieuw exe bestand gemaakt met de naam shutdown waar de volgende regels in staan:

"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
C:\windows\system32\shutdown2.exe /r

Dus alle programma's roepen nu de nieuwe shutdown.exe aan en die op zijn beurt weer de orginele shutdown.exe.

Dit werkt na een aantal testen te hebben uitgevoerd goed.
Nu ga ik dit nog verder aanpassen, zodat als er eventueel door een programma andere parameters worden doorgegeven aan het bestandje shutdown.exe deze ook kunnen worden gebruikt in plaats van alleen /r.

Voor mijn idee moet dit dan verder geen problemen geven.
Na nog wat testen werkt dit niet helemaal. Ik had eerst alleen getest met uitvoeren en daarin het commando shutdown uit te voeren. Nu probeer ik het met de "officiele" afsluit knop en op een of andere manier werkt het dan niet meer. De windows programma's gebruiken dus helaas een ander bestand dan shutdown.exe. Iemand een idee welke dit kan zijn?

Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 23:26
Draait je VM niet als een "service" op de machine maar in je "userspace"?
Normaal gesproken (ik doe eigenlijk alleen maar virtualisatie op servers en een paar testVMs in Hyper-V in Windows 8.1) en de VMs draaien hier als een service waardoor ik nooit een melding zal krijgen mbt nog een openstaad programma wanneer ik een shutdown of een logoff doe.

Acties:
  • 0 Henk 'm!

  • Axewi
  • Registratie: Maart 2009
  • Laatst online: 18-06 15:00
Kan je dat niet een bat bestand maken met de volgende regels?
@echo off
"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
ping 127.0.0.1 #ping duurt ruw weg 1 sec per ping dus 4 totaal herhaal de ping zovaak als jij denkt dat het duurt voor het commando om de vm af te sluiten (60 sec?)
shutdown -t 1 # afsluiten host pc


noem dit bestandje shutdown.bat ofzo en ipv de startknop te gebruiken voor afsluiten gebruik je gewoon dit bat bestand.

PS: om opnieuw op te starten gebruik je: shutdown -r -t 1

Ik zit het te denken dat dos niet snapt wat ie moet met de 2e regel als dat zo is dan zou je het bestand moeten aanpassen door eerst naar je vmware directory te gaan.
ongeveer zo:
@echo off
d:
cd "D:\Programmas\VIX VMware\"
vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"

[ Voor 25% gewijzigd door Axewi op 22-01-2015 17:04 ]

Als de lat te hoog ligt kun je er nog altijd onderdoor lopen.


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

kun je niet met getstate wachten todat de machine echt uit is ?
https://pubs.vmware.com/v...ref.doc%2Fvmware-cmd.html

Iperf


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 23:26
Axewi schreef op donderdag 22 januari 2015 @ 16:54:
Kan je dat niet een bat bestand maken met de volgende regels?
@echo off
"D:\Programmas\VIX VMware\vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
ping 127.0.0.1 #ping duurt ruw weg 1 sec per ping dus 4 totaal herhaal de ping zovaak als jij denkt dat het duurt voor het commando om de vm af te sluiten (60 sec?)
shutdown -t 1 # afsluiten host pc


noem dit bestandje shutdown.bat ofzo en ipv de startknop te gebruiken voor afsluiten gebruik je gewoon dit bat bestand.

PS: om opnieuw op te starten gebruik je: shutdown -r -t 1

Ik zit het te denken dat dos niet snapt wat ie moet met de 2e regel als dat zo is dan zou je het bestand moeten aanpassen door eerst naar je vmware directory te gaan.
ongeveer zo:
@echo off
d:
cd "D:\Programmas\VIX VMware\"
vmrun.exe" suspend "D:\Gebruikers PC\Windows 7.vmx"
Ipv een batchfile kan de ts dan beter een Powershell script gebruiken met een test-connection (ping equivalent in PS) icm een "while" loop.
komt neer op "while host is pingable keep pinging", zodra de machine niet meer te pingen is loopt het script vanzelf weer door.

Scripten op Windows machines behoort anno 2015 niet meer in een .bat, .cmd of een .vbs file ; hier heeft men namelijk powershell voor uitgevonden.

Mocht de ts het nodig vinden dan kan ik wel een simpel scriptje in elkaar zetten.

Welk os (en welke editie) gebruikt de TS overigens als host?

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Killah_Priest schreef op donderdag 22 januari 2015 @ 17:58:
[...]


Ipv een batchfile kan de ts dan beter een Powershell script gebruiken met een test-connection (ping equivalent in PS) icm een "while" loop.
komt neer op "while host is pingable keep pinging", zodra de machine niet meer te pingen is loopt het script vanzelf weer door.

Scripten op Windows machines behoort anno 2015 niet meer in een .bat, .cmd of een .vbs file ; hier heeft men namelijk powershell voor uitgevonden.

Mocht de ts het nodig vinden dan kan ik wel een simpel scriptje in elkaar zetten.

Welk os (en welke editie) gebruikt de TS overigens als host?
Dat de vm niet meer te pingen is betekend niet dat de vm al uit is he.
ik zou getstate gebruiken

Iperf


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 23:26
Fish schreef op donderdag 22 januari 2015 @ 19:23:
[...]


Dat de vm niet meer te pingen is betekend niet dat de vm al uit is he.
ik zou getstate gebruiken
Na het niet pingen zijn een start-sleep van 30 - 60 seconden zou dan ook werken.
Ik ben niet bekend met de cmd tools voor Vmware ; volgens mij zijn er ook gewoon powershell addins of modules voor Vmware, hiermee zou het natuurlijk erg simpel zijn om verder te scripten (en anders wordt het cmdline tools parsen en omzetten naar PS objecten, heb ik bv ook gedaan voor VSSAdmin in Windows Server, scriptje gemaakt om de VSS writer status te parsen en om te zetten naar PS objecten ivm auto-remediation van "stuck writers")

Acties:
  • 0 Henk 'm!

  • Axewi
  • Registratie: Maart 2009
  • Laatst online: 18-06 15:00
Fish schreef op donderdag 22 januari 2015 @ 19:23:
[...]


Dat de vm niet meer te pingen is betekend niet dat de vm al uit is he.
ik zou getstate gebruiken
voor zover ik weet heeft cmd geen "pauze of sleep" commando dus laat ik het scriptje pauzeren door um te laten pingen naar zichzelf, niet de vm.

Als de lat te hoog ligt kun je er nog altijd onderdoor lopen.


Acties:
  • 0 Henk 'm!

  • Johan9711
  • Registratie: Maart 2013
  • Laatst online: 21:00

Johan9711

Verslaaft aan Tweakers

Mijn tweakblog: http://johan9711.tweakblogs.net/


Acties:
  • 0 Henk 'm!

  • joep1222
  • Registratie: Maart 2010
  • Laatst online: 15-06 15:45
Bedankt voor alle antwoorden!

Ik heb uiteindelijk de oplossing van Killah_Priest gebruikt. Nu draait de VM als service via alwaysup en nu sluit de VM ook af als de computer afsluit.

Het pingen van de virtual machine was ook een goede optie, maar het probleem was juist dat de VM het afsluiten verhinderde, doordat deze niet ging afsluiten.

Acties:
  • 0 Henk 'm!

  • Tazmanian79
  • Registratie: Oktober 2009
  • Laatst online: 07-06 15:26
Ik zou een bestand (archive.pst van Outlook) willen kopieren naar mijn NAS wanneer mijn PC (windows 8.1) wordt afgesloten.

Het .bat bestand heb ik aangemaakt en dat werkt. Nu moet het enkel worden uitgevoerd wanneer de PC wordt afgesloten, en het bestand moet natuurlijk eerst volledig zijn gekopieerd (momenteel 10Gb) voordat de PC daadwerkelijk wordt afgesloten.

Is dit mogelijk met de windows taakplanner?

Had eerst geprobeerd om de taak uit te voeren bij opstarten van de PC, maar probleem is dan dat wanneer je Outlook opstart het archive bestand in gebruik is en Outlook dit niet kan openen, dus dat is ook geen optie.

Acties:
  • 0 Henk 'm!

  • TheVMaster
  • Registratie: Juli 2001
  • Laatst online: 22:37

TheVMaster

Moderator WOS
Eh...misschien even een nieuw eigen topic aanmaken voor je issue?
Pagina: 1

Dit topic is gesloten.