前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1.Powershell基础入门介绍与安装升级

1.Powershell基础入门介绍与安装升级

作者头像
全栈工程师修炼指南
发布2022-09-29 14:49:14
6.9K0
发布2022-09-29 14:49:14
举报

[TOC]

0x00 PS 基础介绍

描述: PowerShell 之父 Jeffrey Snover在加入微软之前是搞Linux的, PowerShell 是构建于 .NET 上基于任务的命令行 shell 和脚本语言,在PowerShell里随处看到Linux Shell的影子如ls, wget, curl 等。但PowerShell绝对不是shell的简单升级。 PowerShell 可帮助系统管理员和高级用户快速自动执行用于管理操作系统(Linux、macOS 和 Windows)和流程的任务, 其实可以看做是C#的简化版本还与PHP语言有相似之处(语法),与我们可以采用ISE 集成脚本环境进行PS脚本编写;

Tips : 多年来PowerShell 已有很多版本发布。最初Windows PowerShell 是在 .NET Framework 基础之上构建而成(强大的面向对象的脚本),仅适用于 Windows 系统。随着.NET FrameWork的开源和跨平台,在最新版本中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 历史版本:

代码语言:javascript
复制
版本	发布日期	注意
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版本:

代码语言:javascript
复制
平台	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 安全服务标准。

代码语言:javascript
复制
功能	类型
执行策略	深层防御
系统锁定 - 通过 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 下载最新安装包:

代码语言:javascript
复制
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\ 中。 每种内部版本类型(发行版或预览版)、主要版本和体系结构的 的值都是唯一的。

代码语言:javascript
复制
发布	体系结构	注册表项
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 包 : 下载后双击安装程序并按照提示进行操作。

代码语言:javascript
复制
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 存档不会检查先决条件(所以你需要检测自己是否满足先决条件)

代码语言:javascript
复制
你可以使用此方法安装任何版本的 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,请按照以下步骤操作。

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# 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.
WeiyiGeek.PowerShell-ubuntu
WeiyiGeek.PowerShell-ubuntu

WeiyiGeek.PowerShell-ubuntu

2.通过将 Debian 包 powershell_7.1.3-1.ubuntu.20.04_amd64.deb 下载到 Ubuntu 计算机。

代码语言:javascript
复制
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 存储库()。

代码语言:javascript
复制
# 方式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 的官方支持且由社区维护。

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# 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 计算机。

代码语言:javascript
复制
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

代码语言:javascript
复制
docker run -it mcr.microsoft.com/powershell

2.在不再需要映像时将其删除

代码语言:javascript
复制
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.独立的安装路径和可执行文件名

代码语言:javascript
复制
# 按版本列出的安装位置:
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 就可以同时加载核心模块和桌面模块了。

代码语言:javascript
复制
# 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。

配置文件的文件名也发生了更改:

代码语言:javascript
复制
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并行运行
代码语言:javascript
复制
# 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 weiyigeek@10.20.172.108

Step 5.PowerShell 包含组策略设置,有助于为企业环境中的服务器定义一致的选项值

代码语言:javascript
复制
# 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 记录事件来分隔事件日志

代码语言:javascript
复制
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…
WeiyiGeek.事件日志
WeiyiGeek.事件日志

WeiyiGeek.事件日志

  • Step 7.在 Microsoft 商店安装WindowsTerminal支持多种命令行执行使用
WeiyiGeek.WindowsTerminal
WeiyiGeek.WindowsTerminal

WeiyiGeek.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 模式(还原为默认值)”。

WeiyiGeek.VScode-PS
WeiyiGeek.VScode-PS

WeiyiGeek.VScode-PS


0x04 PS 运行模式

PS控制台有两种模式:

  • Powershell标准模式(默认):鼠标右击选择标记后才能实现复制和粘切功能。
  • Powershell快速编辑模式:可以通过鼠标左键选择任意矩形区域内的文本,并且鼠标右击实现复制功能。

Tips :快速编辑模式和标准模式的切换可以通过控制台标题栏->鼠标右击->属性->选项->编辑选项

PS快捷键: Powershell的快捷键和cmd以及linux中的shell 都比较像。

代码语言:javascript
复制
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)

0x05 PowerShell命令

参数说明: -NoExit : 让脚本处理完毕后进程不退出,停留在控制台界面上。 -Command : 指定PowerShell支持的命令行,将路径包在单引号中并前面加上调用操作符,这样便于处理脚本路径中包含空格。

基础示例:

代码语言:javascript
复制
# -1.指定运行的脚本并在执行完成后不退出。
powershell.exe -NoExit -Command "& '.\test.ps1'"
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 PS 基础介绍
  • 0x01 PS 生命周期
  • 0x03 PS 基础安装
    • Windows 安装方式
      • Linux 安装方式
        • Docker 容器安装方式
          • 从 Windows PowerShell 5.1 迁移到 PowerShell 7
          • 0x04 PS 运行模式
          • 0x05 PowerShell命令
          相关产品与服务
          命令行工具
          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档