动态

详情 返回 返回

Powershell維護系統管理任務(五) - 动态 详情

目錄
  • 維護系統管理任務
    • 管理 AD 域服務
      • 管理組和組成員身份
        • 管理組
        • 創建新組
        • 管理組成員身份
      • 管理計算機帳户
        • 新建計算機帳户
        • 修復計算機賬户的信任關係
        • 賬户與設備管理cmdlet的區別
      • 管理組織單位和 AD 對象
        • 什麼是組織單位 (OU)?
        • OU 的 cmdlet
          • 創建新 OU
        • AD 對象 cmdlet
          • 創建新的 AD 對象
        • 實際案例
          • 批量創建 OU
          • 批量把用户放入 OU
          • 恢復誤刪的用户
    • 設備的網絡服務設置
      • 管理 IP 地址
        • 創建新的 IP 地址設置
        • 實際案例
      • 管理 IP 路由
        • 創建 IP 路由表條目
        • 實際案例
      • 管理 DNS 客户端
        • 實際案例
      • 防火牆設置
        • 實際案例
    • 管理 Windows Server 設置
      • 自動執行管理任務
        • 什麼是 GPO?
        • 常見任務
        • 實際案例
      • 管理服務器角色和服務
        • 實際案例
      • 管理 Hyper-V 虛擬機
        • 實際案例
      • 管理 IIS
        • 實際案例
    • 管理本地計算機的設置
      • 運行管理 cmdlet
      • 管理權限
        • 檢索訪問權限
        • 更新文件和文件夾訪問權限
        • 將安全描述符複製到新對象

維護系統管理任務

管理 AD 域服務

管理組和組成員身份

Active Directory 組管理與用户管理密切相關。 可使用 Windows PowerShell Active Directory 模塊的 cmdlet 來創建和刪除組並修改組屬性。 還可使用這些 cmdlet 來更改組成員身份。

管理組

下表列出了用於管理組的一些常見 cmdlet:

Cmdlet 説明
New-ADGroup 創建新組
Set-ADGroup 修改組的屬性
Get-ADGroup 顯示組的屬性
Remove-ADGroup 刪除組
Add-ADGroupMember 向組添加成員
Get-ADGroupMember 顯示組成員
Remove-ADGroupMember 從組中移除成員
Add-ADPrincipalGroupMembership 向對象添加組成員身份
Get-ADPrincipalGroupMembership 顯示對象的組成員身份
Remove-ADPrincipalGroupMembership 從對象中移除組成員身份

創建新組

可使用 New-ADGroup cmdlet 來創建組
使用 New-ADGroup cmdlet 創建組時,除了組名稱之外,還必須使用 -GroupScope 參數,此參數是唯一必需的參數
下表列出了 New‑ADGroup 的常用參數:

參數 説明
‑Name 定義組名稱
‑GroupScope 將組的範圍定義為 DomainLocal、Global 或 Universal;必須提供此參數
‑DisplayName 定義對象的輕型目錄訪問協議 (LDAP) 顯示名稱
‑GroupCategory 定義組是安全組還是通訊組;如果未指定,則會創建安全組
‑ManagedBy 定義可以管理組的用户或組
‑Path 定義會在其中創建組的 OU 或容器
‑SamAccountName 定義與舊操作系統向後兼容的名稱
例如,若要創建名為 FileServerAdmins 的新組,請在控制枱中輸入以下命令,然後按 Enter 鍵:
New-ADGroup -Name FileServerAdmins -GroupScope Global

管理組成員身份

可使用 *-ADGroupMember 或 *-ADPrincipalGroupMembership cmdlet 以兩種不同的方式進行組管理
這兩者的差異在於,是側重於對象和修改該對象所屬的組,還是側重於組和修改屬於該組的成員

  • *-ADGroupMember cmdlet 修改組的成員身份。 例如:

    • 可以添加或移除組成員。
    • 可以將組列表傳遞給這些 cmdlet。
    • 無法將成員列表通過管道傳遞給這些 cmdlet。
  • *-ADPrincipalGroupMembership cmdlet 修改對象(例如用户)的組成員身份。 例如:

    • 可以將用户帳户添加為組成員。
    • 無法向這些 cmdlet 提供組列表。
    • 可以將成員列表通過管道傳遞給這些 cmdlet。

管理計算機帳户

Windows PowerShell 的 Active Directory 模塊還具有用於創建、修改和刪除計算機帳户的 cmdlet。 可以將這些 cmdlet 用於單個操作,或將其作為腳本的一部分來執行批量操作。 用於管理計算機對象的 cmdlet 的名稱中帶有“computer”這個詞。

下表列出了可用於管理計算機帳户的 cmdlet:

Cmdlet 説明
New-ADComputer 新建計算機帳户
Set-ADComputer 修改計算機帳户的屬性
Get-ADComputer 顯示計算機帳户的屬性
Remove-ADComputer 刪除計算機帳户
Test-ComputerSecureChannel 驗證或修復計算機與域之間的信任關係
Reset-ComputerMachinePassword 重置計算機帳户密碼

新建計算機帳户

在將計算機加入域之前,可以使用 New-ADComputer cmdlet 命令新建一個計算機帳户
這樣做是為了在部署計算機之前,可以在正確的 OU 中創建計算機帳户

下表列出了 New-ADComputer 的常用參數:

參數 説明
‑Name 定義計算機帳户的名稱
‑Path 定義會在其中創建計算機帳户的 OU 或容器
‑Enabled 定義計算機帳户是啓用還是禁用;默認情況下會啓用計算機帳户,並生成隨機密碼

以下示例是可用於創建計算機帳户的命令:

New-ADComputer -Name LON-CL10 -Path "ou=marketing,dc=adatum,dc=com" -Enabled $true

意思是:

  • adatum.com 域marketing OU
  • 創建一個名為 LON-CL10 的計算機帳户
  • 並且讓它處於啓用狀態

解釋如下:
-Path

  • 指定計算機帳户要放在哪個 OU(組織單位)或容器裏。
  • 格式用 LDAP 路徑
"OU=marketing,DC=adatum,DC=com"
  • OU=marketing → 組織單位是 marketing
    • DC=adatum,DC=com → 域名是 adatum.com
      如果不寫 -Path,帳户會放在默認容器(通常是 CN=Computers)。

-Enabled

  • 是否啓用帳户。默認是 啓用 ($true)。
  • 如果你想先建一個佔位帳户但不啓用,可以設置 -Enabled $false
  • 創建時系統會為計算機帳户生成一個隨機密碼(這是域內部機制,管理員一般不需要管)。

修復計算機賬户的信任關係

在 Active Directory 裏,每一台加入域的電腦(域成員)都有一個 計算機帳户,而這個帳户和域之間會建立一個“安全信道(Secure Channel)”。
如果這個信道壞掉了(最常見原因:域控的密碼記錄和計算機本機存的密碼不同步),你登錄域賬號時會提示:

The trust relationship between this workstation and the primary domain failed.

修復方法如下
出問題的那台電腦 上,以管理員身份打開 PowerShell,運行:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)

  • -Repair → 嘗試重新建立本機和域控制器的安全信道。
  • -Credential → 需要輸入一個有 域管理員權限 的賬號,否則無法修復。
  • 如果修復成功,會返回 True
    這樣修復的好處是:不用把計算機退出域再重新加入,節省操作時間。

賬户與設備管理cmdlet的區別

注意:這章節只是告訴你賬户與計算機管理的命令區別而已

微軟在 PowerShell 裏把 AD 對象的管理物理計算機的管理 分開了,你可以這麼理解:

  1. *-ADComputer 系列(AD 模塊)
    • 作用:管理 Active Directory 中的計算機帳户對象
    • 它改的不是物理電腦,而是 AD 目錄裏的對象記錄。
    • 常見命令:
      • New-ADComputer → 新建計算機帳户
      • Get-ADComputer → 查詢計算機帳户
      • Set-ADComputer → 修改計算機帳户屬性(描述、OU、禁用/啓用等)
      • Remove-ADComputer → 刪除計算機帳户
        舉例:
        Get-ADComputer -Filter 'Name -like "LON-*"' -Properties OperatingSystem, LastLogonDate

這查的不是電腦本機信息,而是 AD 裏存儲的屬性


  1. *-Computer 系列(核心 PowerShell)
    • 作用:管理 真實計算機(本地或遠程)的操作系統和服務
    • 跟 AD 沒關係,哪怕不是域成員,也能用。
    • 常見命令:
      • Add-Computer → 把本機加入域或工作組
      • Restart-Computer → 重啓本機或遠程機
      • Stop-Computer → 關機
      • Get-ComputerInfo → 查看本機系統屬性
        舉例:
        Add-Computer -DomainName adatum.com -Credential adatum\Admin01 -Restart
        這條命令會把當前計算機加入 adatum.com 域,並重啓。

總結對比表

命令前綴 管理對象 使用場景
*-ADComputer AD 中的計算機帳户對象 在 AD 中批量建賬號、查詢 OU 結構、修改帳户屬性
*-Computer 真實計算機(OS 層面) 加入域、重啓、關機、查詢操作系統信息

類比

  • *-ADComputer = 人事系統裏的“員工檔案”(管理目錄裏的記錄)。
  • *-Computer = 員工本人(能讓他上班、下班、休息)。

管理組織單位和 AD 對象

什麼是組織單位 (OU)?

OU(Organizational Unit,組織單位) = AD 裏的 邏輯容器

  • 它不是一個用户/計算機,而是用來 組織管理對象的“文件夾”
  • 可以無限層級嵌套。
    OU 的用途:
  1. 分類管理對象(按部門、地點、功能來放用户/電腦)
    • 比如:OU=Sales(銷售部),OU=IT(技術部)
  2. 委派管理權限(把 OU 授權給某個部門管理員,只能管理自己 OU 下的對象)
  3. 應用組策略 (GPO)(OU 是 GPO 的主要作用範圍,OU 下的用户和計算機會受到對應策略的約束)
    舉例:
  • OU=Beijing(北京分公司)
    • OU=Sales
    • OU=HR
  • OU=Tokyo(東京分公司)
    • OU=Sales
    • OU=IT
      這樣不同城市、不同部門都能有自己的管理範圍。

OU 的 cmdlet

Windows PowerShell 提供可用於創建、修改和刪除 Active Directory 域服務 (AD DS) 組織單位 (OU) 的 cmdlet
與用於用户、組和計算機的 cmdlet 一樣,可以將這些 cmdlet 用於單個操作或作為腳本的一部分來執行批量操作

下表列出了可用於管理 OU 的 cmdlet:

Cmdlet 説明
New-ADOrganizationalUnit 創建 OU
Set-ADOrganizationalUnit 修改 OU 的屬性
Get-ADOrganizationalUnit 顯示 OU 的屬性
Remove-ADOrganizationalUnit 刪除 OU
創建新 OU

可以使用 New‑ADOrganizationalUnit cmdlet 創建新的 OU 來表示組織中的部門或物理位置
下表列出了 New‑ADOrganizationalUnit cmdlet 的常見參數

參數 説明
‑Name 定義新 OU 的名稱
‑Path 定義新 OU 的位置
‑ProtectedFromAccidentalDeletion 防止任何人意外刪除 OU;默認值為 $true
以下示例是用於創建新 OU 的命令:
New-ADOrganizationalUnit -Name Sales -Path "ou=marketing,dc=adatum,dc=com" -ProtectedFromAccidentalDeletion $true

AD 對象 cmdlet

*-ADObject cmdlet 有時比特定於對象類型的 cmdlet 的執行速度更快,這是因為這些 cmdlet 在其操作中納入了篩選適用對象集的成本

Cmdlet 説明
New-ADObject 創建新的 Active Directory 對象
Set-ADObject 修改 Active Directory 對象的屬性
Get-ADObject 顯示 Active Directory 對象的屬性
Remove-ADObject 刪除 Active Directory 對象
Rename-ADObject 重命名 Active Directory 對象
Restore-ADObject 從 Active Directory 回收站還原已刪除的 Active Directory 對象
Move-ADObject 將 Active Directory 對象從一個容器移動到另一個容器
Sync-ADObject 在兩個域控制器之間同步 Active Directory 對象
創建新的 AD 對象

可以使用 New‑ADObject cmdlet 創建對象
使用 New-ADObject 時,必須指定名稱和對象類型
下表列出了 New‑ADObject 的常見參數:

參數 説明
‑Name 定義對象的名稱
‑Type 定義對象的 LDAP 類型
‑OtherAttributes 定義無法從其他參數訪問的對象的屬性
‑Path 定義在其中創建對象的容器
以下命令會創建新的聯繫人對象:
New-ADObject -Name "AnaBowmancontact" -Type contact

實際案例

批量創建 OU

公司在北京、東京都有分公司,每個公司有 Sales、HR 部門

New-ADOrganizationalUnit -Name "Beijing" -Path "DC=adatum,DC=com"
New-ADOrganizationalUnit -Name "Tokyo"   -Path "DC=adatum,DC=com"

New-ADOrganizationalUnit -Name "Sales" -Path "OU=Beijing,DC=adatum,DC=com"
New-ADOrganizationalUnit -Name "HR"    -Path "OU=Beijing,DC=adatum,DC=com"
New-ADOrganizationalUnit -Name "Sales" -Path "OU=Tokyo,DC=adatum,DC=com"
New-ADOrganizationalUnit -Name "IT"    -Path "OU=Tokyo,DC=adatum,DC=com"
批量把用户放入 OU

自動把所有部門屬性為 "Sales" 的用户放進 Sales OU。

Get-ADUser -Filter {Department -eq "Sales"} | 
    Move-ADObject -TargetPath "OU=Sales,OU=Beijing,DC=adatum,DC=com"
恢復誤刪的用户

從 AD 回收站恢復 Alice 用户。

Restore-ADObject -Identity "CN=Alice,OU=Sales,DC=adatum,DC=com"

設備的網絡服務設置

管理 IP 地址

可以將 Get-Command 命令與 -Module NetTCPIP 參數配合使用來對其進行查找

下表列出了用於管理 IP 地址設置的常用 cmdlet:

Cmdlet 説明
New-NetIPAddress 創建新的 IP 地址
Get-NetIPAddress 顯示 IP 地址的屬性
Set-NetIPAddress 修改 IP 地址的屬性
Remove-NetIPAddress 刪除 IP 地址

創建新的 IP 地址設置

New-NetIPAddress cmdlet 需要 IPv4 或 IPv6 地址以及網絡接口的別名或索引
最佳做法是,還應同時設置默認網關和子網掩碼

下表列出了 New-NetIPAddress cmdlet 的常用參數

參數 説明
-IPAddress 定義要創建的 IPv4 或 IPv6 地址
-InterfaceIndex 為 IP 地址通過索引定義網絡接口
-InterfaceAlias 按名稱為 IP 地址定義網絡接口
-DefaultGateway 定義默認網關主機的 IPv4 或 IPv6 地址
-PrefixLength 定義 IP 地址的子網掩碼
以下命令創建針對以太網接口的新 IP 地址:
New-NetIPAddress -IPAddress 192.168.1.10 -InterfaceAlias "Ethernet" -PrefixLength 24 -DefaultGateway 192.168.1.1

New-NetIPAddress cmdlet 還接受 –AddressFamily 參數,該參數可定義 IPv4 或 IPv6 IP 地址系列。 如果不使用此參數,將自動檢測地址族屬性。

實際案例

獲取 IP 信息
顯示 WLAN 網卡的所有 IP(包括 IPv4/IPv6)

Get-NetIPAddress -InterfaceAlias "WLAN"

新建靜態 IP
給 Ethernet 配置一個固定 IP

New-NetIPAddress -IPAddress 192.168.1.50 -InterfaceAlias "Ethernet" -PrefixLength 24 -DefaultGateway 192.168.1.1

修改 IP
直接set即可

Set-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24

刪除 IP
刪除網卡上的某個 IP

Set-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Enabled

管理 IP 路由

IP 路由根據目標 IP 地址轉接數據包
此路由基於路由表,雖然條目會自動生成,但可能需要手動添加、刪除或修改路由表條目 NETTCPIP PowerShell 模塊還包括用於管理 Windows 服務器和設備的路由表的 cmdlet
下表列出了用於管理路由表條目和設置的常用 cmdlet:

Cmdlet 説明
New-NetRoute 在 IP 路由表中創建一個條目
Get-NetRoute 從 IP 路由表檢索條目
Set-NetRoute 修改 IP 路由表中條目的屬性
Remove-NetRoute 從 IP 路由表刪除條目
Find-NetRoute 標識到達遠程地址的最佳本地 IP 地址和路由

創建 IP 路由表條目

可以使用 New-NetRoute cmdlet 在 Windows 計算機上創建路由表條目
New-NetRoute cmdlet 要求標識網絡接口和目標前綴
下表列出了 New-NetRoute cmdlet 的常用參數:

參數 説明
‑DestinationPrefix 定義 IP 路由的目標前綴
‑InterfaceAlias 按別名為 IP 路由定義網絡接口
‑InterfaceIndex 按索引為 IP 路由定義網絡接口
‑NextHop 定義 IP 路由的下一個躍點
‑RouteMetric 定義 IP 路由的路由指標
以下命令會創建 IP 路由表條目:
New-NetRoute -DestinationPrefix 0.0.0.0/24 -InterfaceAlias "Ethernet" -DefaultGateway 192.168.1.1

實際案例

查看路由表
類似 Linux 的 route -n / ip route show

Get-NetRoute | Sort-Object RouteMetric

添加路由
讓發往 10.10.0.0/16 的流量走網關 192.168.1.1,優先級 20

New-NetRoute -DestinationPrefix "10.10.0.0/16" -InterfaceAlias "Ethernet" -NextHop 192.168.1.1 -RouteMetric 20

修改路由
把目標網絡的下一跳換掉

Set-NetRoute -DestinationPrefix "10.10.0.0/16" -NextHop 192.168.1.254

刪除路由

Remove-NetRoute -DestinationPrefix "10.10.0.0/16" -InterfaceAlias "Ethernet" -Confirm:$false

管理 DNS 客户端

PowerShell 提供用於管理 DNS 客户端設置、DNS 名稱查詢解析以及保護 DNS 客户端的 cmdlet
下表列出了用於修改 DNS 客户端設置的常見 cmdlet:

Cmdlet 説明
Get-DnsClient 獲取有關網絡接口的詳細信息
Set-DnsClient 設置網絡接口的 DNS 客户端配置設置
Get-DnsClientServerAddress 獲取網絡接口的 DNS 服務器地址設置
Set-DnsClientServerAddress 設置網絡接口的 DNS 服務器地址

以下命令為接口設置特定於連接的後綴:

Set-DnsClient -InterfaceAlias Ethernet -ConnectionSpecificSuffix "adatum.com"

實際案例

獲取DNS配置

Get-DnsClientServerAddress -InterfaceAlias "WLAN"

設置 DNS 服務器

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("8.8.8.8","8.8.4.4")

把 DNS 改成 Google DNS


恢復自動獲取 DNS

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses

設置連接特定的 DNS 後綴

Set-DnsClient -InterfaceAlias "Ethernet" -ConnectionSpecificSuffix "corp.adatum.com"

防火牆設置

PowerShell 支持 NetSecurity 模塊
下表列出了用於管理防火牆設置和規則的常見 cmdlet:

Cmdlet 説明
New-NetFirewallRule 創建新的防火牆規則
Set-NetFirewallRule 設置防火牆規則的屬性
Get-NetFirewallRule 獲取防火牆規則的屬性
Remove-NetFirewallRule 刪除防火牆規則。
Rename-NetFirewallRule 重命名防火牆規則
Copy-NetFirewallRule 創建防火牆規則的副本
Enable-NetFirewallRule 啓用防火牆規則
Disable-NetFirewallRule 禁用防火牆規則
Get-NetFirewallProfile 獲取防火牆配置文件的屬性
Set-NetFirewallProfile 設置防火牆配置文件的屬性

可以使用 Get-NetFirewallRule cmdlet 檢索防火牆規則的設置
使用以下 cmdlet 之一啓用或禁用規則:

  • 具有 -Enabled 參數的 Set-NetFirewallRule cmdlet
  • Enable-NetFirewallRule 或 Disable-NetFirewallRule cmdlet。

以下命令都可以啓用“遠程訪問”組中的防火牆規則:

Enable-NetFirewallRule -DisplayGroup "Remote Access"

Set-NetFirewallRule -DisplayGroup "Remote Access" -Enabled True

實際案例

查看所有防火牆規則

Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action

啓用防火牆規則

Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

添加新規則(允許 TCP 8080)

New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

禁用規則

Disable-NetFirewallRule -DisplayName "Allow TCP 8080"

刪除規則

Remove-NetFirewallRule -DisplayName "Allow TCP 8080"

管理 Windows Server 設置

自動執行管理任務

什麼是 GPO?

  • GPO (Group Policy Object,組策略對象) 是一種集中管理機制,用於在 Active Directory 域環境下對用户和計算機的配置進行統一管理。
  • 通過 GPO,管理員可以控制:
    • 用户登錄腳本、桌面壁紙、軟件安裝
    • 安全設置(如密碼策略、賬户鎖定策略)
    • Windows 防火牆、網絡配置、註冊表項
    • 應用程序限制(禁止運行某些程序)
      換句話説:
  • 沒有 GPO → 每台機器單獨設置,很累。
  • 有了 GPO → 一次配置,全域用户/計算機自動應用。

GPO 管理 Cmdlet 模塊:GroupPolicy
需要 RSAT 工具 (Remote Server Administration Tools),默認在域控服務器有

Cmdlet 説明
New-GPO 創建新 GPO
Get-GPO 檢索 GPO
Set-GPO 修改 GPO 的屬性
Remove-GPO 刪除 GPO
Rename-GPO 重命名 GPO
Backup-GPO 備份域中的一個或多個 GPO
Copy-GPO 將 GPO 從一個域複製到另一個域
Restore-GPO 從備份文件還原 GPO
New-GPLink 將 GPO 鏈接到 AD DS 容器
Import-GPO 從備份的 GPO 導入 GPO 設置
Set-GPRegistryValue 在 GPO 中配置一個或多個基於註冊表的策略設置

常見任務

創建一個新的 GPO

New-GPO -Name "IT Security Policy" -Comment "強制IT部門安全策略"

創建名為 IT Security Policy 的 GPO(但還沒應用到 OU)


將 GPO 鏈接到 OU

New-GPLink -Name "IT Security Policy" -Target "OU=IT,DC=adatum,DC=com"

把 GPO 鏈接到 IT 部門 OU,裏面的計算機和用户就會收到該策略。


設置策略項(基於註冊表的)
比如:強制屏幕保護程序 10 分鐘後自動啓動:

Set-GPRegistryValue -Name "IT Security Policy" `
  -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" `
  -ValueName "ScreenSaveTimeOut" `
  -Type String `
  -Value "600"

600 秒 = 10 分鐘。所有應用此 GPO 的用户都會被強制執行。


生成報告

Get-GPOReport -Name "IT Security Policy" -ReportType Html -Path "C:\Reports\ITSecurityGPO.html"

導出 GPO 的詳細設置,方便審計。


備份 & 還原
備份所有 GPO:

Backup-GPO -All -Path "C:\GPOBackups"

還原某個 GPO:

Restore-GPO -Name "IT Security Policy" -Path "C:\GPOBackups"

實際案例

案例 1:統一安全策略

  • 需求:全公司用户密碼策略 → 最少 12 位,90 天過期。
  • 做法:
    1. 創建 Security Baseline GPO
    2. 配置密碼策略、鎖定策略
    3. 鏈接到 域根 (DC=adatum,DC=com)
      全域用户自動生效。

案例 2:應用部門桌面壁紙

  • 需求:市場部電腦統一壁紙為公司 logo
  • 做法:
    Set-GPRegistryValue -Name "Marketing GPO" ` -Key "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" ` -ValueName "Wallpaper" ` -Type String ` -Value "\\fileserver\share\wallpapers\company.jpg"

鏈接到 OU=Marketing,市場部電腦就統一壁紙。


案例 3:軟件限制

  • 需求:禁止運行遊戲程序 game.exe
  • 做法:創建 GPO → 配置軟件限制策略 (SRP) → 鏈接到 OU=Students
    學生機一運行 game.exe 就被攔截。

管理服務器角色和服務

常見 Cmdlet(ServerManager 模塊)

Cmdlet 説明
Get-WindowsFeature 查看所有角色和功能,包含是否已安裝
Install-WindowsFeature 安裝角色或功能(等價於 GUI 裏的 “添加角色和功能” 嚮導)
Uninstall-WindowsFeature 卸載角色或功能

注意:這些 Cmdlet 只在 Windows Server 上能用,如果在 Windows 10/11 上運行,會報錯。


常見角色和功能示例

角色/功能名稱 = 內部名字(有別名)。
可用 Get-WindowsFeature 查看完整列表。

  • IIS (Web-Server) → 互聯網信息服務 (Web 服務器)
  • AD-Domain-Services → Active Directory 域服務
  • DNS → DNS 服務器
  • DHCP → DHCP 服務
  • NPAS → 網絡策略和訪問服務
  • RSAT → 遠程服務器管理工具
  • Hyper-V → 虛擬化

實際案例

查看本機已安裝/可安裝的角色和功能
輸出表格,[X] 表示已安裝,[ ] 表示未安裝。

Get-WindowsFeature

安裝角色或功能(單台服務器)
安裝 IIS 角色,並附帶管理工具。

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

卸載角色或功能
卸載IIS

Uninstall-WindowsFeature -Name Web-Server

在遠程服務器上安裝功能

$servers = "Server01","Server02","Server03"
foreach ($srv in $servers) {
    Install-WindowsFeature -Name Web-Server -ComputerName $srv -IncludeManagementTools
}

一次性給多台服務器裝 IIS。


導出/導入服務器角色配置
導出一台服務器的角色/功能列表:

Get-WindowsFeature | Where-Object Installed | Export-Clixml "C:\roles.xml"

在另一台服務器上安裝同樣的配置:

$roles = Import-Clixml "C:\roles.xml"
$roles | Where-Object Installed | ForEach-Object {
    Install-WindowsFeature -Name $_.Name
}

實現 “一鍵克隆配置”

管理 Hyper-V 虛擬機

  • Hyper-V 模塊 提供 200+ 個 PowerShell Cmdlet,用來管理虛擬機、虛擬硬盤、虛擬交換機等虛擬化資源。
  • 可以在兩種環境裏使用:
    1. Windows Server 安裝 Hyper-V 角色時,自帶 PowerShell 模塊。
    2. Windows 10/11 專業版或企業版 安裝 Hyper-V 功能時,包含 Hyper-V 管理工具模塊。

Cmdlet 命名前綴

  • VM → 虛擬機相關(Get-VM、Start-VM …)
  • VHD → 虛擬硬盤(New-VHD、Resize-VHD …)
  • VFD → 虛擬軟盤(很少用,基本過時)

常見虛擬機管理 Cmdlet

Cmdlet 功能
Get-VM 獲取虛擬機信息(狀態、CPU、內存、磁盤等)
New-VM 新建虛擬機(指定名稱、內存、虛擬磁盤等)
Set-VM 修改虛擬機配置(CPU、內存、網絡適配器等)
Start-VM 啓動虛擬機
Stop-VM 關閉虛擬機(等價於強制關機或正常關機,可選 -Force
Restart-VM 重啓虛擬機
Suspend-VM 暫停虛擬機(掛起狀態)
Resume-VM 恢復掛起的虛擬機
Checkpoint-VM 給虛擬機創建檢查點(快照)
Export-VM 導出虛擬機(完整配置+磁盤)
Import-VM 從導出文件導入虛擬機

常見虛擬硬盤 Cmdlet

Cmdlet 功能
New-VHD 創建虛擬硬盤(固定大小 / 動態擴展)
Resize-VHD 調整 VHD 文件大小
Mount-VHD 掛載 VHD 到宿主系統
Dismount-VHD 卸載 VHD

實際案例

獲取所有虛擬機信息

Get-VM

顯示虛擬機的 名稱、狀態、CPU 使用率、內存分配 等。


新建虛擬機

New-VM -Name "TestVM" -MemoryStartupBytes 2GB -NewVHDPath "D:\VMs\TestVM\TestVM.vhdx" -NewVHDSizeBytes 40GB -Generation 2 -SwitchName "Default Switch"

創建一台名為 TestVM 的二代虛擬機,分配 2GB 內存、40GB 虛擬磁盤,並連接到默認交換機。


修改虛擬機配置

Set-VM -Name "TestVM" -MemoryStartupBytes 4GB -ProcessorCount 4

把虛擬機內存改成 4GB,CPU 改為 4 核。


啓動、暫停、關閉虛擬機

Start-VM -Name "TestVM"
Suspend-VM -Name "TestVM"
Resume-VM -Name "TestVM"
Stop-VM -Name "TestVM" -Force

類似物理機的開機、掛起、恢復、強制關機。


創建快照(檢查點)

Checkpoint-VM -Name "TestVM" -SnapshotName "BeforeUpdate"

給虛擬機打一個快照,方便出問題時回滾。


導出 / 導入虛擬機

Export-VM -Name "TestVM" -Path "D:\VMBackup\TestVM"
Import-VM -Path "D:\VMBackup\TestVM\TestVM.vmcx"

把虛擬機完整導出到備份目錄,然後導入到同一台或另一台服務器。

管理 IIS

  • IIS(Internet Information Services) 是 Windows 自帶的 Web 服務器角色。
  • 通過 PowerShell,可以自動化管理 站點、應用程序、虛擬目錄、應用程序池 等。
  • 模塊:
    • IISAdministration(推薦,較新,未來標準) → Cmdlet 前綴:IIS
    • WebAdministration(老模塊,仍能用) → Cmdlet 前綴:Web
      一般來説:
  • 管理 網站/站點IISSite
  • 管理 Web 應用WebApplication
  • 管理 應用程序池WebAppPool

常見 IIS Cmdlet

Cmdlet 功能
New-IISSite 新建 IIS 網站(指定物理路徑、端口、主機頭)
Get-IISSite 獲取現有 IIS 網站信息
Start-IISSite 啓動站點
Stop-IISSite 停止站點
New-WebApplication 在現有站點下創建 Web 應用
Remove-WebApplication 刪除 Web 應用
New-WebAppPool 創建新的應用程序池
Restart-WebAppPool 重啓應用程序池

實際案例

創建一個新網站

New-IISSite -Name "MySite" -PhysicalPath "C:\inetpub\mysite" -BindingInformation "*:8080:"

創建一個名為 MySite 的網站,綁定端口 8080,使用本地目錄 C:\inetpub\mysite


查看所有網站狀態

Get-IISSite

輸出站點列表,包括名稱、ID、狀態(Started/Stopped)、綁定信息。


啓動 / 停止網站

Start-IISSite -Name "MySite"
Stop-IISSite -Name "MySite"

類似 IIS 管理器裏的 啓動/停止按鈕


創建 Web 應用程序

New-WebApplication -Name "ShopApp" -Site "MySite" -PhysicalPath "C:\inetpub\mysite\shop" -ApplicationPool "ShopPool"

MySite 站點下創建名為 ShopApp 的 Web 應用,物理路徑是 shop 文件夾,並分配到應用程序池 ShopPool


創建應用程序池

New-WebAppPool -Name "ShopPool"

創建名為 ShopPool 的應用程序池。


重啓應用程序池

Restart-WebAppPool -Name "ShopPool"

解決 Web 應用 內存泄漏或進程卡死 的常見做法。

管理本地計算機的設置

下表列出了 Microsoft.PowerShell.Management 模塊中包含的一些更常見的 cmdlet:

Cmdlet 描述
Get-ComputerInfo 從計算機檢索所有系統和操作系統屬性
Get-Service 檢索計算機上的所有服務的列表
Get-EventLog 從本地和遠程計算機檢索事件和事件日誌(僅在 Windows PowerShell 5.1 中可用)
Get-Process 檢索本地或遠程計算機上所有活動進程的列表
Stop-Service 停止一個或多個正在運行的服務
Stop-Process 停止一個或多個正在運行的進程
Stop-Computer 關閉本地和遠程計算機
Clear-EventLog 刪除本地計算機或遠程計算機上的指定事件日誌中的所有條目
Clear-RecycleBin 清空計算機回收站的內容
Restart-Computer 重新啓動本地和遠程計算機上的操作系統
Restart-Service 停止然後啓動一項或多項服務

運行管理 cmdlet

若要檢索有關本地計算機的詳細信息,請運行以下命令:

Get-ComputerInfo

若要從應用程序日誌檢索最新的五個錯誤條目,請運行以下命令:

Get-EventLog -LogName Application -Newest 5 -EntryType Error

若要清除本地計算機上的應用程序日誌,請運行以下命令:

Clear-EventLog -LogName Application

管理權限

Microsoft.PowerShell.Security 模塊包含許多內置 cmdlet,可用於管理 Windows 計算機上的基本安全功能。 若要查看此模塊中包含的 cmdlet,可以輸入以下命令:

Get-command -module Microsoft.PowerShell.Security

要管理對文件或文件夾的訪問權限,可使用 Microsoft.PowerShell.Security 模塊中包含的以下 cmdlet:

Cmdlet 描述
Get-Acl 此 cmdlet 獲取表示文件或資源安全描述符的對象。 安全描述符包括資源的訪問控制列表 (ACL)。 ACL 列出了用户和組訪問資源所具有的權限。
Set-Acl 此 cmdlet 更改指定項(例如文件、文件夾或註冊表項)的安全描述符,用於匹配提供的安全描述符中的值。

檢索訪問權限

Get-Acl 顯示對象的安全描述符

Get-Acl -Path C:\Folder1|Format-List

通過使用以下命令,可檢索更詳細的訪問屬性列表,其中包含指定對象的文件系統權限、訪問控制類型和繼承設置:

(Get-Acl -Path C:\Folder1).Access

還可以僅檢索以表格格式設置的特定 Access 屬性,如以下示例所示:

(Get-Acl -Path C:\Folder1).Access|Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited

更新文件和文件夾訪問權限

Set-Acl cmdlet 用於將更改應用到特定對象的 ACL。 修改文件或文件夾權限的過程包括以下步驟:

  1. 使用 Get-Acl 檢索對象的現有 ACL 規則。
  2. 新建 FileSystemAccessRule,並將其應用於對象。
  3. 將新規則添加到現有 ACL 權限集。
  4. 使用 Set-Acl 將新 ACL 應用於現有文件或文件夾。

第一步是聲明包含 Folder1 的現有 ACL 規則的變量:

$ACL = Get-Acl -Path C:\Folder1

第二步是新建 FileSystemAccessRule 變量,該變量指定要應用的訪問規範:

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("User1","Modify","Allow")

第三步是將新的訪問規則添加到 Folder1 的現有 ACL 規則中:

$ACL.SetAccessRule($AccessRule)

最後,需要將新的 ACL 應用於 Folder1:

$ACL | Set-Acl -Path C:\Folder1

將安全描述符複製到新對象

如果要將確切的安全描述符複製到新對象,可以使用 Get-Acl 和 Set-Acl 命令的組合,如下所示:

Get-Acl -Path C:\Folder1|Set-ACL -Path C:\Folder2

這些命令將值從 C:\Folder1 的安全描述符複製到 Folder2 的安全描述符。 命令完成後,兩個文件夾的安全描述符是相同的。

Add a new 评论

Some HTML is okay.