2018-03-30

How to Kill a Hanging Hyper-V VM


$VMName = Read-Host "Enter VM Name"

$VM = $(Get-VM | where {$_.Name -eq "test"} | select-object  -ExpandProperty VMId).Guid
if ($VM.Count -ne 1) {
write-host "Not Found"
} else {
$ProcessId = $(Get-WmiObject win32_process -Filter "name like '%vmwp%'" | where {$_.CommandLine -like "*$($VM)*"} | select ProcessId).ProcessId
$ForceKill = Read-Host "Found ProcessID: $ProcessId, Force Kill? (Y/N)"
if ($ForceKill -eq "y" -or $ForceKill -eq "Y") {
Stop-Process $ProcessId -Force
}
}

2018-03-23

Windows 10 變更預設瀏覽器小程式 Change Default Browser

因為不知名的原因, Windows 10 的環境下點擊 Outlook 信件中的超連結時
出現了這個很冏的視窗


哪裡冏呢? 他沒有提供 IE 或 Chrome 或任何已經安裝好的瀏覽器給人選
一定要自己去 [設定] 裡面選才行
而這個問題不是單一事件, 有許多人都遇到了

2018-03-22

Client 連接 RDS 時出現 [無法執行憑證的撤銷檢查] 錯誤

遇到一個奇怪的問題
某幾台 Windows 7 在連接 RDS (Remote Desktop Service) 的時候
不知何故會出現下圖:

錯誤為: 無法執行憑證的撤銷檢查

英文為: A revocation check could not be performed for the certificate



憑證撤銷清單是以 http Web 的方式提供, 其他 Client 完全正常
且這台有問題的 Windows 7 也確認可以用 Browser 正確取得憑證撤銷清單


2018-03-15

Reset Remote Desktop Service Grace Period

有時候我們必須測試 Remote Desktop Service
但是測試階段老闆可能不會答應你買 Terminal License
必須要測試出成果確認可行後, 寫一篇文情並茂的建議案附上測試成果老闆才會勉強點頭
微軟很佛心的提供 120 天的 Remote Desktop Service License 緩衝期
在 120 天之內除了會在狀態列跳訊息出來罵你提醒你以外, 都讓你隨便用
但是到 120 天後就會禁止登入, 只有 Local Administrator 能用 Console 登入了

但是往往我們在測試初期架設就花掉一、兩個月
Pilot Run 又花了一個月才完成教學
接著種子們又以工作很忙為由拖拖拉拉 (你也不好意思催促)
結果過了 120 天又要重頭安裝一次, 真是練習的好機會麻煩

其實可以經由修改註冊機碼來延長這個 120 天期限, 辦法如下:

先將註冊機碼 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod 的 Owner 及 Permission 修改為 Local Administrators

2018-03-13

VBScript String Encode / Decode

VBScript String Encode / Decode
出處 https://stackoverflow.com/questions/496751/base64-encode-string-in-vbscript

有時候有文字傳遞的需求, 但卻又無法直接傳遞中文字 (編碼問題)
此時先將文字轉換成 Base64 編碼, 傳遞後再 Decode 是最好的辦法
只需要帶入一些函式即可簡單處理

' Base64-encode: from UTF-8-encoded bytes.
Word1 = Base64Encode("Word1", False)

' Base64-encode: from UTF-16 LE-encoded bytes.
Word2 = Base64Encode("Word2", True)

' Base64-decode: back to a VBScript string via UTF-8.
Word3 = ConvertFromUTF8(Base64Decode(Word1, False))

' Base64-decode: back to a VBScript string via UTF-16 LE.
Word4 = ConvertFromUTF8(Base64Decode(Word2, True))

wscript.echo Word1 & vbcrlf & Word2 & vbcrlf & Word3 & vbcrlf & Word4

Symantec Definition Auto Downloader VBScript for SEPM

如果是在暗網 (Dark Network) 裡面使用 Symantec Endpoint Protection 的話
可能沒辦法透過全自動 Internet Update 來更新病毒碼
還好 Symantec 有提供了手動下載病毒碼並放到特定路徑讓 SEPM 自己去更新的辦法
但如果要人工下載實在太麻煩又會忘記
於是寫了一個簡單的 VBScript 來下載

因為不熟悉 VBS 連接 FTP 的語法
找不到怎麼取得檔案日期時間以便比對出最新的一個來下載
所幸 Symantec 的檔名應該是按照 Hex 版本號來命名
所以比對檔名也可以取得最後一個最新的病毒定義檔

該下載哪個版本的病毒定義檔要 到這裡來確認
改前面兩個參數指定下載來源與目的就可以了
如果未來 Symantec 有任何異動, 就自己改一下吧