1 / 48

IT 人員高效率的 Windows 管理解決方案 ─ Windows PowerShell V2

IT 人員高效率的 Windows 管理解決方案 ─ Windows PowerShell V2. 蘇建榮 資深講師 精誠公司 ‧ 恆逸教育訓練中心. 大綱. 認識 Microsoft Windows PowerShell V2 PowerShell 的安全性 整合指令碼環境 (ISE) 與指令碼除錯 PowerShell 應用案例 存取 登錄表 (Registry) Windows 管理與盤點 使用 ADSI 管理網域使用者及群組帳戶. Windows PowerShell. 新的命令列層殼與指令碼 語言 更 強大的互動式命令提示字元

angelo
Download Presentation

IT 人員高效率的 Windows 管理解決方案 ─ Windows PowerShell V2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IT人員高效率的 Windows 管理解決方案 ─ Windows PowerShell V2 蘇建榮 資深講師 精誠公司‧恆逸教育訓練中心

  2. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  3. Windows PowerShell • 新的命令列層殼與指令碼語言 • 更強大的互動式命令提示字元 • 簡單、易學、易用的指令碼語言 • 存取登錄表(registry)就像存取檔案一樣容易 • 豐富的命令列操作體驗 • 自動完成、萬用字元、以物件而非字串進行處理的 pipeline

  4. 安裝 PowerShell • Windows Server 2008 R2 Full Installation • 內建 V2 且預設安裝命令列介面的 PowerShell • 可由新增功能加裝 PowerShell ISE • Windows Server 2008 R2 Server Core • 內建 V2 但並未預設安裝, 可使用 OCSetup 進行安裝 • 沒有 ServerManager 整合、也沒有 ISE • Windows 7 內建 V2 且預設安裝(含 ISE) • Windows Server 2008 Full Installation • 內建 V1 但未預設安裝 • Windows XP、2003 與 2008(Full Installation) • 可下載安裝 V2(支援 x86 與 x64 平台)

  5. PowerShell 的架構

  6. 什麼是 Cmdlet • PowerShell 中特有的命令 • Cmdlet 的命名 • 名稱是由兩個部分所組成 • 並以橫線連結這兩個部分 • 前為動詞(動作),後為名詞(動作的標的) • 例如 Get-Help、Get-Command • PowerShell V2 已內建 236 個 Cmdlet (不含額外匯入的模組) • 查看可用的 cmdlet • Get-command –CommandType cmdlet

  7. Alias Refers to Cmdlet Alias • 簡短而容易記憶的別名 • 我們可將 cmdlet 或其他命令建立別名以方便使用 • 列出所有的 Alias • Get-Alias • 設定 Alias • 例: Set-Alias gcmd Get-Command • 使用 Alias • 例: gcmd

  8. Process Object Get-Command Cmdlet Pipe Sort-Object Cmdlet Pipeline • | 符號 • 可用來將一個 cmdlet 輸出的物件交由另一個 cmdlet 處理 PS C:>Get-Command | Sort-Object

  9. 資料型別 • PowerShell 中的變數,需有 $為字首 • 例:[int] $a=100

  10. 運算子

  11. ( $db.Mounted ){ “online” } 條件判斷 if else { “offline” }

  12. 迴圈 do/while while do/until While do do ($looping) { code } { code } ($looping) { code } ($done) while Until

  13. functionGet-Demo ($a) { return $a*2.2; } Get-Demo(100) 自訂函式

  14. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  15. PowerShell 指令檔 • 副檔名: ps1 • PowerShell 預設不允許 .ps1 的指令檔執行 • 執行原則(Execution Policy) • 查看設定: Get-ExecutionPolicy • 變更設定: Set-ExecutionPolicy • Restricted (預設值,不允許執行) • RemoteSigned (有限的安全性) • AllSigned (較安全,建議使用) • Unrestricted (無限制,方便但較不安全)

  16. PowerShell 指令檔簽章 • 向憑證授權中心, 登記程式碼簽署憑證 • 使用 Set-AuthenticodeSignature對 .ps1 進行簽署 • 變更 .ps1 的執行原則 Set-ExecutionPolicyAllSigned

  17. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  18. 整合指令碼環境 Integrated Scripting Environment • 在伺服器管理員的中新增功能(Add Feature) • Add-WindowsFeaturePowerShell-ISE • ServerManagerCmd -install PowerShell-ISE • 圖形介面的操作環境 • 指令碼編輯窗格、輸出窗格、命令窗格 • 可新增頁籤、可連接遠端電腦 • 方便對指令碼進行編輯與除錯

  19. 指令碼除錯 • 請先將指令碼存檔 (注意 Execution Policy) • 設置(或取消)中斷點:F9 • Run/Continue:F5 • Stop Debugger:Shift + F5 • Step Over:F10 • Remove All Breakpoints:Ctrl + Shift + F9

  20. 在 ISE 進行除錯

  21. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  22. 使用 Function 管理機碼(Registry Key) • 切換路徑 • CdHKLM:\Software • 建立機碼 • MkdirHKLM:\Software\U2488 • 複製機碼 • copyHKLM:\Software\U2488 HKLM:\Software\U2489 • 刪除機碼 • rmdir U2488 • 列舉子機碼 • dirHKLM:\Software

  23. Data Stores • Item 是物件的抽象性的通稱 • 在 PowerShell 存取 Registry 就像在存取檔案 Item File System Certificate Store Registry Provider

  24. 名詞 動詞 ChildItem Item ItemProperty Clear Clear-Item Clear-ItemProperty Copy Copy-Item Copy-ItemProperty Get Get-ChildItem Get-Item Get-ItemProperty Invoke Invoke-Item Move Move-Item Move-ItemProperty New New-Item New-ItemProperty Remove Remove-Item Remove-ItemProperty Rename Rename-Item Rename-ItemProperty Set Set-Item Set-ItemProperty 管理 Item 的 Cmdlet

  25. 使用 Cmdlet 管理機碼(Registry Key) • 切換路徑 • Set-locationHKLM:\Software • 建立機碼 • New-Item -Type Directory -Path HKLM:\software\U2488 • 複製機碼 • Copy-Item HKLM:\SOFTWARE\U2488 HKLM:\SOFTWARE\U2489 • 刪除機碼 • Remove-Item -Path HKLM:\software\U2488 • 列舉子機碼 • Get-ChildItem HKLM:\SOFTWARE

  26. 使用 Cmdlet 管理機碼值(Registry Value) • 新增機碼值 • New-ItemProperty-path . -name email -PropertyType String -value alan_su@uuu.com.tw • 重設機碼值的資料(Data) • Set-ItemProperty -path . -name email -value alanj@tpnic.net • 列出機碼的所有機碼值 • Get-ItemProperty -Path HKLM:\Software\U2489 • 清除機碼值的資料 • clear-ItemProperty -path . -name email • 刪除機碼值 • remove-ItemProperty -path . -name email

  27. 讀取機碼值的資料 • 讀取機碼值的資料 • 使用 Cmdlet • $u2489=Get-ItemProperty -Path HKLM:\Software\U2489 • Write-Output $u2489.email • 使用 COM • $objShell=New-Object -ComObject "WScript.Shell" • $ValueData=$objShell.RegRead("HKLM\SoftWare\U2489\email" • Write-Output $ValueData • 此外,您也可使用 WMI • Root\Default Namespace 中的 StdRegProv Class

  28. 情境 • Allen 顧問將協助設備組對特定的多部電腦啟用遠端桌面, 設備組已建立這些電腦的清單檔 • 解決方案 • 查出啟用遠端桌面在登錄表中的機碼值 • 以 PowerShell 指令檔達成

  29. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  30. 使用 cmdlet 進行管理 • 新增移除角色 • 需匯入 Import-Module ServerManager 模組 • 伺服器管理員的 PowerShell Cmdlets: • Get-WindowsFeature • Add-WindowsFeature • Remove-WindowsFeature • 使用 cmdlet 管理服務 • Set-Service、Start-Service 、Get-Service 、Stop-Service • 遠端執行 • 使用 invoke-command

  31. WMI 中常見的名詞

  32. 列舉 WMI 類別 Get-WMIObject –List Server/Workstation Server/Workstation Windows PowerShell Get-WMIObject –namespace <name> –List List of WMI Classes

  33. 列舉指定類別的屬性與方法 • 列出指定類別的屬性 • $objWMI= Get-WmiObject Win32_OperatingSystem • Get-Member -InputObject $objWMI -MemberType property • 列出指定類別的方法 • Get-Member -InputObject $objWMI -MemberType method

  34. 使用 WMI • 取得特定的 WMI Instance • [WMI] "\\dc1\root\cimv2:Win32_LogicalDisk.DeviceId='C:'" • 取得特定的WMI Class • Get-WmiObject Win32_LogicalDisk • 可配合 –ComputerName進行遠端操作 • 取得特定 Class 的所有 Instances • Get-WmiObject -Query "select * From Win32_LogicalDisk'"

  35. 使用 ForEach 取用集合中的物件 $colLogicalDisk = Get-WmiObjectWin32_LogicalDisk foreach ($objItemin $colLogicalDisk ) { Write-Host ($objItem.DeviceID,$objItem.FreeSpace,"Bytes"); }

  36. 情境 • Andy 顧問正在評估公司中現有電腦升級為 Windows 7 時,需先對哪些電腦進行硬體升級 • 解決方案 • 以 PowerShell 指令檔進行現有電腦的軟硬體盤點

  37. 大綱 • 認識 Microsoft Windows PowerShell V2 • PowerShell 的安全性 • 整合指令碼環境(ISE)與指令碼除錯 • PowerShell 應用案例 • 存取登錄表(Registry) • Windows 管理與盤點 • 使用 ADSI 管理網域使用者及群組帳戶

  38. 使用 [ADSI] 存取 AD 中的物件 • 連接到目標 • 網域、組織單位、群組、使用者等的 DN $objDomain=[ADSI]"LDAP://dc=uuu,dc=com,dc=tw" • 變更屬性值 • 使用 Put method, 加上屬性名稱與要設定的值 • 變更後要記得 SetInfo $objDomain.Put(" Description ", "恆逸資訊網域") $objDomain.SetInfo() • 讀取屬性值 • 使用 Get method, 加上屬性名稱 $objDomain.Get("Description")

  39. 在 AD 中建立物件 • 先連到目標物件的父層 • 接著使用 Create method • 指定 objectClass 及 RDN, 要記得執行 SetInfo $objChild=$objParent.Create(objectClass,RDN) • ObjectClass 為 OrganizationalUnit、Group、User 等 $objOU=$objDomain.Create("OrganizationalUnit","OU=Demo") $objOU.SetInfo()

  40. 在 AD 中刪除物件 • 先連到目標物件的父層 • 再使用 Delete method, 並指定要移除物件的 ObjectClass 及 RDN $objOU=[ADSI]"LDAP://OU=Demo,dc=uuu,dc=com,dc=tw" $objOU.Delete("group","CN=Demo Users")

  41. 使用者帳戶管理 • 使用者登入名稱 • SamAccountName與 userPrincipalName屬性 • 重設使用者帳戶的密碼 • 使用 SetPassword method • 帳戶停用與啟用 • 變更 AccountDisabled屬性 (v2) $objUser.put("SamAccountName","Alan") $objUser.SetPassword("Pa$$w0rd") $objUser.AccountDisabled="False"

  42. 設定 AD 中的群組類型 • 變更 Group 的 grouptype屬性值即可達成 • Security Type Global Scope 為 0x80000002 (default) • Security Type Domain Local Scope 為 0x80000004 • Security Type Universal Scope 為 0x80000008 • Distribution Type Global Scope 為 0x00000002 • Distribution Type Domain Local Scope 為 0x00000004 • Distribution Type Universal Scope 為 0x00000008 $objGroup.Put("GroupType",0x80000008) $objGroup.SetInfo()

  43. 群組成員管理 • 新增群組成員 • 使用 Add method, 加上新成員的 DN • 移除群組成員 • 使用 Remove method, 要移除的成員 DN • 列出群組成員 • 使用 Member 屬性 $objGroup.Add("LDAP://CN=Alan,DC=uuu,DC=com,DC=tw") $objGroup.Remove("LDAP://CN=Alan,DC=uuu, DC=com,DC=tw") $objGroup.Member

  44. 情境 • Vincent 顧問將協助資訊部門在兼顧安全的前提下,提昇 AD 管理效率. • 解決方案 • 使用PowerShell 指令檔進行 AD 管理 • 特別注意指令碼安全性與變更管理

  45. 相關資源 • TechNet 指令碼中心 • http://www.microsoft.com/taiwan/technet/scriptcenter/ • 使用 Windows PowerShell 撰寫指令碼 • http://www.microsoft.com/powershell • Windows PowerShell 線上說明 • http://technet.microsoft.com/en-us/library/bb978526.aspx • Windows PowerShell 部落格 • http://blogs.msdn.com/powershell

  46. 在何處取得TechNet相關資訊? • 訂閱 TechNet電子報 • http://www.microsoft.com/taiwan/technet/flash/ • 參加TechNet的活動 • http://www.microsoft.com/taiwan/technet/ • 下載 TechNet 研討會簡報與錄影檔 • http://www.microsoft.com/taiwan/technet/webcast/

  47. 周邊用餐指引

  48. 48

More Related