2010年12月30日

使用 Wondows PowerShell 將兩個資料夾中,主檔名相同的檔案搬移到另外一個資料夾

假設資料夾 1 為 D:\doc,資料夾 2 為 D:\txt,其內分別儲存 .doc 與 .txt 檔,要將資料夾 1 中,主檔名與資料夾 2 主檔名相同的檔案搬移到另外一個資料夾(D:\newdoc)。

要如何使用 Wondows PowerShell 進行這樣操作呢?

例如:

資料夾 1(D:\doc)內有下列檔案:

  • a.doc
  • b.doc
  • c.doc
  • aa.doc
  • ab.doc
  • ac.doc

資料夾 2(D:\txt)內有下列檔案:

  • a.txt
  • aa.txt
  • bb.txt
  • cc.txt

資料夾 1 與資料夾 2 中,相同主檔名的有:

  • a
  • aa

所以要將 a.doc 與 aa.doc 搬移到新資料夾(D:\newdoc)。Windows PowerShell 程式碼如下:

# 宣告變數
$folderA = "D:\doc\"
$folderB = "D:\txt\"
$folderNew = "D:\newdoc\"

# 找出資料夾中的每個檔案
foreach ($fileA in Get-ChildItem $folderA)
{
    # 組出另一資料夾中的檔名
    # 方法 1
    $fileB = $folderB + $fileA.Name.Remove($fileA.Name.Length - $fileA.Extension.Length) + ".txt"
    # 方法 2,此法有缺點,萬一檔名中有數個 .doc 都會被換成 .txt
    #$fileB = $folderB + $fileA.Name.ToLower().Replace(".doc", ".txt")

    # 檢查檔案是否存在資料夾中
    If (Test-Path $fileB) {
        "搬移檔案: $fileA"
        $fileA.MoveTo($folderNew + $fileA.Name)
    }
}

2010年11月14日

修改 Windows 網路卡的自動公制設定

「公制」(或稱計量,Metric)是指派給網路卡的路由值,其用途為識別與使用路由有關的成本。影響成本的因素有:網路的頻寬(或稱速度,例如:10Mbps、100Mbps)、躍點計數(Hop Count)或網路延遲(Network Delay)…等。
從 Windows XP 之後,微軟就開始提供「自動公制」或稱「自動計量」的新功能。顧名思義,就是可以自動設定以網路頻寬為作為計算路由基準的公制。作業系統預設就會啟用自動公制的功能,當然您也可以手動修改設定。
比方說,電腦安裝兩張網路卡,所連接的網路頻寬都一樣,又都是位於同一個網段(亦即網路卡的預設閘道一樣),此時手動修改公制就很有用,因為可以讓公制數值較小的網路卡優先被使用
修改自動公制設定的操作步驟:
  1. 開啟「控制台」,連按兩下「網路連線」
    如果是 Windows Vista (含)之後的作業系統,請依序開啟「控制台」中的「網路和共用中心/變更介面卡設定」
  2. 在要修改的網路卡上,按下滑鼠右鍵,選擇 [內容]
  3. 按下「這個連線使用下列項目」中的「網際網路通訊協定 (TCP/IP)」「網際網路通訊協定第 4 版 (TCP/IPv4)」「網際網路通訊協定第 6 版 (TCP/IPv6)」,然後按下 [內容]
  4. 「一般」] 索引標籤中,按下「進階」
  5. [IP 設定] 索引標籤,清除「自動公制」「自動計量」核取方塊,然後在「介面公制」「介面計量」欄位中,輸入您要的公制。
    可填入的公制值為 1 9999
  6. 如果要修改預設閘道的「自動公制」「自動計量」,請按下位於「預設閘道」下的「編輯」按鈕,清除「公制」「計量」核取方塊,然後在「公制」「計量」欄位中,輸入您要的公制。
    可填入的公制值為 1 9999


由上述的操作說明,您可以瞭解到:每個閘道都可個別設定其預設閘道的公制,此舉可以讓您進一步控制區域路由使用的公制。例如,您可以讓自動公制功能設定指派給網路卡的路由,同時又手動設定指派給預設閘道的公制。

請特別注意: 如果在網路卡層級指定了公制,但又新增了閘道並設定自動公制功能,那麼該閘道則會沿用指派給該網路卡的公制。例如,如果您在網路卡層級指定公制為 1,然後新增閘道,並勾選閘道的自動公制核取方塊,該閘道也會被指派公制 1。

2010年11月13日

如何將 Snagit 的 Stamp(圖章)從一台電腦轉移到另外一台電腦(含下載圖章說明)

Snagit 這套抓圖軟體的一大特色就是原廠提供了許多的 Stamps(圖章),而且都是 .exe 的可執行檔,因此只要安裝完這些圖章檔之後,即可馬上使用他們。

下載圖章檔的操作方式為:

  1. 按下「Draw」功能表,接著按下「Drawing Tools」功能區中的「Stamp」圖示。
    按下 Stamp 圖示
  2. 按下「Download more…」項目。
    按下 Download more…
  3. 找到「Stamps」區塊,裡面就有 3 種分類圖章可供下載:
    • Accent
    • Clip Art
    • Number And Letter
    數種 Stamps
  4. 以下圖為例,是按下超連結「Accent」「Accent  Samples」之後,下載「Accents: Proofreader Mark Stamps」的畫面:
    下載 Stamps

雖然圖章檔已經是 .exe 檔,但每當新電腦安裝好 Snagit,都要用滑鼠雙擊 .exe 的圖章檔,進行安裝操作。若需要安裝 10 個圖章檔,就要重複操作 10 次上述的動作,難道沒有更簡單的方法嗎?

有的!圖章檔安裝完之後,在 C:\Program Files\TechSmith\Snagit 10\Stamps(32 位元作業系統)或 C:\Program Files (x86)\TechSmith\Snagit 10\Stamps(64 位元作業系統)會有許多子目錄,這些子目錄就是我們從步驟 2. 所看到的圖章分類名稱。

因此要將 Snagit 的圖章從一台電腦轉移到另外一台電腦,就是把 Stamps 下的子目錄複製到另外一台電腦相對應的目錄即可。

不過,如果您有加入自己的圖章,在預設狀態下,自訂的圖章會儲存在 C:\Users\<使用者名稱>\Documents\Snagit StampsC:\Documents and Settings\<使用者名稱>\My Documents\Snagit Stamps。建議您在 C:\Program Files\TechSmith\Snagit 10\Stamps(32 位元作業系統)或 C:\Program Files (x86)\TechSmith\Snagit 10\Stamps(64 位元作業系統)之下,建立新的目錄,然後把自訂圖章的檔案搬移到剛建立的目錄。

提醒您,如果作業系統是 Windows Vista (含)之後,請記得以系統管理員身分執行檔案總管進行檔案的複製與搬移操作。

2010年11月6日

善用指令判斷 Windows 7 與 Server 2008 R2 作業系統目前的版本與可升級的版本為何

Windows 7 與 Server 2008 R2 內建一個部署映像服務與管理的工具程式:DISM.exe,雖然這個工具可用於 Windows 7、Windows Vista SP1 及其更新之版本、Windows Server 2008 與 Windows Server 2008 R2 作業系統中。不過,該工具所有完整的功能,只限用於 Windows 7 與 Windows Server 2008 R2 上

透過 DISM 搭配適當的參數,可以判斷出目前的 Windows 7、Window Server 2008 R2 作業系統是哪一種版本:

DISM /online /Get-CurrentEdition
使用如下的指令,可以知道目前的版本可升級成哪些版本:
DISM /online /Get-TargetEditions

▼ 在 Windows 7 進行判斷

▼ 在 Windows Server 2008 R2 Server Core 進行判斷

附註:

2010年11月3日

使用 Windows PowerShell 將資料匯出成 .html 檔案(含安裝 SQLPSX 模組教學)

CodePlex 有個 SQL Server Powershell Extensions(簡稱 SQLPSX)專案,裡面提供數個資料庫(不單支援 Microsoft SQL Server,連 Oracle 都支援,但前提是您的電腦必須有 Oracle 相關的組件才行)的模組(Module),其中有個 Get-SqlData 方法可以執行 T-SQL 查詢,並回傳一個 DataRow 物件。

由於回傳的是 DataRow 物件,所以可以透過 Windows PowerShell 內建的 ConvertTo-Html 指令(Cmdlet),將 DataRow 物件轉換成 HTML 格式,接著透過導向方式,輸出成 .html 檔即可在瀏覽器中顯示。

前置作業

安裝 SQLPSX 的方式很簡單,但在安裝之前,您的電腦必須已經安裝下列元件並做好設定:

安裝 SQLPSX 模組

下載內含安裝程式的壓縮檔:SQLPSX_V2_Install.zip,將其解開,然後依照作業系統的位元是 3264 的不同,執行相對應的安裝程式 SQLPSX_Install_32.exe、SQLPSX_Install_64.exe,然後依照畫面指示進行操作。

▼ 開始進行安裝
開始進行安裝

▼ 指定壓縮檔
指定壓縮檔

▼ 安裝完畢,最下方的狀態列會顯示:SQLPSX - Installation completed
安裝完畢

開啟 Windows PowerShell,輸入下面的指令,以便建立目前這個使用者的 Windows PowerShell 設定檔:

notepad $Profile

此時會開啟記事本並出現找不到檔案的訊息,按下「是」按鈕,開始編輯設定檔。請將下面的內容複製下來,然後貼到記事本,接著存檔(下面的路徑適用於 Windows Vista 之後的作業系統,若您的作業系統為 Vista 之前,請自行將 Documents 調整成 My Documents 或實際的位置與名稱):

Import-Module $Home\Documents\WindowsPowerShell\Modules\SQLPSX\SQLPSX.psm1

請注意:
$Home
變數是指目前使用者的主目錄 。

關閉 Windows PowerShell,然後再開啟它,此時應該會看到如下的畫面,即表示成功安裝 SQLPSX 模組了。開懷大笑

▼ 安裝 SQLPSX 模組成功了
成功安裝 SQLPSX 模組

使用 SQLPSX 模組

在 Windows PowerSehll 輸入如下的指令:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT * FROM 章立民研究室" | ConvertTo-Html -Property 員工編號, 身份證字號, 姓名 -Title "員工資料表" > d:\章立民研究室.html

上面的指令會從名稱為 SqlExpress 的 SQL Server Express 執行個體中的北風貿易資料庫,找出章立民研究室資料表中的所有資料,接著將輸出結果轉換成 HTML 格式,且只輸出 3 個欄位,並將 .html 的 Title 屬性設定成 員工資料表,然後輸出到 d:\章立民研究室.html

▼ 使用 Windows PowerShell 將資料匯出成 .html 檔案
使用 Windows PowerShell 將資料匯出成 .html 檔案

▼ 檢視 .html 原始碼
檢視 .html 原始碼

  1. 其實是可以在 T-SQL 語法中的 SELECT 子句指定要哪些欄位,我只是想凸顯出 PowerShell ConvertTo-Html 有個 Property 屬性也可指定要顯示哪些欄位。
  2. 至於其他 SQLPSX 模組詳細的指令說明,可在此處找到。

2010年11月2日

把 Windows Phone Developer Tools 說明文件安裝在本機中

Visual Studio 2010 的說明文件改用 Microsoft Help 3.0,其特色就是透過瀏覽器來顯示說明文件,且左側的樹狀內容索引又不甚完備。若您不習慣這樣的操作介面,可參考 Microsoft MVP 小朱所寫的「 [VS2010] 超難用之 Visual Studio 2010 線上說明的暫行解決方案 」一文。

本文的重點在於,如何把 Windows Phone Developer Tools 的說明文件安裝在本機中,其操作步驟如下:

  1. 按下 Windows 鍵 + R,在「開啟」文字方塊中輸入如下的指令,然後按下「確定」按鈕:
    "%ProgramFiles%\Microsoft Help Viewer\v1.0\HelpLibManager.exe" /product vs /version 100 /locale en-US



    另外一種方式是先開啟 Visual Stuiod 2010,按下功能表中的「Help」,選擇「Manage Help Settings」
  2. 稍待片刻,即會出現 Help Library Manager – Microsoft Help Viewer 1.0 視窗,要我們選擇文件所要儲存的目錄,直接按下「OK」按鈕。

    如果您先前有執行過 Help Library Manager ,就不會出現此視窗。
  3. 按下「Install content from online」超連結。
  4. 此時即會從網路上擷取可供安裝的文件清單,等待清單出現之後,將捲軸拉到最下面,找到 Windows Phone Development,按下其右側的「Add」超連結。
  5. 按下「Update」按鈕。
  6. 開始安裝說明文件。
  7. 安裝完成,按下「Finish」按鈕。

2010年10月13日

集眾多功能於一身的遠端桌面連線程式:Terminals

最近常需要同時連線到多個遠端桌面(Remote Desktop)去,一般的作法都是把連線設定存等成 .rdp  檔,然後再雙擊所要連線的 .rdp 檔,開啟「遠端桌面連線」程式進行連線。

使用 .rdp 檔進行連線

故事開始…

看過 demo 的推薦文,改用 Remote Desktop Organizer 遠端桌面管理工具,雖然不錯用,但不知怎麼搞的,登入的密碼都無法儲存,與其要自己輸入密碼,那還不如換回原本的作法。遂在 AskaSu 的介紹下,開始試用同為免費軟體的連線工具:Terminals

Terminals 功能簡介

這個工具最新版是 1.9a,已經支援遠端桌面通訊協定(Remote Desktop Protocol,RDP) 6。它使用遠端桌面服務 ActiveX 用戶端元件(mstscax.dll),採用分頁索引標籤方式來顯示所連線的主機,除了可以連線 Microsoft 的終端機服務(Terminal Service)與遠端桌面之外,更可使用其他常見的通訊協定,例如:VNCVMRCSSHTelnetRAS 以及 Citrix 的 ICA。當然網頁的通訊協定: HTTP 與 HTTPS 也行!

支援多種通訊協定

安裝需求與設定精靈

於安裝 Terminals 之前,請先確認您的 Windows 作業系統已經安裝了 Microsoft .NET Framework 3.0。安裝過程很簡單,都有精靈引導您進行。安裝完畢,會在桌面與「開始/所有程式」中,看到 Terminals

執行 Terminals 的方法

下面是第一次執行 Terminals 的操作過程,就請各位自行看圖說故事了。

▼ 程式功能說明
程式功能說明

▼ 設定主密碼,可先不設定,事後再到「Tools、Options」設定即可
設定主密碼,可不設定

▼ 設定預設的帳號密碼,若連線所需的帳號密碼是共通的,建議設定此項目
設定預設的帳號密碼

▼ 共通的設定
共通的設定

▼ 若有指定要匯入儲存於機碼中的 RDP 連線設定,此時即會開始匯入
匯入機碼中的 RDP 連線設定

▼ 成功匯入機碼中的連線設定
成功匯入機碼中的連線設定

▼ 第一次執行 Terminals 時,畫面上半部可能會有些工具圖示沒出現,左方紅色範圍是直接從機碼中,所匯入的連線設定。
第一次執行的畫面

如何連線

如果已經有匯入原本儲存於機碼中的設定,請參考上圖,展開 Discovered Connections 節點,在要連線的名稱上,連按兩下滑鼠左鍵。或是從工具列上的 Connect To 下拉清單中,選擇要連線的名稱,然後按下 Enter 鍵,或是按下其右側邊的 Connect to Server 按鈕。

如果帳號密碼正確,就會自動登入 Windows。使用 Terminals 的另外一個好處是,只要 Terminals 取得焦點,按下 Windows 鍵,即可開啟目前索引標籤中的這個 Windows 作業系統出現開始功能表。如果是使用「遠端桌面連線」程式,除非是切換到全螢幕,不然按下 Windows 鍵,是開啟本機的開始功能表。

如何修改既有的連線

請看圖吧!

如何建立新連線

其他特異功能

Tools 功能表中的各項功能
特異功能

由上圖可以看到,Terminals 的 Tools 功能表提供擷取畫面(Capture Terminals Screen)、管理所擷取的畫面(Screen Capture Manager)、網管工具(Networking Tools)、開啟記錄檔所在目錄(Open Log Folder)、管理工具列上的捷徑(Organize Shortcuts)、管理登入的帳號密碼(Credential Management)等功能。

在我的測試過程中,目前版本(1.9a)的管理所擷取的畫面、開啟記錄檔所在目錄這 2 個功能,按下去沒有反應。

於按下 Capture Terminals Screen 之後,會依照群組(管理者或一般使用者)身份,把畫面儲存在不同目錄(這是在 Windows 7 的環境下,其他作業系統我沒測試):

群組

儲存的目錄

管理者 C:\
一般使用者 C:\Users\<使用者名稱>\AppData\Local\VirtualStore

圖檔名稱為:yyyy-mm-dd_hh-mm-ss.PNG,其中的 hh 是 12 小時制。

這個擷取畫面功能真的很棒,不用像以往一樣:先在遠端電腦上,按下 Print Screen,貼到小畫家並存檔,再想辦法把圖檔傳回本機電腦。

Networking Tools 提供了 Ping、Trace Route、Whois、DNS Lookup、Port Scanner 等網管功能。

最值得一提的功能之一是 Terminals 預設會將桌面大小設定成隨 Terminals 的視窗大小而自動調整(如下圖中的  Auto Scale  設定)。

桌面大小隨 Terminals 的視窗大小而自動調整

另一項要提到的功能是,在預設狀態下,只要 Terminals 視窗取得焦點,都可以使用 Windows 鍵搭配其他按鍵,例如:直接按下 Windows 鍵來開啟「開始」功能表、Windows + E 開啟檔案總管、…等。Windows + L 鎖定的功能,則不支援!! 

如果使用內建的遠端桌面連線程式,一定要放到全螢幕才能使用 Windows 按鍵。
按下 Windows 鍵來開啟「開始」功能表

設定檔

Terminals 的設定檔所在目錄就是安裝程式所在的目錄:

作業系統

儲存的目錄

32 位元 C:\Program Files\Terminals
64 位元 C:\Program Files (x86)\Terminals

設定檔跟程式放在一起,感覺很奇怪,因為在多人共用的電腦,你的設定檔別人也可以使用、也可以連線。

主要的設定檔有 4 個:

  • Credentials.xml

    主密碼設定檔(密碼有加密過)
  • History.xml

    連線歷史記錄檔。
    如果您從 History 窗格中,看不到任何文字(正常的如下圖),那就手動刪除這個檔案,因為裡面的格式亂掉了。
  • Terminals.config

    連線設定檔(密碼有加密過)
  • ToolStrip.settings

    工具列設定檔

2010年10月9日

如何在 Windows Vista/7/Server 2008 停用驅動程式數位簽章

從 Windows Vista 之後,驅動程式必須要持有有效的數位簽章之後,才能在一般正常開機狀況下,被載入使用。至於為什麼微軟要有這樣的限制,原因有 3 個,詳情請自行參考此文
啟用測試模式
欲在 Windows Vista、Windows 7 或 Windows Server 2008、2008 R2 停用驅動程式的數位簽章,有下列數種方式:

方法 1

於電腦的 BIOS 自我檢測(POST)完成之後,按下 F8 鍵,以便出現「進階開機選項」,選擇「停用驅動程式強制簽章」啟動 Windows。

如果您每次開機都要來這麼一次設定,肯定覺得這方式真是爛,所以繼續往後看其他較好的操作方式吧!

方法 2

  1. 以系統管理者身分執行 cmd.exe,輸入如下的指令:
    BCDedit /set loadoptions DDISABLE_INTEGRITY_CHECKS
    BCDedit /set TESTSIGNING ON
  2. 重新開機,這樣才能讓剛剛修改的開機選項設定生效
如欲還原到預設的模式,一樣是以管理者身分執行 cmd.exe,輸入如下的指令(當然也是要在設定完成之後,重新開機才能讓設定生效!):
BCDedit /set loadoptions ENABLE_INTEGRITY_CHECKS
BCDedit /set TESTSIGNING OFF
或是精簡成一行:
BCDedit /set TESTSIGNING OFF

方法 3

使用本機群組原則編輯器:
  1. 開啟 gpedit.msc
  2. 找到如圖所示的位置。
  3. 啟用並將選項改為「略過」
請注意:不是每個版本的 Windows Vista/7/Server 2008 都有 gpedit.msc 這個工具程式。

方法 4

使用第三方工具:Driver Signature Enforcement Overrider 1.3b 幫忙解除封印。下載完畢之後,請以系統管理員身分執行該程式,勾選如下圖的「Enable Test Mode」選項,接著按下「Next」按鈕即可。

如要還原到預設的模式,就是勾選上圖中的「Disable Test Mode」。至於選擇「Remove Watermarks」選項則會瀏覽到某個網頁,讓您下載一個用來移除本文上方那張圖上的「測試模式」浮水印的工具。

參考資料:win7如何停用驅動數位簽章?