首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

操作系统

Windows 9X | Linux&Uinx | Windows Server | 其它操作系统 | Vista | FreeBSD | Windows 7/8 |
首页 > 操作系统 > Windows Server > Windows PowerShell關鍵學習指引 > 正文

Windows PowerShell關鍵學習指引

出处:http://www.netadmin.com.tw/article_content.aspx?sn=1304010003 作者:顧武雄 时间:2013-5-19 17:51:20
雖然Windows的圖形介面可讓使用者很方便地進行各類操作上的需求,但是對於專業IT人員來說,許多日常維護工作恐怕無法完全透過圖形介面來完成,必須善用Windows PowerShell命令介面來協助達成各種自動化管理與批次管理上的進階需求。本文將說明Windows PowerShell的安裝方式和使用範例。
微軟作業系統Windows Server 2008、 Windows Server 2008 R2、Windows 7已經內建了Windows PowerShell這項強大介面,但如果作業系統是Windows Vista、Windows Server 2003 SP1或Windows XP SP2,在安裝Windows PowerShell前,必須先安裝Microsoft .NET Framework 2.0,而且須注意的是,假若目前電腦已經安裝過之前版本的Windows PowerShell程式,必須先從「控制台」內的「新增/移除程式」中移除。 

Windows PowerShell除了可讓IT人員在管理系統時透過此介面執行原有的命令列工具外,還可以透過內建的一百多種標準命令工具來額外管理登錄檔資料(Registry)或WMI(Windows Management Instrumentation)以及事件日誌與數學運算等等。
 

對於一些批次命令或腳本檔案(副檔名為PS1)的執行,IT人員也能夠直接在Shell內執行外部腳本檔案,或者直接在原有的命令提示列中執行,管理起來絕對不亞於UNIX環境下Shell的使用。
 

關於Windows PowerShell的安裝,也可以將此安裝程式儲存到網路共用資料夾內,好讓管理員能夠透過群組原則的方式,針對多部電腦進行無訊息提示的安裝作業,只須在命令提示列輸入「PowerShellSetup_x86_fre.exe /quiet」即可。
 

在32位元版本的Windows內,Windows PowerShell將預設安裝到「%SystemRoot%\System32\WindowsPowerShell\v1.0」資料夾,如果是64位元版本的Windows,32位元版本的Windows PowerShell將安裝至「%SystemRoot%\SystemWow64\Windows PowerShell\v1.0」資料夾,而64位元版本的Windows PowerShell則會安裝在「%SystemRoot%\System32\WindowsPowerShell\v1.0」資料夾內。
 

在Windows Server 2008安裝Windows PowerShell
 

以下將以使用圖形介面及命令模式兩種方式來進行安裝示範。
 

使用圖形介面安裝
 

Windows PowerShell是Windows Server 2008內建的功能之一,但在安裝作業系統時並未預設安裝。先開啟「開始」功能表,然後點選【系統管理工具】,開啟「伺服器管理員」介面後,接著在「功能」節點項目上,點選頁面中的「新增功能」連結。
 

緊接著開啟「選取功能」頁面,勾選「Windows PowerShell」項目,然後按下〔下一步〕按鈕繼續,如圖1所示。
 


▲圖1 勾選Windows PowerShell。


接著來到「確認安裝選項」頁面,如圖2所示,在確認所要安裝的元件無誤後,按下〔安裝〕按鈕即可。 


▲圖2 確認安裝選項。


如圖3所示便是成功安裝Windows PowerShell功能的結果顯示頁面,按下〔關閉〕按鈕即完成全部的安裝步驟。 


▲圖3 成功完成Windows PowerShell功能安裝。


使用命令模式安裝 

前面說明了採用圖形介面安裝Windows PowerShell功能的方法,接著介紹該如何使用命令模式來安裝這項功能。 
在開始安裝前,建議先下達「ServerManagerCmd -query」命令參數,查詢目前已經安裝及尚未安裝那些功能元件。 

圖4內所示已安裝的功能項目,除了會以綠色字體來顯示外,也會在功能項目的前面標示「X」,由此可以看出,目前Windows PowerShell功能項目尚未安裝。 


▲圖4 查詢目前已安裝的功能。


接著,如圖5所示下達「ServerManagerCmd -install PowerShell」命令參數開始安裝,範例中顯示的是已經完成安裝Windows PowerShell功能後的結果。 


▲圖5 以命令模式安裝Windows PowerShell。


無論是採用圖形介面,還是以命令介面來安裝Windows PowerShell功能,安裝完成後都可以如圖6所示在【開始】→【所有程式】功能表中的【Windows PowerShell 1.0】選單內,看到【Windows PowerShell】的執行選項。 


▲圖6 開啟Windows PowerShell。


開啟Windows PowerShell介面之後,如果想要清楚得知有哪些命令可以使用,以及這些命令參數的使用方法,只要如圖7所示下達「Get-Command | Format-List」命令進行查詢即可,其中管線之後的Format-List命令,也可以用簡寫的FL來取代。 


▲圖7 查看所有命令的詳細說明。


常見命令使用範例 

接著來看看一些Windows PowerShell常見命令的使用範例。如圖8所示,當想要查詢目前本機電腦內所有已安裝服務的執行狀態,只要輸入「Get-Service」即可。 


▲圖8 查看所有已安裝的服務。


前一個範例是直接輸入「Get-Service」命令來取得所有已安裝服務的清單資訊,但是這種沒有經過篩選的檢視方式恐怕不易閱讀,因為實際上真正想要檢視的,可能只是符合某些特定條件的服務清單而已。 

以圖9範例來說,筆者是從目前所有已安裝服務的清單中篩選出正在執行中的服務項目,只要輸入「Get-Service | where-object {$_.Status -eq "Running"}」命令即可。 


▲圖9 篩選出目前所有正在執行中的服務。


其中管線之後的where-object命令便是用來篩選的語法,而大括弧中的Status則是所要比對的欄位名稱,-eq則是等於的運算式子表示法(可參考表1說明),至於"Running"則是其值,因此如果現在要篩選的條件是已經停止的服務,則只要將其值變更為"STOP"即可。 

表1 各種運算式子的使用 


除了服務的檢視外,最常用的就是查看目前的執行緒清單,查詢的方法很簡單,在沒有設定篩選的狀態下,只要輸入「Get-Process」即可。 

至於如圖10所示的範例,則是進一步透過-Name參數來唯一列出Telnet Server服務(Tlntsvr)的執行緒狀態,而管線之後的FT命令則是Formate-Table的簡寫,表示將以表格方式來呈現資料。 


▲圖10 查看目前執行中的執行緒

在Windows PowerShell的管理中,對於命令的下達,最常見的不外乎是以Get或Set為開頭的命令。 

當想要檢視以某些字串開的命令,就可以如圖11所示透過「Get-Command -Verb」來取得,例如想要得到全部以Get開頭的命令清單,則輸入「Get-Command -Verb Get」。 


▲圖11 查看所有以GET開頭的命令。


上一個範例是列出特定命令開頭的命令清單,接下來要看的是關於以特定命令為結尾的命令清單。如圖12所示,同樣是下達Get-Command命令,但是搭配-Noum為參數來取得所有以Item為結尾的命令清單。 


▲圖12 查看所有以Item字眼為結尾的命令。


關於取得以特定命令為結尾的命令清單,再以另一個範例來做說明。如圖13所示,下達「Get-Command -Noum Object」命令參數來列出所有以Object為結尾的命令清單,其中的Select-Object便是往後會最常用到的命令。 


▲圖13 查看所有以Object字眼為後段的命令。


除了取得以特定命令字眼為開頭或結尾的命令清單外,系統管理人員通常都希望可以看到一些針對指定命令的使用範例說明。 

以圖14範例中所下達的「Help Get-WmiObject -example」命令參數為例,便是取得Get-WmiObject 這個命令的幾個範例說明。 


▲圖14 查看特定命令的使用範例。


緊接著,要與大家分享的是命令別名的使用。關於命令別名的使用,在UNIX的作業環境中是相當普遍的,因為它可以簡化許多較長原, 始命令的下達方式,更重要的是,除了使用內建的命令別名外,系統管理員也能夠自行新增別名的設定。 

想要知道系統預設有哪些命令別名可以使用,只要如圖15所示輸入「Get-Alias」來取得即可。至於針對一些相容於UNIX環境內的常見命令,同樣也可以在Windows PowerShell下達,這部分請參考表2的說明。 


▲圖15 取得所有預設的別名清單。


表2 Windows PowerShell內可用的Cmd.exe和UNIX命令 


這麼多的命令可以在Windows PowerShell與UNIX作業環境來下達,如圖16所示的範例便是最簡單也是最常用的dir命令,當然也可以下達ls命令。由此發現其呈現資料夾與檔案的方式,與UNIX頗為相似。 


▲圖16 顯示目前路徑中的資料夾與檔案。


如果想要針對某些常用的命令設定別名,只要透過Set-Alias來設定即可,例如下達「Set-Alias -Name gi -Value Get-Item」,則別名gi便可以簡化取代系統預設的Get-Item命令。但是,系統內建的這些別名設定無法進行修改,否則會出現錯誤訊息。 

接下來,介紹其他更進階的命令使用範例。首先是關於本機磁碟清單資訊的取得部分。如圖17所示,下達「Get-WinObject -Class Win32_LogicDisk」命令參數來取得目前本機內所有連接的磁碟,包括固定式磁碟、卸除式磁碟以及光碟機等等。從範例中除了可以看到這一些磁碟目前的容量與剩餘的可用空間外,還可以發現它們都有各自的裝置類型編號,例如固定式磁碟=3、卸除式磁碟=2等等。 


▲圖17 查看磁碟相關資訊。


緊接著前一個操作範例,如果眼前所查詢出來的磁碟類型相當多又不易檢視,這時候可以透過篩選的方式列出所需要的即可。如圖18所示,筆者下達「Get-WMIObject -Class Win32_LogicalDisk -Filter "DriveType=3" | FT」命令參數,其中關鍵性的參數在於Filter的使用,以資料表的方式來呈現出目前本機內的所有固定磁碟資訊,主要用來查看每一個磁碟所剩餘的磁碟空間大小。 


▲圖18 只查看固定磁碟的資訊。

在磁碟的管理中,若要取得目前指定路徑下的所有檔案(包括隱藏的檔案與資料夾)、資料夾路徑資訊,可以如圖19所示輸入「Get-ChildItem -Path C:\Windows -Force -Recurse」,其中的Force參數,便是用以顯示位於Windows資料夾下所有隱藏的檔案與資料夾。 


▲圖19 列出所有的子資料夾與檔案。


在Windows PowerShell中對於任何資訊的取得,一旦陳列出來的資訊太多時,如果有可以進行翻頁的機制是不是會更方便呢?在此以取得「Windows\System32」資料夾下的所有檔案清單為例進行示範。如圖20所示,只要在管線之後輸入「Out-Host -Paging」即可,由範例中可以清楚看到,在頁面的下方會出現可進行顯示下一頁或下一行的按鍵,其中的代表〔Enter〕按鍵。 


▲圖20 使用分頁顯示功能。


對於檔案資料夾的管理,除了可以取得指定路徑下的清單外,也能夠用來建立新的資料夾或檔案。如圖21所示,下達「New-Item -Path 'C:\temp\New Folder' -ItemType "directory"」命令參數,即可建立「C:\temp\New Folder」的新資料夾。如果所要新增的項目為檔案,只要將-ItemType的參數值改為"File"即可。 


▲圖21 新增資料夾與檔案。


前面是關於新增資料夾與檔案的範例,如果想要進行移除,那又該怎麼做呢?其實很簡單!無論是移除資料夾或是檔案,都可以如圖22所示的範例,只要下達「Remove-Item 路徑資料夾或檔案」即可,不過必須注意的是,倘若要移除的資料夾或檔案的命名中包含空格,則必須加上使用雙引號(”)才行。 


▲圖22 刪除指定的資料夾。


接著,講解一些與系統資訊取得有關的命令用法。如圖23所示,可以透過下達「Get-WMIObject -Class Win32_ComputerSystem」命令得知目前本機電腦的系統基本資訊,包括所屬的網域名稱、硬體廠商、模組資訊、記憶體大小等等。倘若想要查詢的是網域內的另一部電腦資訊,只要加上「-ComputerName 電腦名稱」即可。 


▲圖23 取得指定電腦的資訊。


假若想要取得的是這部電腦的硬體系統架構類型,則使用管線搭配Select-Object命令來篩選特定物件的屬性欄位資訊,然後再加上-Property SystemType參數值。如圖24所示便是藉由此命令與參數的搭配,得知這部電腦為x86的PC。 


▲圖24 取得指定電腦的系統類型。


若想取得本機或另一部電腦所設定的當地時間,則如圖25所示輸入「Get-WmiObject -Class Win32_LocalTime -ComputerName 電腦名稱 | Select-Object -Property [a-z]*」命令,其中[a-z]*表示採用欄位由a至z的排序方式來呈現。 


▲圖25 取得電腦的當地時間。


在Windows PowerShell中,除了可執行一般的Ping指令來偵測網路電腦的連線回應外,也可以使用本身特有的命令參數來進行這項測試工作。首先,說明針對單一電腦的測試方法。 

如圖26所示,輸入「Get-WMIOBject -Class Win32_PingStatus -Filter "Address='168.95.1.1'" -Computer . | Select-Object -Property Address,ResponseTime,StatusCode」,在這個命令中,利用Win32_PingStatus進行Ping的作業,而透過管線後的Select-Object來取得IP位址、回應時間以及狀態碼欄位資訊。 


▲圖26 Ping單一電腦回應。


如果透過如此複雜的命令參數,只是為了Ping單一電腦的回應狀態,那倒不如使用原有的Ping命令就好。因此,接著來看看如何透過類似的命令語法,來Ping指定的IP網段範圍。 

如圖27所示,進一步透過ForEach-Object迴圈命令的方式,來Ping指定的網路IP啟始168.95.1.10到168.95.1.254的範圍,就會比原有的Ping命令更好用了。 


▲圖27 Ping指定的IP網路區段

若想要知道目前有哪些使用者連線登入到這一部伺服器,則如圖28所示輸入「Get-WmiObject -Class Win32_ComputerSystem -Property UserName」命令參數,即可取得目前登入此電腦的使用者清單。 


▲圖28 取得目前已登入的使用者清單。


在Active Directory網域環境內做管理,系統管理人員通常希望可以不必跑到用戶端電腦前,就可以看到指定電腦上所安裝的軟體有那些。在Windows PowerShell管理中,只要如圖29所示輸入「Get-WMIObject -Class Win32_Product -ComputerName 電腦名稱」命令參數,即可取得所有在這部電腦上已安裝的32位元軟體清單。 


▲圖29 查看電腦目前已經安裝的軟體。


前一個範例只是針對所有已安裝的32位元軟體列舉出概要資訊而已,如果想要針對某個特定軟體查看其所有欄位的詳細資訊,只要如圖30所示下達「Get-WMIObject -Class Win32_Product -ComputerName 電腦名稱 | Where-Object -FilterScript{$_.Name -eq " Microsoft .Net Framework 2.0"} | Select-Object -Property *」命令參數即可(以Microsoft .Net Framework 2.0為例)。 


▲圖30 查看特定軟體安裝的詳細資訊。


IT人員所關心的,除了查看特定電腦內安裝了哪些軟體外,還會想知道在指定的電腦上目前究竟已經安裝過哪些修正程式(Hotfix)。 

如圖31所示,想要查詢所有屬於Windows XP Service Pack 3系列的Hotfix清單時,則輸入「Get-WMIObject -Class Win32_QuickFixEngineering -Computer 電腦名稱 | Where-Object {$_.ServicePackImEffect -eq "SP3" | FT」。 


▲圖31 查看指定電腦目前已經安裝的Hotfix清單。


查詢當中,若想要取得的是所有修正程式清單,則管線之後的Where–Object命令可以省略。 

結語 

除了Windows作業系統外,目前有許多微軟伺服端的系統都已經整合Windows PowerShell的管理,例如SharePoint Server、Exchange Server、Lync Server,甚至是雲端版的Office 365等。筆者認為微軟將這些系統的進階管理,交由強大的命令主控台來負責處理是相當明智的,如此將可以大幅簡化許多複雜的管理作業,只要撰寫與執行自動化腳本,便可輕鬆完成。
相关文章 热门文章
  • IBM 3850 X5 Server安装Windows 2003步骤说明
  • Windows NLB 单播与多播
  • Exchange 2010 Powershell查看用户最后登陆邮箱时间
  • Exchange 2010 Powershell实现邮箱收发数量统计
  • 可多账户共存 Windows 8邮件完全攻略
  • Windows Server 2012 MiniShell模式
  • Windows 8 邮件应用重大更新 多图助你重新连接Google账户
  • Windows 2000 域迁移到Windows 2008
  • 使用Powershell 脚本建立AD用户
  • 利用Powershell 批量创建基于用户名的文件夹
  • 使用Powershell 命令同时获取mailbox 和maiboxstastics 属性?
  • 如何使用Powershell脚本监控Exchange2010(三) Archive邮箱容量和使用情况的发布
  • “http 500内部服务器错误”的解决方法
  • 利用Windows 2000 Server的RRAS实现VPN服务器
  • 用凤凰万能启动盘解决本地/域管理员密码丢失
  • Win2003 Server企业版安装配置
  • Active directory 灾难恢复
  • Windows 2000/03域和活动目录
  • 如何在vmware4上创建windows 2003群集
  • MSI文件制作全过程
  • Win2000命令全集(一)
  • Windows 2000/AD技巧
  • 此系统的本地策略不允许您采用交互式登录解决方法
  • Win2000路由的安装与设置实现不同网段互通
  • 自由广告区
     
    最新软件下载
  • Exchange Serer 2013 安装指南
  • Exchange Server 2013 Cumulative upd...
  • Acronis Disk Director 10
  • WinWebMail Server 3.8.5.1 标准版
  • WinWebMail Server 3.8.5.1 企业版
  • ORF Fusion 5.0 反垃圾邮件软件正式版
  • MDaemon Server 简体中文版
  • Exchange Server 2010 Service Pack 3
  • WinWebMail Server 3.8.3.3 标准版本
  • WinWebMail Server 3.8.3.3 &nbs...
  • WinWebMail Server 3.8.2.1 标准版
  • WinWebMail Server 3.8.2.1 企业版
  • 今日邮件技术文章
  • Outlook 2010整合Exchange 2010活用秘...
  • Exchange Server 2010整合通訊管理與應..
  • Exchange Server 2010整合通訊管理與應..
  • 最基本也最實用操作技巧大公開 Outloo...
  • Exchange Server 2010資料庫高可用性部..
  • Exchange Server 2010 訊息法規管理秘..
  • Exchange Server 2010 實用管理祕訣TOP 6
  • Exchange Server 2010 進階管理技巧TOP 7
  • Office 365進階活用秘訣TOP 7-(2)
  • Office 365進階活用秘訣TOP 7-(1)
  • Office 365中小企業IT實戰TOP 7-(2)
  • Office 365中小企業IT實戰TOP 7-(1)
  • 最新专题
  • Windows Server 2012技术专题
  • Windows 8 技术专题
  • Exchange Server 2013技术专题
  • Exchange 2003升级到Exchange 2010
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们
    版权所有:邮件技术资讯网©2003-2016 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备09060656号