天天看點

1.Powershell基礎入門學習介紹與安裝更新

  • 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 平台,一般運作在​

    ​window7-window server 2012及​

    ​以上自帶的個人pc和伺服器上使用普遍;
  • PowerShell 提供程式可讓你​

    ​通路資料存儲(如系統資料庫和證書存儲)​

    ​,與你通路檔案系統一樣友善。
  • PowerShell 具有豐富的​

    ​表達式分析器和完全開發的腳本語言​

    ​。
  • PowerShell 旨在消除長期存在的問題和添加新功能,進而改進指令行和腳本環境。
  • PowerShell 結合了互動式 shell 和腳本編寫環境,可以通路指令行工具(指令系列是可擴充的)、COM 對象和 .NET 類庫。
  • PowerShell 基于對象而非文本,是以輸出是基于對象的。
  • PowerShell 基于.NET Framework 建構它與 C# 程式設計語言共享一些文法功能和關鍵字。
  • PowerShell 是開放源代碼項目 Github

設計目标:

  • 可發現性:管理系統是一項複雜的任務。 具有一緻的接口的工具有助于控制固有的複雜性
  • 一緻性 : 管理系統是一項複雜的任務,具有一緻的接口的工具有助于控制固有的複雜性
  • 互動式腳本編寫環境: Windows 指令提示符提供了一個可通路指令行工具和基本腳本的互動式 shell,​

    ​Windows 腳本宿主 (WSH)​

    ​具有可編寫腳本的指令行工具和 COM 自動化對象,但不提供互動式 shell。
  • 面向對象: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.      
1.Powershell基礎入門學習介紹與安裝更新
  • 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 将這些位置合并到​

    ​$Env:PSModulePath​

    ​ 環境變量中。 當按名稱導入子產品時PowerShell 檢查由 ​

    ​$Env:PSModulePath​

    ​ 指定的位置, 這樣 PowerShell 7 就可以​

    ​同時加載核心子產品​

    ​和​

    ​桌面子產品​

    ​了。
# 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…      
1.Powershell基礎入門學習介紹與安裝更新
  • Step 7.在 Microsoft 商店安裝WindowsTerminal支援多種指令行執行使用
1.Powershell基礎入門學習介紹與安裝更新
  • 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 模式(還原為預設值)”。

1.Powershell基礎入門學習介紹與安裝更新

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)      

繼續閱讀