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 有任何異動, 就自己改一下吧

2018-01-19

WSUS Windows Update Auto Approve after One Month 延後一個月自動核准

WSUS 沒有內建延遲 Approve 的功能
但是微軟釋出的更新常常會出包, 有的隔天就回收, 有的兩周內回收, 再釋出新版
為了避免中招當白老鼠, MS 的建議是要建立測試環境然後手動 Approve
問題是有多少公司企業有這種美國時間跟人力呢?

不要在更新一發佈就立刻 Auto Approve 我覺得是權宜之計
但還是無法完全避免 Update 與應用程式發生相容性問題
若要做到延遲 Approve 就會需要用到 PowerShell 了
首先 WSUS 不要設定 Auto Approve
然後參考以下 Script 每天執行就好了 (可以附帶執行 Clean Up , 參考這篇)

*. 紅字部分的判斷可加可不加, Malicious Software Removal Tool 在被取代後並不會立刻 Superseded

2017-12-20

Windows 8 / 8.1 / 10 注音輸入法切換問題

Windows 8 以後切換到注音輸入法時, 預設都是 [注音] (ㄅ)
即使將注音輸入法預設鍵盤模式從 [中文模式] 改為 [英數模式]
切換時預設也還是跳為 [注音] (ㄅ)
這個問題相當惱人, 最近找到一個方法, 除了上述這個設定之外
還必須加入以下註冊機碼

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
"00000404"="00000409"


這個註冊機碼也可以下 Command:


reg add "HKEY_CURRENT_USER\Keyboard Layout\Substitutes" /v 00000404 /t REG_SZ /d 00000409 /f

如此一來, 切換到注音輸入法的時候預設就會是 [英數] 而不是注音 (ㄅ)


但是, 預設是注音輸入法的 [英數]
必須用 Shift 切換才會變成注音輸入法的 [注音] (ㄅ)

如果習慣用 Ctrl + Space 切換的人, 用 Ctrl + Space 切換的話仍然是 [英數] 輸入
再 Ctrl + Space 切回來也還是 [英數]
必須用 Shift 切換變成注音輸入法的 [注音] (ㄅ)
之後再用 Ctrl + Space 切換才會是 [英數] / [注音] (ㄅ) 互相切換
而且每個應用程式視窗預設都是如此
對於已經很習慣只用 Ctrl + Space 切換的人來說相當不方便

除此之外還有一個例外
如果是被 UAC 介入的情況下 (無論是否將 UAC 關閉)
程式開啟後仍然是注音輸入法的 [注音] (ㄅ)

2017-12-06

VMWare .vmdk Convert to .vhd / .vhdx

因需要將 VMWare 的 VM 轉到 Hyper-V
祭出 MVMC 3.0 (Microsoft Virtual Machine Converter 3.0)
但因為一些原因只能從 DataStore 直接 Download .vmdk 出來, 不能讓他關機進行 Convert
而直接 Download 下來的 .vmdk 沒有簡單的小程式能直接轉檔
原本微軟有提供一個 Command Line 工具叫 vmdc.exe, 但現在也已經 404 了
查找了一陣子之後發現原來裝好 MVMC 後只要 Import 他的 Module 就能用 PowerShell 來處理了