Practice

常用命令

vim $PROFILE  # 编辑配置文件
Get-ChildItem *> $null # 抛弃所有输出
whoami
Remove-Item -Recurse -Force <dir> # rm -rf
Start-Process <dir> # macOS 中的 open,alias start
Get-Help <string> -Online
Get-Command <string> # sh 中的 which
Get-Command pwsh | Select-Object Source # 只输出 Get-Command 返回对象的 Source 属性;Select-Object 也可以用 select 代替
Get-Service sshd
Start-Service sshd
Set-Service -StartupType Automatic sshd
Update-Help -UICulture en-US # 更新 PowerShell 帮助文档
Unblock-File course.ps1 # 取消阻止从 Internet 下载的文件

Get-Content 命令也可以显示变量值:Get-Content Env:PATH

常用环境变量

$Env:http_proxy="http://127.0.0.1:7890";$Env:https_proxy="http://127.0.0.1:7890"  # 设置环境变量
$Env:http_proxy="";$Env:https_proxy="" # 清除环境变量
$Env:Path -split ';' | sls python # 查看环境变量并筛选 python
$Env:Path += ';C:\Tools'
$Env:USERNAME

配置文件位置:$PROFILE

about_Profiles

about_PowerShell_Config

about_Environment_Variables

关于脚本:about_Scripts

安装 PowerShell 7

winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget

Oh My Posh

Oh My Posh 官网

安装

winget install JanDeDobbeleer.OhMyPosh -s winget

Oh My Posh 更新很快,有时会被杀毒软件误报,可以考虑将可执行文件路径 (Get-Command oh-my-posh).Source 加入杀毒软件的白名单。

更新

winget install JanDeDobbeleer.OhMyPosh -s winget

安装字体

oh-my-posh font install  # 在管理员权限下运行

官方推荐 MesloLGM NF 字体

启用 Oh My Posh

notepad $PROFILE  # 编辑 PowerShell 配置文件

向配置文件中添加如下内容:

oh-my-posh init pwsh | Invoke-Expression

Oh My Posh 的主题文件夹位置保存在环境变量 $Env:POSH_THEMES_PATH 中。可以通过命令以下命令查看。

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"

PowerShell 101

PowerShell 101

PowerShell 101 中文版

什么是 101 课程

我们常说的 "101课程",通常是指 XXXX 的入门级课程。在美国,数字 "101" 是大学课程中普遍使用的介绍性课程编号,是对某一个主题的综览课程。

因为许多教程的第一章或者导论部分都会用 "101" 做标注,这个词汇渐渐的就被引申了出来,用来表示基础入门级课程,变成了一个代号,也就是基础课程的同义词。

博客园: 什么是 101 课程

管理当前位置

变量

注释

$a = 1  # 单行注释

<#
多行注释
$b = 2
#>

变量

变量名以 $ 开始,不区分大小写:

$a = 1
$b = 2
$result = $a * $b
$result # 输出变量

自动变量

变量名 描述
$? 上一个命令的退出状态,如果上一个命令执行成功,则 $? 的值为 True,否则为 False
$args 传递给脚本的参数,是一个数组
$HOME 用户主目录
$PWD 当前工作目录

PowerShell 自动变量 | 易百教程

字符串

$s1 = '$a * $b = $result'  # 单引号字符串中的变量不会被解析
$s2 = "$a * $b = $result" # 双引号字符串中的变量会被解析
$s3 = "line1`nline2" # PowerShell 使用 ` 作为转义符
$s4 = $(Get-Date) # 命令替换

PowerShell cmdlets

PowerShell 命令被称作 cmdlet (发音 command-let),每个cmdlet 的名字由一个动词-名词对组成,例如 Get-Process。当你要查找一个 cmdlet 时,可以指定筛选 cmdlet 的动词或者名词。

cmdlet 是原生 PowerShell 命令

PowerShell 命令不区分大小写

帮助系统

PowerShell 中的三个核心 Cmdlets:

  • Get-Command
  • Get-Help
  • Get-Member

Get-Help

help *process*  # help process
help Get-Help -Full
help Get-Help -Online
help Get-Help -Parameter Name
help Get-Help -Examples Update-Help

函数 help 的使用体验要比 cmdlet Get-Help 更好,help 一次只显示一页内容,使用空格键翻页。

Update-Help 失败
Update-Help -UICulture en-US

解决 powershell 7.1 的 Get-Help 找不到对应的详细帮助 | CSDN

Get-Command

Get-Command 用来定位命令

Get-Command -Verb Get
Get-Command -Noun Process
Get-Command -Name Get-Process Get-Command -Name *service* -CommandType Cmdlet, Function, Alias # 使用通配符搜索时最好限制一下命令类型
# 更好的做法是指定 Verb 或 Noun 或同时指定 Get-Command | Get-Random | Get-Help -Full # Learn a PowerShell command a day

Microsoft Docs: PowerShell 101

Reference

Command Syntax

方括号表示可选项

尖括号是内容占位符,表示参数的 .NET 类型

类型后面的 [] 表示该参数可以接受多个值,用逗号分隔:

Get-Process [-Name] <string[]>

Get-Process -Name Explorer, Winlogon, Services

花括号表示枚举,表示参数的可选值:

-Option {None | ReadOnly | Constant | Private | AllScope}

-Option ReadOnly

Microsoft Docs: about_Command_Syntax

About Parameter

Microsoft Docs: about_Parameters

参数名和参数值可以用空格分隔,也可以用冒号分隔:

-<parameter_name> <parameter_value>
-<parameter_name>:<parameter_value>

使用 Get-Help cmdlet 获取命令参数信息:

Get-Help Get-ChildItem

Get-Help Get-Member -Parameter *  # 获取关于 Get-Member 的所有参数的信息

Appendix

Windows Commands

Windows Commands

常用命令

REM 注释
HELP [command] REM man
ECHO REM 显示消息,或将命令回显打开或关闭
CD REM 显示当前目录的名称或将其更改
CLS REM 清除屏幕
START REM 启动单独的窗口以运行指定的程序或命令
SET Path REM 显示环境变量 Path
SET var=val REM 设置环境变量 var 的值为 val
TYPE REM cat
COPY REM cp
MOVE REM mv RENAME [drive:][path]filename1 filename2 REM 重命名文件
REPLACE [drive1:][path1]filename [drive2:][path2] REM 替换文件 DIR REM ls
MKDIR REM mkdir
DEL REM rm
RMDIR /S REM rmdir, 递归删除
MKLINK REM 创建符号链接和硬链接
ATTRIB REM 显示或更改文件属性
ICACLS REM chmod, 显示、修改、备份或还原文件和目录的 ACL
TREE [drive:][path] REM 显示目录结构
TASKLIST REM ps
TASKKILL REM kill
PATH [[drive:]path[;...]][;%PATH%] REM 将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置
SHUTDOWN /s /t 30 REM 允许通过本地或远程方式正确关闭计算机
SC query sshd REM 查询服务的状态
CMD REM 打开另一个 Windows 命令解释程序窗口
EXIT REM 退出 CMD.EXE 程序(命令解释程序)

ACL: Access Control List

windows 命令: net 与 sc 的区别 | 简书

流程控制命令

FOR        REM 为一组文件中的每个文件运行一个指定的命令
IF REM 在批处理程序中执行有条件的处理操作
LABEL REM 创建、更改或删除磁盘的卷标
GOTO REM 将 Windows 命令解释程序定向到批处理程序中某个带标签的行

感兴趣的命令

ATTRIB      REM 显示或更改文件属性
CALL REM 从另一个批处理程序调用这一个
CHCP REM 显示或设置活动代码页,中国地区默认是 936 (GBK),可以设置为 65001 (UTF-8)
CHKDSK REM 检查磁盘并显示状态报告
COMP REM 比较两个或两套文件的内容
DOSKEY REM alias
FC REM 比较两个文件或两个文件集并显示它们之间的不同
FIND REM 在一个或多个文件中搜索一个文本字符串
FINDSTR REM 在多个文件中搜索字符串
MODE REM 配置系统设备(也可以查看代码页)
MORE REM 逐屏显示输出
PAUSE REM 暂停批处理文件的处理并显示消息
POPD REM 还原通过 PUSHD 保存的当前目录的上一个值
PUSHD REM 保存当前目录,然后对其进行更改
RECOVER REM 从损坏的或有缺陷的磁盘中恢复可读信息
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)
ROBOCOPY REM 复制文件和目录树的高级实用工具
SETLOCAL REM 开始本地化批处理文件中的环境更改
SCHTASKS REM 安排在一台计算机上运行命令和程序
SORT REM 对输入排序
SYSTEMINFO REM 显示计算机的特定属性和配置
XCOPY REM 复制文件和目录树

常用环境变量

%CD%  REM 当前工作目录
%USERPROFILE% REM 用户主目录
%PATH%
%PATH:str1=str2% REM 环境变量替换增强

%USERPROFILE% 包含了驱动器名,而 %HOMEPATH% 则不包含驱动器名

Windows 注册表

Windows registry for advanced users - Windows Server | Microsoft Learn

PowerShell 使用的更多相关文章

  1. 在PowerShell中使用curl(Invoke-WebRequest)

    前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...

  2. Windows 7上执行Cake 报错原因是Powershell 版本问题

    在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...

  3. <译>通过PowerShell工具跨多台服务器执行SQL脚本

    有时候,当我们并没有合适的第三方工具(大部分需要付费)去管理多台数据库服务器,那么如何做最省力.省心呢?!Powershell一个强大的工具,可以很方便帮到我们处理日常的数据库维护工作 .简单的几步搞 ...

  4. 利用PowerShell复制SQLServer账户的所有权限

    问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...

  5. PowerShell 数组以及XML操作

    PowerShell基础 PowerShell数组操作 将字符串拆分成数据的操作 cls #原始字符串 $str = "abc,def,ghi,mon" #数据定义 #$StrAr ...

  6. linux下mono,powershell安装教程

    1简介 简单来说pash就是bash+powershell 2官网 https://github.com/Pash-Project/Pash 3下载fedora20---lxde桌面---32位版. ...

  7. Windows下PowerShell监控Keepalived

    一.背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警. 二 ...

  8. 使用PowerShell收集多台服务器的性能计数器

    写在前面     当管理多台Windows Server服务器时(无论是DB.AD.WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可能出现的原因 ...

  9. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  10. 使用PowerShell 监控运行时间和连接情况

    概念 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.N ...

随机推荐

  1. [WPF]用HtmlTextBlock实现消息对话框的内容高亮和跳转

    动手写一个简单的消息对话框一文介绍了如何实现满足常见应用场景的消息对话框.但是内容区域的文字仅仅起到信息展示作用,对于需要部分关键字高亮,或者部分内容有交互性的场景(例如下图提示信息中的"w ...

  2. ROS让机器人开发更便捷,基于RK3568J+Debian系统发布!

    ROS系统是什么 ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统.它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以 ...

  3. 手把手带你使用JWT实现单点登录

    JWT(英文全名:JSON Web Token)是目前最流行的跨域身份验证解决方案之一,今天我们一起来揭开它神秘的面纱! 一.故事起源 说起 JWT,我们先来谈一谈基于传统session认证的方案以及 ...

  4. map端join和reduce端join的区别

    MapReduce Join MapJoin和ReduceJoin区别及优化 maptask处理后写到本地,如果再到reduce,又涉及到网络的拷贝. map端join最大优势,可以提前过滤不需要的数 ...

  5. P2872

    [USACO07DEC]Building Roads S 题意描述 输入 4 1 1 1 3 1 2 3 4 3 1 4 输出 4.00 点拨 题目大意就是求最小的能把几个集合连起来的边权值之和,我们 ...

  6. 记一次使用python的selenium库爬取动态页面内容的经历

    安装与配置selenium 安装selenium库 pip install selenium 配置浏览器驱动(本次使用Google Chrome) 打开Chrome,在浏览器的地址栏,输入chrome ...

  7. C#多窗口切换的实现

    本文关键字: 多窗口切换 label splitContainer 窗口背景颜色设置 字体设置 窗口布局 按钮事件 按钮 新建项目: 开发MainForm: MainForm先添加1个splitCon ...

  8. 原创软件 | 第3期:PDF合并分割助手V1.0(个人免费)

    这是一个短的"发布会". 01 基本介绍 近期开发了一个[PDF合并分割助手]. 它是一个实现pdf快速合并.分割的免费软件. 你拥有以下7种选项设置. >>合并选项& ...

  9. 网易数帆内核团队:memory cgroup 泄漏问题的分析与解决

    memory cgroup 泄露是 K8s(Kubernetes) 集群中普遍存在的问题,轻则导致节点内存资源紧张,重则导致节点无响应只能重启服务器恢复:大多数的开发人员会采用定期 drop cach ...

  10. vue中sass与SCSS的区别

    在Vue中,通常使用SCSS(Sassy CSS)而不是Sass来编写样式.SCSS是Sass的一种语法扩展,提供了更多的功能和灵活性,因此在Vue项目中更常见.下面是Sass和SCSS之间的主要区别 ...