- 0x00 PS 基礎介紹
- 0x01 PS 生命周期
- 0x03 PS 基礎安裝
- Windows 安裝方式
- Linux 安裝方式
- Docker 容器安裝方式
- 從 Windows PowerShell 5.1 遷移到 PowerShell 7
- 0x04 PS 運作模式
0x00 PS 基礎介紹
描述: PowerShell 是建構于 .NET 上基于任務的指令行 shell 和腳本語言。 PowerShell 可幫助系統管理者和進階使用者快速自動執行用于管理作業系統(Linux、macOS 和 Windows)和流程的任務, 其實可以看做是C#的簡化版本還與PHP語言有相似之處(文法),與我們可以采用
ISE 內建腳本環境
進行PS腳本腳本編寫;
Tips : 多年來,PowerShell 已有很多版本釋出。 最初,Windows PowerShell 是在 .NET Framework 基礎之上建構而成,僅适用于 Windows 系統。 在最新版本中PowerShell 使用 .NET Core 5.0 作為運作時,此時它可以在 Windows、macOS 和 Linux 平台上運作。
Q: PowerShell VS Shell?
答: PS腳本語言與Linux上的Shell有一緻之處, 雖然現在伺服器基本都采用Linux,但是針對于某些資料庫安裝環境也還必須是Windows或者是線上上的應用無法遷移到Linux,而Windows中的Bat無疑是太舊太老,不如PowerShell功能強大并且支援子產品化程式設計。這也是我為什麼脫離了Bat而進入PS坑的原因;
Powershell特點:
- PowerShell 指令可以從指令行管理計算機(十分友善)。
- PowerShell Core 支援 Windows、macOS 和 Linux 平台,一般運作在
以上自帶的個人pc和伺服器上使用普遍;window7-window server 2012及
- PowerShell 提供程式可讓你
,與你通路檔案系統一樣友善。通路資料存儲(如系統資料庫和證書存儲)
- PowerShell 具有豐富的
。表達式分析器和完全開發的腳本語言
- PowerShell 旨在消除長期存在的問題和添加新功能,進而改進指令行和腳本環境。
- PowerShell 結合了互動式 shell 和腳本編寫環境,可以通路指令行工具(指令系列是可擴充的)、COM 對象和 .NET 類庫。
- PowerShell 基于對象而非文本,是以輸出是基于對象的。
- PowerShell 基于.NET Framework 建構它與 C# 程式設計語言共享一些文法功能和關鍵字。
- PowerShell 是開放源代碼項目 Github
設計目标:
- 可發現性:管理系統是一項複雜的任務。 具有一緻的接口的工具有助于控制固有的複雜性
- 一緻性 : 管理系統是一項複雜的任務,具有一緻的接口的工具有助于控制固有的複雜性
- 互動式腳本編寫環境: Windows 指令提示符提供了一個可通路指令行工具和基本腳本的互動式 shell,
具有可編寫腳本的指令行工具和 COM 自動化對象,但不提供互動式 shell。Windows 腳本宿主 (WSH)
- 面向對象:PowerShell 基于對象而非文本
- 互動式腳本編寫環境:Windows 指令提示符提供了一個可通路指令行工具和基本腳本的互動式 shell
- 輕松轉換到腳本:借助 PowerShell 的指令可發現性,可以從以互動方式鍵入指令輕松轉換為建立和運作腳本
PowerShell版本:
- Windows PowerShell: 從 Windows 7 SP1 和 Windows Server 2008 R2 SP1 開始,每個 Windows 中預設随附安裝有 Windows PowerShell。
- PS 3.0 : Windows 7 SP1 (預裝) / Windows 8預設安裝
- PS 4.0 : Windows 8.1
- PS 5.0 : 已被 Windows PowerShell 5.1 取代
- PS 5.1 : Windows 10 / Windows Server 2016
- 6.0 / 7.0 / 7.1 : PowerShell Core:微軟為了貼近Linux增加其系統的擴充性,在Windows中内置了Linux系統并且同時開源了PowerShell Core了,利用它我們就可以跨平台進行管理計算機了;
注意: Windows PowerShell 是為 .NET Framework 編寫的,而 PowerShell Core 是為 .NET Core 編寫的。 可移植子產品是同時适用于 Windows PowerShell 和 PowerShell Core 的子產品。
PowerShell 7: 是專為雲、本地和混合環境設計的,它包含增強功能和新功能。
- 與 Windows PowerShell 并行安裝和運作
- 提升了與現有 Windows PowerShell 子產品的相容性
- 新語言功能(如三元運算符和 ForEach-Object -Parallel)
- 提高了性能
- 基于 SSH 的遠端處理
- 跨平台互操作性
- 支援 Docker 容器
PowerShell系統要求
- 作業系統要求: Windows 7 Service Pack 1~Windows Server 2019 (注意區間中的各個PS版本)
- PowerShell Core == .NET Core (>= 6.x)
- Microsoft .NET Framework 要求
- PS 5.1 == .NET Framework 4.5
- PS 5.0 == .NET Framework 4.5
- PS 4.0 == .NET Framework 4.5
- PS 3.0 == .NET Framework 4
- Windows Management Framework 4.0
- WS-Management 3.0
- Windows Management Instrumentation 3.0
- 公共語言運作時 4.0
- 圖形使用者界面要求
參考網站:
Powershell Core : 新的PowerShell版本:https://aka.ms/pscore6
Micrisoft PowerShell Docs : https://msdn.microsoft.com/powershell/scripting/setup/windows-powershell-system-requirements
PowerShell 中文文檔: https://docs.microsoft.com/zh-cn/powershell/
PowerShell 線上教程: https://www.pstips.net/powershell-online-tutorials
0x01 PS 生命周期
描述: PowerShell 是獨特的工具群組件集,該集從 Windows PowerShell 單獨傳輸、安裝和配置。
PowerShell 7 生命周期說明: 釋出 PowerShell 7 後,PowerShell 繼續受 Microsoft 新式生命周期政策支援,但支援日期連結到 .NET Core 的支援生命周期。 在此服務方法中,客戶可以選擇長期支援 (LTS) 版本或目前版本。
Tips : 必須安裝最新的修補程式更新才能獲得支援。 例如如果你運作的是 PowerShell 7.0,并且已釋出 7.0.1,則必須更新到 7.0.1 才能獲得支援。
PowerShell 曆史版本:
版本 釋出日期 注意
PowerShell 7.1(目前版本) 2020 年 11 月 基于 .NET Core 5.0(目前版本)生成。
PowerShell 7.0 (LTS) 2020 年 3 月 基于 .NET Core 3.1 (LTS) 生成。
PowerShell 6.2 2019 年 3 月
PowerShell 6.1 2018 年 9 月 基于 .NET Core 2.1 生成。
PowerShell 6.0 2018 年 1 月 第一版,基于 .NET Core 2.0 生成。 可在 Windows、Linux 和 macOS 上安裝。
PowerShell 5.1 2016 年 8 月 在 Windows 10 周年更新和 Windows Server 2016 中釋出。
PowerShell 5.0 2016 年 2 月 在 Windows Management Framework (WMF) 5.0 中釋出。
PowerShell 4.0 2013 年 10 月 在 Windows 8.1 中與 Windows Server 2012 R2 內建。 可在 Windows 7 SP1、Windows Server 2008 R2 SP1 和 Windows Server 2012 上安裝。
PowerShell 3.0 2012 年 10 月 在 Windows 8 中與 Windows Server 2012 內建。 可在 Windows 7 SP1、Windows Server 2008 SP1 和 Windows Server 2008 R2 SP1 上安裝。
PowerShell 2.0 2009 年 7 月 在 Windows 7 中與 Windows Server 2008 R2 內建。 可在 Windows XP SP3、Windows Server 2003 SP2 和 Windows Vista SP1 上安裝。
PowerShell 1.0 2006 年 11 月 可在 Windows XP SP2、Windows Server 2003 SP1 和 Windows Vista 上安裝。 Windows Server 2008 的可選元件。
PowerShell支援7.0與7.1版本:
平台 7.0 7.1
Windows 8.1 和 10 支援 支援
Windows Server 2012 R2、2016、2019 支援 支援
Windows Server 半年頻道 支援 支援
Ubuntu 16.04、18.04 支援 支援
Ubuntu 20.04 不支援 支援
Ubuntu 19.10、20.10(通過 Snap 包) 社群 支援
Debian 9 支援 支援
Debian 10 支援 支援
CentOS 7 支援 支援
CentOS 8 支援 支援
Red Hat Enterprise Linux 7 支援 支援
Red Hat Enterprise Linux 8 支援 支援
Fedora 31+ 支援 不支援
Alpine 3.10 檢視注釋 1 不支援
Alpine 3.11+ 檢視注釋 1 檢視注釋 1
macOS 10.13+ 支援 支援
Arch 社群 社群
Raspbian 社群 社群
Kali 社群 社群
AppImage(可在多個 Linux 平台上運作) 社群 社群
Snap 包 檢視注釋 2 檢視注釋
Tips: 備注
- 1 - Alpine 不支援 CIM、PowerShell 遠端處理和 DSC。
- 2 - Snap 包與正在運作此包的發行版受到相同的支援。
安全服務标準
描述: PowerShell 遵守 Microsoft 的 Windows 安全服務标準。
功能 類型
執行政策 深層防禦
系統鎖定 - 通過 AppLocker 深層防禦
受限制的語言模式 - 通過 AppLocker 深層防禦
系統鎖定 - 通過 WDAC 安全功能
受限制的語言模式 - 通過 WDAC 安全功能
Reference: PowerShell 支援生命周期參考
0x03 PS 基礎安裝
PowerShell 是 GitHub 上的開放源代碼項目(https://github.com/PowerShell/PowerShell/),其可以安裝在多個作業系統平台之上:
- 在 Windows 上安裝 PowerShell
- 在 Linux 上安裝 PowerShell
- 在 macOS 上安裝 PowerShell
- 在 ARM 上安裝 PowerShell
Windows 安裝方式
描述: 若要在 Windows 上安裝 PowerShell,請從 GitHub 下載下傳最新安裝包:
PowerShell-7.1.3-win-x64.msi
PowerShell-7.1.3-win-x64.zip
PowerShell-7.1.3-win-x86.msi
PowerShell-7.1.3-win-x86.zip
在安裝過程中建立系統資料庫項:
描述: 從 PowerShell 7.1 開始,MSI 包将建立用于存儲 PowerShell 安裝位置和版本的系統資料庫項。 這些值位于 HKLM\Software\Microsoft\PowerShellCore\InstalledVersions<GUID> 中。 每種内部版本類型(發行版或預覽版)、主要版本和體系結構的 的值都是唯一的。
釋出 體系結構 系統資料庫項
7.1.x 版本 x86 HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\1d00683b-0f84-4db8-a64f-2f98ad42fe06
7.1.x 版本 X64 HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\31ab5147-9a97-4452-8443-d9709f0516e1
7.1.x 預覽版 x86 HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\86abcfbd-1ccc-4a88-b8b2-0facfde29094
7.1.x 預覽版 X64 HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\39243d76-adaf-42b1-94fb-16ecf83237c8
Tips : 管理者和開發人員可以使用此值查找 PowerShell 的路徑。 所有預覽版本和次要版本的 值都是相同的。 每個主要版本的 值都有所變化。
安裝方式:
- 安裝 MSI 包 : 下載下傳後輕按兩下安裝程式并按照提示進行操作。
1.安裝程式在 Windows“開始”菜單中建立一個快捷方式。
# 預設情況下,包安裝位置為 $env:ProgramFiles\PowerShell\<version>
# 可以通過“開始”菜單或 $env:ProgramFiles\PowerShell\<version>\pwsh.exe 啟動 PowerShell
2.PowerShell 7.1 安裝到新目錄,并與 Windows PowerShell 5.1 并行運作。
# PowerShell 7.1 是就地更新,更新後會替換 PowerShell 6.x 或 PowerShell 7.0。
# 如果需要與其他版本并行運作 PowerShell 7.1,請使用 ZIP 安裝方法将其他版本安裝到其他檔案夾。
- 安裝 ZIP 包 : 提供有 PowerShell 二進制 ZIP 存檔,進而支援進階部署方案, Tips 與安裝 MSI 包不一樣,安裝 ZIP 存檔不會檢查先決條件(是以你需要檢測自己是否滿足先決條件)
你可以使用此方法安裝任何版本的 PowerShell,包括最新版本:
# 穩定版:https://aka.ms/powershell-release?tag=stable
# 預覽版:https://aka.ms/powershell-release?tag=preview
# LTS 版本:https://aka.ms/powershell-release?tag=lts
按版本列出的安裝位置:
# Windows PowerShell 5.1:$env:WINDIR\System32\WindowsPowerShell\v1.0
# PowerShell Core 6.x:$env:ProgramFiles\PowerShell\6
# PowerShell 7:$env:ProgramFiles\PowerShell\7
- 在 Nano Server 上進行部署: 若要将 PowerShell 部署到 Nano Server,請按照以下步驟操作。
# 1.連接配接到 Windows PowerShell 的内置執行個體
$session = New-PSSession -ComputerName <Nano Server IP address> -Credential <An Administrator account on the system>
# 2.将檔案複制到 Nano Server 執行個體
Copy-Item <local PS Core download location>\powershell-<version>-win-x64.zip c:\ -ToSession $session
# 3.輸入會話
Enter-PSSession $session
# 4.提取 ZIP 檔案
# Insert the appropriate version.
Expand-Archive -Path C:\powershell-<version>-win-x64.zip -DestinationPath "C:\PowerShell_<version>"
# 如果需要基于 WSMan 的遠端處理,請按照說明使用[“另一種執行個體技術”][]建立遠端處理終結點。
- 通過 Winget 安裝 PowerShell : 通過 winget 指令行工具,開發人員可以在 Windows 10 計算機上查找、安裝、更新、删除和配置應用程式。 此工具是 Windows 程式包管理器服務的用戶端接口(目前 winget 是預覽功能 - 2021年3月25日 09:44:23)。
- 從 Microsoft Store 安裝
Tips : 如何建立遠端處理終結點?
PowerShell 同時支援采用 WSMan 和 SSH 的 PowerShell 遠端處理協定 (PSRP)
在 PowerShell Core 中進行 SSH 遠端處理
在 PowerShell Core 中進行 WSMan 遠端處理
Reference: 安裝各種版本的 PowerShell
Linux 安裝方式
描述: GitHub 版本頁面上提供有所有可用包,安裝包以後從終端運作 pwsh 如果是預覽版則是pwsh-preview。。
Tips : PowerShell 7 是就地更新,更新後會删除 PowerShell Core 6.x。
-
檔案夾被替換為 /usr/local/microsoft/powershell/6
。/usr/local/microsoft/powershell/7
- 如果需要與 PowerShell 7 并行運作 PowerShell 6,請使用二進制存檔方法重新安裝 PowerShell 6。
Tips :對于未獲得官方支援的 Linux 分發,可嘗試使用 PowerShell Snap 包安裝 PowerShell。 還可嘗試直接使用 Linux tar.gz存檔 部署 PowerShell 二進制檔案,但是需要在各個步驟中基于 OS 設定必要的依賴項。
安裝方式:
- 1.主流:
- 官方支援的版本(通過包存儲庫安裝/通過直接下載下傳進行安裝)
- 社群支援的版本
- 2.備選:
- Snap 包
- 二進制存檔
- .NET 全局工具
Ubuntu 20.04
- 1.通過包存儲庫安裝 - Ubuntu 20.04
# Update the list of packages
sudo apt-get update
# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https software-properties-common
# Download the Microsoft repository GPG keys
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of products
sudo apt-get update
# Enable the "universe" repositories
sudo add-apt-repository universe
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh
# 驗證安裝得PowerShell
PS /home/weiyigeek/> $PSVersionTable
# Name Value
# ---- -----
# PSVersion 7.1.3
# PSEdition Core
# GitCommitId 7.1.3
# OS Linux 5.8.0-38-generic #43~20.04.1-Ubuntu SMP Tue Jan 12 16:39:47 U\u2026
# Platform Unix
# PSCompatibleVersions {1.0, 2.0, 3.0, 4.0\u2026}
# PSRemotingProtocolVersion 2.3
# SerializationVersion 1.1.0.1
# WSManStackVersion 3.0
weiyigeek@Ubuntu-PC:~/
> dpkg --list | grep "powershell"
ii powershell 7.1.3-1.ubuntu.20.04 amd64 PowerShell is an automation and configuration management platform.

- 2.通過将 Debian 包 powershell_7.1.3-1.ubuntu.20.04_amd64.deb 下載下傳到 Ubuntu 計算機。
sudo dpkg -i powershell_7.1.3-1.ubuntu.20.04_amd64.deb
# dpkg -i 指令失敗,未滿足依賴項。 下一指令 apt-get install -f 解決此類問題,然後完成 PowerShell 包配置。
sudo apt-get install -f
Tips : 解除安裝 - Ubuntu 20.04
sudo apt-get remove powershell
Red Hat Enterprise Linux (RHEL) 7
描述: 為簡化安裝和更新,已将适用于 Linux 的 PowerShell 釋出到正式的 Microsoft 存儲庫()。
# 方式1.以超級使用者身份注冊 Microsoft 存儲庫一次。 注冊後,可以通過 sudo yum update powershell 更新 PowerShell。
# Register the Microsoft RedHat repository
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
# Install PowerShell
sudo yum install -y powershell
# Start PowerShell
pwsh
# 方式2.将 RPM 包 powershell-7.1.3-1.rhel.7.x86_64.rpm 下載下傳到 Red Hat Enterprise Linux 計算機
sudo yum install powershell-7.1.3-1.rhel.7.x86_64.rpm
# 無需該中間下載下傳步驟即可安裝 RPM
sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v7.1.3/powershell-7.1.3-1.rhel.7.x86_64.rpm
Tips : 解除安裝 - Red Hat Enterprise Linux (RHEL) 7
sudo yum remove powershell
Kali
Kali 支援不受 Microsoft 的官方支援且由社群維護。
# 1.安裝 - Kali
# Install PowerShell package
apt update && apt -y install powershell
# Start PowerShell
pwsh
# 2.解除安裝 - Kali
# Uninstall PowerShell package
apt -y remove powershell
Debian 10
描述: Debian 10 僅在 PowerShell 7.0 以及更新版本中受到支援。
- 1.通過包存儲庫安裝 - Debian 10
# Download the Microsoft repository GPG keys
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of products
sudo apt-get update
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh
- 2.将 tar.gz 包 powershell-7.1.3-linux-x64.tar.gz 下載下傳到 Debian 計算機。
sudo apt-get update
# install the requirements
sudo apt-get install -y \
less \
locales \
ca-certificates \
libicu63 \
libssl1.1 \
libc6 \
libgcc1 \
libgssapi-krb5-2 \
liblttng-ust0 \
libstdc++6 \
zlib1g \
curl
# Download the powershell '.tar.gz' archive
curl -L https://github.com/PowerShell/PowerShell/releases/download/v7.1.3/powershell-7.1.3-linux-x64.tar.gz -o /tmp/powershell.tar.gz
# Create the target folder where powershell will be placed
sudo mkdir -p /opt/microsoft/powershell/7
# Expand powershell to the target folder
sudo tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7
# Set execute permissions
sudo chmod +x /opt/microsoft/powershell/7/pwsh
# Create the symbolic link that points to pwsh
sudo ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh
# Start PowerShell
pwsh
Docker 容器安裝方式
描述: 已釋出的映像需要 Docker 17.05 或更高版本。 還應在沒有 sudo 或本地管理權限的情況下能夠運作 Docker。
PowerShell 官方容器: hub.docker.com/r/microsoft/powershell
Windows Docker 檔案和映像許可證:
- Window Server Core
- Nano Server
1.在容器中使用 PowerShell
docker run -it mcr.microsoft.com/powershell
2.在不再需要映像時将其删除
docker rmi mcr.microsoft.com/powershell
從 Windows PowerShell 5.1 遷移到 PowerShell 7
描述: 目前Windows10以及Server2019預設的PS版本為5.1為了使用能嘗試使用PS 7我們需要進行如下步驟遷移。
Tips : PowerShell 7 與 Windows PowerShell 并行運作,可便于你在部署前輕松地測試和比較各個版本。 遷移簡單、快捷、安全,
以下 Windows 作業系統支援 PowerShell 7:
- Windows 8.1 和 10
- Windows Server 2012、2012 R2、2016 和 2019
此處以并行使用PowerShell 7 與 Windows PowerShell 5.1 為例進行配置
- 下功能可確定你的 PowerShell 投資受到保護,并能輕松遷移到 PowerShell 7。
- 獨立的安裝路徑和可執行檔案名
- 獨立的 PSModulePath
- 每個版本的獨立配置檔案
- 提升了子產品相容性
- 新增了遠端處理終結點
- 組政策支援
- 獨立的事件日志
操作步驟:
- Step 1.獨立的安裝路徑和可執行檔案名
# 按版本列出的安裝位置:
Windows PowerShell 5.1:$env:WINDIR\System32\WindowsPowerShell\v1.0
PowerShell Core 6.x:$env:ProgramFiles\PowerShell\6
PowerShell 7:$env:ProgramFiles\PowerShell\7
Tips : 新位置會添加到 PATH 中,這樣就能同時運作 Windows PowerShell 5.1 和 PowerShell 7 了
Tips : 在 Windows PowerShell 中,PowerShell 可執行檔案名為 powershell.exe。 在版本 6 及更高版本中,可執行檔案名為 pwsh.exe
- Step 2.獨立的 PSModulePath: 預設情況下Windows PowerShell 和 PowerShell 7 将子產品存儲在不同的位置。 PowerShell 7 将這些位置合并到
環境變量中。 當按名稱導入子產品時PowerShell 檢查由 $Env:PSModulePath
指定的位置, 這樣 PowerShell 7 就可以$Env:PSModulePath
和同時加載核心子產品
了。桌面子產品
# 1.安裝範圍 Windows PowerShell 5.1 PowerShell 7.0
PowerShell 子產品 $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $PSHOME\Modules
使用者已安裝
AllUsers 範圍 $env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
使用者已安裝
CurrentUser 範圍 $HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules
# 2.示例展示了每個版本的 $Env:PSModulePath 預設值
PS C:\Program Files\PowerShell\> $Env:PSModulePath -split (';')
C:\Users\WeiyiGeek\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
- Step 3.獨立的配置檔案: PowerShell 配置檔案是在 PowerShell 啟動時執行的腳本。 此腳本通過添加指令、别名、函數、變量、子產品和 PowerShell 驅動器來自定義環境。 配置檔案腳本讓這些自定義對每個會話都可用,而不必手動重新建立它們。
在 PowerShell 7 中,配置檔案的位置路徑發生了更改。
- 在 Windows PowerShell 5.1 中,配置檔案的位置為 $HOME\Documents\WindowsPowerShell。
- 在 PowerShell 7 中,配置檔案的位置為 $HOME\Documents\PowerShell。
配置檔案的檔案名也發生了更改:
PS> $PROFILE | Select-Object *Host* | Format-List
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\<user>\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
- Step 4.實踐 PowerShell 7 環境安裝配置與PS 5.1并行運作
# 1) 建立PS 7 家目錄
mkdir $env:ProgramFiles\PowerShell\7
# 2) 解壓PS 7 到家目錄
Expand-Archive .\PowerShell-7.1.3-win-x64.zip -DestinationPath $env:ProgramFiles\PowerShell\7
# 3) 設定環境變量
$systempath = [System.Environment]::GetEnvironmentVariable("PATH","Machine")
$systempath = "C:\Program Files\PowerShell\7"+ ";" + $systempath
[System.Environment]::setEnvironmentVariable("PATH",$systempath,"Machine")
# 4.打開PS執行pwsh.exe進入PS7的版本
PS C:\Windows\system32> pwsh.exe
PS C:\Windows\System32> $PSVersionTable.PSVersion
# Major Minor Patch PreReleaseLabel BuildLabel
# ----- ----- ----- --------------- ----------
# 7 1 3
PS C:\Windows\System32> $ENV:PSModulePath -split ";"
# C:\Users\WeiyiGeek\Documents\PowerShell\Modules
# C:\Program Files\PowerShell\Modules
# c:\program files\powershell\7\Modules # 可以看見子產品已經添加
# C:\Users\WeiyiGeek\Documents\WindowsPowerShell\Modules
# C:\Program Files\WindowsPowerShell\Modules
# C:\Windows\system32\WindowsPowerShell\v1.0\Modules
# 5.PS特性可以直接使用ssh指令
PS C:\Windows\System32> ssh -p 20211 [email protected]
- Step 5.PowerShell 包含組政策設定,有助于為企業環境中的伺服器定義一緻的選項值
# 1.設定包括:
* 控制台會話配置:設定運作 PowerShell 的配置終結點。
* 啟用子產品日志記錄:設定子產品的 LogPipelineExecutionDetails 屬性。
* 啟用 Power Shell 腳本塊日志記錄:啟用所有 PowerShell 腳本的詳細日志記錄。
* 啟用腳本執行:設定 PowerShell 執行政策。
* 啟用 PowerShell 腳本:可便于将 PowerShell 指令輸入和輸出捕獲到基于文本的腳本中。
* 設定 Update-Help 的預設源路徑:将“可更新的幫助”的源設定為目錄,而不是 Internet。
# 2.PowerShell 7 在 $PSHOME 中添加組政策模闆和安裝腳本。
Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
# Directory: C:\Program Files\PowerShell\7
# Mode LastWriteTime Length Name
# ---- ------------- ------ ----
# -a--- 2021/3/10 1:19 15898 InstallPSCorePolicyDefinitions.ps1
# -a--- 2021/3/10 1:07 9675 PowerShellCoreExecutionPolicy.adml
# -a--- 2021/3/10 1:07 6198 PowerShellCoreExecutionPolicy.admx
- Step 6.Windows PowerShell 和 PowerShell 7 記錄事件來分隔事件日志
PS C:\Program Files\PowerShell\7> Get-WinEvent -ListLog *PowerShell*
# LogMode MaximumSizeInBytes RecordCount LogName
# ------- ------------------ ----------- -------
# Circular 15728640 6082 Windows PowerShell
# Circular 15728640 624 Microsoft-Windows-PowerShell/Operational
# Retain 1048985600 0 Microsoft-Windows-PowerShell/Admin
# Circular 1052672 0 Microsoft-Windows-PowerShell-DesiredStateConfiguration-FileDownloadManager/Op…
- Step 7.在 Microsoft 商店安裝WindowsTerminal支援多種指令行執行使用
-
Step 7.提升了使用 Visual Studio Code 的編輯體驗
描述: 包含 PowerShell 擴充的 Visual Studio Code (VSCode) 是 PowerShell 7 支援的腳本環境
Tips : 更新後的 PowerShell 擴充包括:
- 新增了 ISE 相容性模式
- 內建控制台中的 PSReadLine,包括文法突出顯示、多行編輯和退回搜尋
- 提升了穩定性和性能
- 新增了 CodeLens 內建
- 提升了路徑自動完成
Tips : 若要更輕松地轉換到 Visual Studio Code,請使用“指令面闆”中的“啟用 ISE 模式”功能即
請按 Ctrl+Shift+P 打開“指令面闆”,鍵入“PowerShell”,然後選中“PowerShell:啟用 ISE 模式”。
Tips : 若要将布局設定為原始布局,請打開“指令面闆”,然後選中“PowerShell:禁用 ISE 模式(還原為預設值)”。
0x04 PS 運作模式
PS控制台有兩種模式:
- Powershell标準模式(預設):滑鼠右擊選擇标記後才能實作複制和粘切功能。
- Powershell快速編輯模式:可以通過滑鼠左鍵選擇任意矩形區域内的文本,并且滑鼠右擊實作複制功能。
Tips :快速編輯模式和标準模式的切換可以通過
控制台标題欄->滑鼠右擊->屬性->選項->編輯選項
。
PS快捷鍵:
Powershell的快捷鍵和cmd以及linux中的shell 都比較像。
PgUp PgDn 顯示目前會話的第一個指令和最後一個指令
Enter 執行目前指令
End 将光标移至目前指令的末尾
Del 從右開始删除輸入的指令字元
Esc 清空目前指令行 (V)
ALT+F7 清除指令的曆史記錄 (V)
F2 自動補充曆史指令至指定字元(例如曆史記錄中存在 Get-Process,按F2,提示"Enter char to copy up to",鍵入‘s’,自動補齊指令:Get-Proce) (V)
F4 删除指令行至光标右邊指定字元處 (V)
F7 對話框顯示指令行曆史記錄
F8 檢索包含指定字元的指令行曆史記錄
F9 根據指令行的曆史記錄編号選擇指令,曆史記錄編号可以通過F7檢視
左/右方向鍵 左右移動光标
上/下方向鍵 切換指令行的曆史記錄
Home 光标移至指令行最左端
Backspace 從右删除指令行字元
Ctrl+C 取消正在執行的指令
Ctrl+左/右方向鍵 在單詞之間移動光标
Tab 自動補齊指令或者檔案名
Ctrl+Home 删除光标最左端的所有字元 (V)
Ctrl+end 删除光标最由端的所有字元 (V)