Forum
Merhabalar,
Çalışmış olduğum şirkette her gün saat 18:00 dan sonra 40 dk boyunca işlem yapılmayan client'lerin otomatik olarak shut down olması istenmektedir. Bunun için önerecek oldugunuz ücretsiz 3 party program yada gpo üzerinden yapmanın bir yolu varmıdır?
Konu biraz acildir yardımlarınızı rica ederim.
teşekkür ederim sanırım bu ihtiyacımın tam olarak karşılığı test edip bilgi paylaşırım.
İyi günler.
Okey, test edip geri dönüşünüzü bekliyorum.
Merhab Ufuk Bey,
; Auto Restart
; AutoIt Version: 3.0
; Language: English
; Platform: Win XP Embedded
; Author: fctd
; Revision: 1.0
; Script Function: Automatic shutdown of a PC at 03:00:00 hours
; indude library
#include <GuiConstantsEx.au3>
#include <Date.au3>
#include <WindowsConstants.au3>
;
; define global variables
Global $iMemo
Global $nRestartHour = 3
; message
$answer = MsgBox(0, "Forced shutdown", "This script will automaticly shutdown the pc at 03:00:00 hours.",15)
; Run Functions
Display()
Main()
ShuttingDown()
; Main program loop
Func Main()
Do
; wait until it's time to restart the PC
if (@HOUR = $nRestartHour And @MIN = 0 AND @SEC = 0) Then
ExitLoop
EndIf
; check if newcs is succesfully restarted, else restart newcs.
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc
; Shut down function
Func ShuttingDown()
;Shutdown(5) ;Force a shutdown
MsgBox(0, "Automatic program", "!! Shutting down !!",15)
EndFunc
; Show display
Func Display()
Local $hGUI, $tCur, $tNew
; Create GUI (Graphical User Interfaces)
$hGUI = GUICreate("Auto Restart", 400, 300)
$iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
GUISetState()
; Get current system time
$tCur = _Date_Time_GetLocalTime()
MemoWrite("Program started at: " & _Date_Time_SystemTimeToDateTimeStr($tCur))
MemoWrite("")
MemoWrite("This PC will shutdown at 03:00:00 hours or when this message is closed")
EndFunc
; Write a line to the memo control
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF,1)
EndFunc
Belirttiğiniz sayfada yukarıdaki script mevcut bunu ben kendime uyarlamaya calıstım biraz karıstım yardımcı olabilirmisiniz? Hergün saat 18:00 ' dan sonra eğer pc 40 Dakkika boşta ise shutdown olacak.
Bide bunun uzantısı ne olcak au3 mü? Anladıgım kadarıyla bunu gpo üzerinden startup a yerleştircem, böylelikle her loginde scrip'i güncelliyecek.
Merhaba,
Birde pc'nin 18'den sonra 40 dk boşta kalma süresini ayarlamam gerekecek saat 18 den sonra eğer 40 dk hareketsiz kalırsa shutdown olması gerekli pc'nin ve en son olarak bu dosyanın uzantısını .bat olarak mı ayarlamam gerekecek? Script konusunda biraz deneyimsizim yardımlarınızı bekliyorum.
Teşekkürler iyi çalışmalar.
Merhabalar Aloneman,
Aşağıdaki anlatım işinizi görecektir.
Merhaba,
İlginiz için teşekkür ederim clientler xp ve bunu DC üzerinden yapmam gerekli çünkü client sayısı bi hayli fazla buradaki anlatımı DC üzerinden yapmam mümkünmüdür acaba?
Teşekkürler iyi çalışmalar.
computer configuration \ preferences \ control panel settings \ scheduled tasks yollarını izleyerek gpo üzerinden yeni bir scheduled tanımladım. Bakalım şimdi test asmasındayım.
Teşekkürler iyi çalışmalar.
Hazırladıgım policy client in almasını sağladım fakat scheduler altına gelmiyor gpresult yazdıgımda gpo nun cekildiğini görüyorum he birde gpo report una baktıgımda
An error has occurred while collecting data for Scheduled Tasks.
The following errors were encountered: |
---|
An unknown error occurred while data was gathered for this extension. şeklinde gözüküyor. Sorun nedir acaba? |
Biraz geç yazdım ama yettim gayri 🙂
Öncelikle yazdığınız hatanın sebebi oluşturduğunuz schedule task'ın ayarlarının bulunduğu xml dosyasındaki eksikliklerden kaynaklanıyor. Tahminimce Client'ların kullanıcı ayarlarıyla ilgili bir sorun.
Yapmak istediğiniz uygulama için alternatif olarak aşağıdaki gibi bir şey yaptım, belki işinizi görür 🙂
Uygulama iki dosyadan oluşuyor ve bu iki dosyayı bir kez çalıştırmanız yeterli.
Shedule.cmd dosyasının içerisinde 2 satırdan oluşan bir komut dizisi bulunuyor. Herhangi bir demo bilgisayarda her iki satırıda sırayla deneyin. Dil yapılandırması gereği biri hata verecektir. Hata vermeyen satırı cmd uzantılı dosyaya kaydedip bütün client'larda çalıştırın.
Bu arada shedule oluşturmaya çalıştığım sırada belirttiğiniz şekilde saat 18:00'dan sonra 40 dakikalık süre zarfında idle moddaysa kapansın olayını yapamadım. Sistem hem belli bir süreye ayarlanmış, hemde sistem boştayken çalış şeklinde bir zamanlayıcıyı kabul etmiyor. Bu sebepten saat 18:10'dan sonra 40 dakika sonunda kapanması için ayarladım. Bununla birlikte ikinci oluşturduğum ask.cmd dosyasının amacı saat 18:10'dan sonra bilgisayar başında bir kullanıcı olması durumunda bilgisayarın kapatılmaya ayarlandığını bunu onaylayıp onaylamadığını sorması.
Elbette ne olur ne olmaz diye demo bir bilgisayarda bir süre gözlemledikten sonra uygulamanız daha iyi olur.
Shedule.cmd
------------------------------------------------------------
schtasks /CREATE /RU System /sc GÜNLÜK /st 18:10 /tn Shutdown /tr "shutdown -s -f -t 2400 && C:\Windows\ask.vbs"
schtasks /CREATE /RU System /sc DAILY /st 18:10 /tn Shutdown /tr "shutdown -s -f -t 2400 && C:\Windows\ask.vbs"
------------------------------------------------------------
Ask.cmd
------------------------------------------------------------
echo Dim objNet, objShell >C:\Windows\ask.vbs
echo Set objNet = CreateObject("WScript.NetWork") >>C:\Windows\ask.vbs
echo Dim strPcName >>C:\Windows\ask.vbs
echo strPcName = objNet.ComputerName >>C:\Windows\ask.vbs
echo set objShell = wscript.createObject("wscript.shell") >>C:\Windows\ask.vbs
echo strCancel = "shutdown -a" >>C:\Windows\ask.vbs
echo intAnswer = _ >>C:\Windows\ask.vbs
echo Msgbox("Bilgisayarınız 40 Dakika Sonra Kapatılacaktır. Bu İşlemi İptal Etmek İster misiniz?", _ >>C:\Windows\ask.vbs
echo vbYesNo, "Kapatma Uyarısı") >>C:\Windows\ask.vbs
echo If intAnswer = vbYes Then >>C:\Windows\ask.vbs
echo objShell.Run strCancel >>C:\Windows\ask.vbs
echo Set objNet = Nothing >>C:\Windows\ask.vbs
echo Else >>C:\Windows\ask.vbs
echo End If >>C:\Windows\ask.vbs
------------------------------------------------------------
🙂 teşekkür ederim şimdi bir client'te test edicem bu arada bu cmd dosyalarının her login'de start olmasımı gereklidir acaba? Birde domain ortamı oldugu için standart user'lar bunu start edemeyebilirler bu cmd uzantılı dosyaları admin user'la start etmemmi gerekecek?
Gpo üzerinden her kullanıcının startup una koymam ve adminle başlamasını sağlamam bu sorunu asar sanırım. Deneyip görücez.
Merhaba,
Belirttiğiniz cmd dosyalarının 2 sinide çalıştırdım herhangi bir işlem gerçekleşmedi 🙁
Bilgilerinize,
İyi çalışmalar.
Merhaba,
Çözümpark hocalarımızın bence bu konuya el atması ve güzel acıklayıcı bir makale yazması gerekli malum elektirik kullanımını en aza indirmemiz gereken zamanlardayız artık küresel ısınmalar ve cep yakan faturalardan kurtulabilmek için. Şöyle bir yol izledim ama tam olarak yapamadım C:\Windows\System32\shutdown.exe -s -t 00 kodunu cmd dosyası olarak kaydettim ve buna bir scheduled Task atadım ve bu taskın içeriğinde yanlızca 40 dk idle kalır ise başlat olarak işaretledim. Şu anda client üzerinde lokalde bu çalışır durumda fakat bunu gpo üzerinden tüm clientlerin task'ına atmaya calıstıgımda
An error has occurred while collecting data for Scheduled Tasks.
The following errors were encountered:
An unknown error occurred while data was gathered for this extension. Details: Could not find a part of the path '\\server.domain.local\SysVol\domain.local\Policies\{528DE09A-D378-4274-B8DF-201F1F8E329E}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml'.
şeklinde hata vermeye devam ediyor.
Hocalarımızdan bu konuda yardım bekliyorum.
Teşekkürler iyi çalışmalar.
arkadaşım uzzaktaki makinanın boşta olup olmadığını nasıl bilebilirsin ?
böyle bir şey yok.
belli saat verip kapatacaksın.
makinanın boşta olup olmadığını şöyle ayarlayabilirsin.
bu scripti exe ye çevir SCR uzantısına dönüştür.
makinada bu scr yi ekran koruyucu ayarla
makinanın 40 dk boşta kalma durumunda ekran koruyucu olarak bunu çalıştıracaktır.
Bu durumda saat 18 i geçmişse makina kapanacaktır.
Makinanın lokaline task atıyorum tasın içeriğinede sadece 40 dk idle ise başla diyorum bu mümkün.
benimde aradığım buydu bir çözüm olursa memnun olurum
Tekrar merhaba,
scheduled task olarak tanımladım scheduled task üzerinden 40 dk boş kalırsa calıstır dedim bu çalıştı sorun yok. 40 dk süresinde bir işlem yapılırsa çalıştırma dedim buda çalıştı yani işlem yapıldıgı sürece pc kapanmadı. Tekrar scheduled task'da su kadar süre sonra aynı işlemi tekrarla ayarını yapamadım yani yaptıgımı düşünüyorum fakat devreye girmiyor. scheduled task konusunda takıldım su anda scheduled task konusunda yardıma ihtiyacım var eğer bunuda aşabilirsem ihtiyacımı tam olarak karsılamıs olucam.
Acil yardım pls scheduled task da işlemi tekrarlatmanın bir yolu yokmu acaba? Benmi yanılıyorum var oldugunu biliyorum ama...