簡體   English   中英

Powershell在特定時間啟動

[英]Powershell launch at specific times

我正在構建一個系統以出於修補目的重新啟動計算機。 大多數框架都在那里並且可以正常工作,我使用工作流和一些功能來允許我捕獲錯誤並以多種方式在發生故障的情況下重新啟動系統。

我不確定的一件事是如何設置時間。 我正在使用一個Web界面,人們可以在其中安排動態(一次)或定期(每月)重新啟動。 引導的服務器信息和時間存儲在SQL數據庫中。

我缺少的部分是如何在計划時觸發重新啟動。 我能想到的是允許整小時遞增,並每小時運行一次腳本以檢查數據庫中是否有任何服務器的重新啟動時間與當前時間“匹配”。 這可能會起作用,但有點不靈活。

誰能想到更好的方法? 某種守護程序?

例如,用戶X分配了300台服務器。 他希望每個星期五晚上10點重新啟動200次,每月星期六晚上11點一次重新啟動200次。 將有十幾個用戶重新啟動3000-4000台計算機,有時每月重新啟動幾次。

好的,假設您有一個以日期和時間為參數的腳本,該腳本將根據該特定日期和時間或計划或要存儲在sql數據庫中的內容來查找要重啟的計算機。指定多長時間重新啟動一次。 為了我不太了解sql,我們假裝這是功能性的(將需要Invoke-AdoCommand cmdlet的PowerShell Community Extensions管理單元):

[cmdletbinding()]
Param([string]$RebootTime)

$ConStr = 'Data Source=SQLSrv01;Database=RebootTracking;Integrated Security=true;'
$Query = "Select * from Table1 Where Schedule = $RebootTime"
$Data = Invoke-AdoCommand -ProviderName SqlClient -ConnectionString $ConStr -CommandText $Query
$data | ForEach{Do things to shutdown $_.ServerName}

您說您已經設置了重新啟動服務器的設置,所以我什至沒有真正嘗試過。 然后,您要做的就是為應該重新引導任何服務器的時間設置一個Scheduledjob:

Register-ScheduledJob –FilePath \\Srv01\Scripts\RebootServers.ps1 –Trigger @{Frequency=Weekly; At="10:00PM"; DaysOfWeek="Saturday"; Interval=4} -ArgumentList @{'RebootTime'="Day=Saturday;Weeks=4;Time=22:00"}

那是一個例子,但是您知道,您可能可以使用它來滿足您的需求。 這將每四個星期六(大約每月一次)運行一次。 該計划任務將查詢sql server,以將字符串與字段進行匹配,實際上,您可以通過任何方式設置該格式,以使其符合匹配的特定要求或常規要求。 這樣,一項任務可以重新啟動這200台服務器,而另一項任務可以重新啟動其他50台服務器,這完全取決於用戶的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM