2023年2月12日 星期日

Batch script: 使用batch file去判斷電腦系統版本為何。

Standard

在有網域的系統環境要管理各類版本Client電腦時,需判斷各Client端的電腦並執行相應的登入script,就可以透過撰寫開機script來執行對應的相關內容;由於網路上對於如何判斷Windows10與Windows11的系統較少著墨,剛好將研究的內容給予記錄一下。


@echo off 

::從系統文件中獲取系統版本資訊

for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b

::將版本資訊賦值給變數b

set b=%b:* =%

::輸出指定值

echo %b:~0,7%

echo %PROCESSOR_ARCHITECTURE:~-1%

echo %b:~0,7%%PROCESSOR_ARCHITECTURE:~-1%

::調用指定值對應的cmd指令行

call:%b:~0,7%%PROCESSOR_ARCHITECTURE:~-1%


:5.1.2606

rem winxp

echo "Windows XP"

goto:eof


:6.1.7606

rem win7_32

echo "Windows7 32bit"

goto:eof


:6.1.7604

rem win7_64

echo "Windows7 64bit"

goto:eof


:10.0.194

rem win10

echo "Windows10"

goto:eof


:10.0.224

rem win11

echo "Windows11"



相關參考資訊:
Batch - How to differ between Windows 10 and Windows 11 in future versions

Windows Version Number Lists

bat判斷windows系統類型(台部落)





2018年5月17日 星期四

Windows 最近重大CredSSP 更新,導致遠端桌面無法直接登入問題

Standard
Win10遠端桌面無法直接登入問題?

作法一:
暫時關閉Client端的CredSSP,但有資安上的風險。 
本機群組原則編輯器 --> 系統管理範本 --> 認證委派 --> 加密Oracle補救措施 --> 選擇保護層級(易受攻擊)










Windows 重大CredSSP 更新,無法遠端暫時解決方式


作法二:
Server | Client 端需更新對應的KB,才可正常進行遠端桌面 
ex: Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) 與 Windows 7 for x64-based Systems Service Pack 1 
皆需更新下列兩支hotfix 
KB4103718 
KB4103712 
CVE-2018-0886 | CredSSP 遠端執行程式碼弱點


2017年3月15日 星期三

跳板機錄影功能製作

Standard
最近剛好有這個功能需求,找遍相關網路相關資料,原以為無解了,居然還是被我找到! 

真的是山重水複疑無路,柳暗花明又一村

https://www.experts-exchange.com/questions/24218998/Check-if-a-process-is-running-in-vbs.html

rdpre.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "run.bat", 0, True
WshShell.AppActivate "mstsc"

strcomputer = "."

strProcess = "mstsc.exe"

check1()
WScript.Sleep 2000
check1()
If check1 = True then
check2()
End if

WshShell.SendKeys "q"
WshShell.SendKeys "exit+{ENTER}"
WScript.Sleep 60000
WshShell.run "shutdown.exe -L -F"



function check1()

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process where name = 'mstsc.exe'")

For Each objProcess in colProcessList
    if objProcess.Name = strProcess Then

    check1 = True
    Else
    check1 = false
    End If
Next
i = 1
End function

sub check2()
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
    ExecNotificationQuery("select * from __instancedeletionevent " _ 
            & "within 1 where TargetInstance isa 'Win32_Process'")
i = 0

Do While i = 0
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    if objLatestProcess.TargetInstance.Name = strProcess Then
    Exit Do
    End if
Loop
End sub

run.bat
@echo off
start record.bat
c:
%windir%\system32\mstsc.exe

https://sourceforge.net/projects/screencapturer/files/
record.bat
@echo off
set /a date=%date:~0,4%%date:~5,2%%date:~8,2%
set /a time=%time:~0,2%%time:~3,2%

c:
cd C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin

ffmpeg.exe -f dshow -i video=screen-capture-recorder d:\records\%date%%time%.mp4




2017年2月20日 星期一

2014年7月29日 星期二

夏練三伏.冬練三九

Standard
各類運動項目的訓練,非常講究季節性的變化,特別是氣候與時辰的關係,會影響訓練效果。因此,中國拳家特別強調「夏練三伏,冬練三九」。這句話代代相傳成為武術諺語,本文特別述及「三伏」與「三九」的意義,並且簡略說明配合其訓練的要領。
《漢書》:伏者謂陰氣將起,迫於殘陽未得升,故為藏伏,因名伏也。 歷忌釋:伏者,何也?金氣伏藏之日也。《陰陽書》更詳細指出,候夏至後第三庚為初伏,第四庚為中伏,立秋後初庚為後伏,謂之三伏。簡單地說,三伏是農曆節候名,即初伏、中伏、後伏。一年之中最炎熱的時間是夏季的三伏天。
  所謂三九,是從冬至至次日算起,每九日一數,第一個九日為一九,第二個九日為二九,第三個九日為三九,稱作「三九天」。三九是一年中最冷的時候。
  武術家講究「夏練三伏」,是因為夏天氣溫高,筋骨關節的伸展性增大,肌肉粘滯性降低,有利於鍛鍊技術性的動作,對於技巧的提昇有莫大助益,不過,宜注意下列事項:
一、 運動前暖身雖可減少,但不能驟然做激烈練習,否則,容易造成運動傷害。
二、 練習場所適宜通風地點,否則暑氣悶鬱悶易中暑熱。
三、 所謂「避風如避箭」切忌在風口練武。因為夏天特別容易發汗,毛細孔擴大,偶有不慎,即中風邪。

  而在冬季練武,由於人體肌肉粘滯性增高,伸展性亦降低,在鍛練的目標上,要求基本體能和耐力的培養,並且注意下列事項:
一、 加強熱身運動,訓練內容由緩到快,循序漸進,待身體各部關節、韌帶、氣血活絡起來,內臟各部機能也全面動員後,才加深功課或正式的練習。
二、 由於體溫驟降,在練習中途休息時,慎防出汗溼冷、感受風寒。
三、 練習內容應減少高難度動作,而從簡單的椿步或加強肺活量、肌耐力等鍛鍊,藉以改善體質。

  事 實上,古人告誡我們「曲不離口,劍不離手」,就是強調不斷練習的重要性。雖然「一日不練,退三日功」,這句話並沒有專家去做實證性研究,但是,大抵而言, 練武者常年累月練功不輟,則是達到高深技藝的不二法門。若是在嚴冬及酷暑的氣候下,亦能堅持不懈怠,對毅力和恆心的鍛鍊,以及體能技巧的培養,當然會有良 好的功效。(此為節錄自「國術名詞探索」第83~84頁)

2012年2月10日 星期五

透過T-SQL script語法檢視Server系統資源

Standard
-- Identify Virtual Processors in for SQL Server 2005, 2008, 2008R2, 2012
SELECT cpu_count FROM sys.dm_os_sys_info GO

-- Identify Virtual Processors in for SQL Server 2000
CREATE TABLE #TempTable ([Index] VARCHAR(2000), [Name] VARCHAR(2000), [Internal_Value] VARCHAR(2000), [Character_Value] VARCHAR(2000)) ; INSERT INTO #TempTable EXEC xp_msver; SELECT Internal_Value AS VirtualCPUCount FROM #TempTable WHERE Name = 'ProcessorCount'; DROP TABLE #TempTable GO

上述的只能看CPU數,下面則還可檢視記憶體大小。

SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS Hyperthread_Ratio, cpu_count/hyperthread_ratio AS Physical_CPU_Count, physical_memory_in_bytes/1048576 AS Physical_Memory_in_MB, sqlserver_start_time, affinity_type_desc -- (affinity_type_desc is only in 2008 R2) FROM sys.dm_os_sys_info

 








2011年12月8日 星期四

2011年11月28日 星期一

2010年12月13日 星期一

2010年6月5日 星期六

不從特定 IP 不准某帳號登入 SQL Server

Standard

CREATE TRIGGER [connection_limit_trigger]
ON ALL SERVER
WITH EXECUTE AS 'I7\Administrator'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'a' AND
not exists (SELECT * FROM sys.dm_exec_connections
WHERE client_net_address = '127.0.0.1'
and session_id=@@SPID)
ROLLBACK;
END;

--ENABLE TRIGGER [connection_limit_trigger] ON ALL SERVER

2009年12月16日 星期三

T-SQL 語言基礎與資料類型

Standard
T-SQL語言所包含的語法元素

註解

  • -- 雙連字號:從雙連字號開始到該行結尾之間,全部都是註解的一部分。
  • /*...*/ 斜線-星號字元配對:從開始註解配對/*到結束註解配對*/之間,全部都是為註解的一部分。

GO:代表批次的結尾。

識別碼

資料庫物件名稱又稱為 識別碼(identifiers)。SQL Server中每個物件都具有識別碼,例如,伺服器、資料庫與資料庫物件(資料表、資料行、索引、條件約束、規則、觸發程序、檢視、預存程序,函數...等)都有識別碼。

  • 一般識別碼:@本機變數或參數,@@部分T-SQL功能名稱,#暫存資料表或預存程序,##全域暫存物件,且識別碼不可以是大小寫的T-SQL保留字,不允許內嵌空格或特殊字元。
  • 分隔識別碼:在T-SQL陳述式中使用識別碼時,如果識別碼與上述規則不符,則必須使用雙引號("")或方括號([])加以分隔。
    MSSQL2008預設 QUOTED_IDENTIFIER選項為ON,表示雙引號只能用來括識別碼,單引號則是用來括字串,且當字串當中有(')單引號時,需以兩個單引號('')表示。
    SELECT * FROM "My Product Table"
    WHERE "Product Name" = 'A''Box'

    若QUOTED_IDENTIFIER為OFF,則雙引號不能用來分隔識別碼,需使用方括號([]),但可以使用單引號或雙引號來括住字元字串,如果使用雙引號,則不必再使用兩個單引號來表示嵌的單引號。
    SET QUOTED_IDENTIFIER OFF
    SELECT * FROM [My Table]
    WHERE [Last Name] = "O'Brien"

運算子

算術運算子:+-*/ 比較運算子:= > < >= <= <>
邏輯運算子:大多用於WHERE子句,AND OR NOT BETWEEN EXISTS IN LIKE
指派運算子:= 字串串連運算子:+ 位元運算子:&(位元AND) (位元OR) ^(位元XOR)
一元運算子:+(正) -(負) ~(位元NOT)

資料類型

mssql2008新增資料類型:
date、Time、Datetimeoffset、varchar(Max)、Nvarchar(Max)

字串數字 --> 數字
字串日期 --> 日期 (自動轉型,反之則需用convert函數做轉換)
select convert (varchar,1)+'A'
declare @a datetime = '2009-10-20 08:10:50 PM'
select convert(varchar,@a,103)

貨幣資料:小數點第四位後,四捨五入。

Round函數
ROUND (數值運算式, 長度, 功能)
長度為正數指小數點右邊,為負數指小數點左邊;
功能預設是0,表示要四捨五入,若為非0則無條件捨去。
select ROUND(15.4562, 2) ans: 15.4600
select ROUND(15.4562,1) ans: 15.5000
select ROUND(1482.25,-2) ans: 1500.00
select ROUND(45.45, 1,1) ans: 45.40

2009年12月15日 星期二

MSSQL 2008 - 認識sqlcmd

Standard
透過sqlcmd command line指令,可以達到程式化部署系統、某些例行性批次作業需要在每天下班後進行(如資料轉檔),常見做法是先將T-SQL陳述式儲存為*.sql檔案,然後以作業系統的排程功能自動執行。換句話說,利用【sqlcmd公用程式】與SQL Server資料引擎溝通,可以讓使用者互動地執行T-SQL陳述式,或是指定T-SQL指令碼檔案,週期性在背景批次執行,一些日常營運維護的工作,將會需要此種方式完成。

各版本所提供的命令提式公用程式
sqlcmd.exe OLE-DB MSSQL2005、2008
osql.exe ODBC MSSQL 7、2000
isql.exe DL-Library MSSQL6.5

MSSQL2005、2008新增功能
  • 指令變數:在sqlcmd中利用 -v 選項或是setvar命令,使用自訂變數,動態存取系統的環
    境變數、伺服器端的資訊與回傳相關錯誤訊系等。
  • 管理者專用連線(Dedicated Administrator Connection;DAC):在sqlcmd利用 -A選項,允
    許資料庫管理者藉此專屬的通道,連線到伺服器上進行系統修復作業。

指令簡介

sqlcmd /? 顯示sqlcmd公用程式所支援的參數

sqlcmd -S Server_Name -U 登入帳號 -P 密碼 登入特定MSSQL Server指令

!!指令名稱 執行Windows作業系統命令 (ex: !!dir)

sqlcmd -i C:\script01.sql -o C:\Report01.txt 將script01.sql執行結果令存到Report01.txt檔

Exercise:使用變數進行T-SQL script的執行
script02.sql
USE $(db1)
GO
select $(c1)
FROM $(t1)
GO

從client端PC連入MSSQL Server執行script
sqlcmd -S TESTServer -U sa -P 123456 -i c:\script02.sql -o c:\report02.txt -v db1="Northwind" c1="name" t1="sys.tables"


網路資源
sqlcmd 公用程式(mssql2005線上叢書)
sqlcmd 公用程式(mssql2008線上叢書)

2009年3月23日 星期一

2009年3月7日 星期六

2008年11月9日 星期日

線上收聽音樂的好網站 StraemDrag

Standard


相當方便的音樂播放器,不提供音樂檔案的下載,就如同KKBOX那樣,它只允許線上收聽。這個網站使用了YouTube的影片與音樂,作為搜尋的資料來源。透過重新設計過的使用者介面,完美的詮釋了作為一個音樂播放器該有的簡單功能,搜尋音樂、加入音樂清單、重複播放。

http://streamdrag.com/

2008年2月24日 星期日

2007年3月16日 星期五