PowerShell 使用
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_Scripts
安装 PowerShell 7
winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget
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
什么是 101 课程
我们常说的 "101课程",通常是指 XXXX 的入门级课程。在美国,数字 "101" 是大学课程中普遍使用的介绍性课程编号,是对某一个主题的综览课程。
因为许多教程的第一章或者导论部分都会用 "101" 做标注,这个词汇渐渐的就被引申了出来,用来表示基础入门级课程,变成了一个代号,也就是基础课程的同义词。
注释
$a = 1 # 单行注释
<#
多行注释
$b = 2
#>
变量
变量名以 $ 开始,不区分大小写:
$a = 1
$b = 2
$result = $a * $b
$result # 输出变量
自动变量
| 变量名 | 描述 |
|---|---|
$? |
上一个命令的退出状态,如果上一个命令执行成功,则 $? 的值为 True,否则为 False |
$args |
传递给脚本的参数,是一个数组 |
$HOME |
用户主目录 |
$PWD |
当前工作目录 |
字符串
$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-CommandGet-HelpGet-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的使用体验要比 cmdletGet-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
常用命令
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
流程控制命令
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 使用的更多相关文章
- 在PowerShell中使用curl(Invoke-WebRequest)
前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...
- Windows 7上执行Cake 报错原因是Powershell 版本问题
在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...
- <译>通过PowerShell工具跨多台服务器执行SQL脚本
有时候,当我们并没有合适的第三方工具(大部分需要付费)去管理多台数据库服务器,那么如何做最省力.省心呢?!Powershell一个强大的工具,可以很方便帮到我们处理日常的数据库维护工作 .简单的几步搞 ...
- 利用PowerShell复制SQLServer账户的所有权限
问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...
- PowerShell 数组以及XML操作
PowerShell基础 PowerShell数组操作 将字符串拆分成数据的操作 cls #原始字符串 $str = "abc,def,ghi,mon" #数据定义 #$StrAr ...
- linux下mono,powershell安装教程
1简介 简单来说pash就是bash+powershell 2官网 https://github.com/Pash-Project/Pash 3下载fedora20---lxde桌面---32位版. ...
- Windows下PowerShell监控Keepalived
一.背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警. 二 ...
- 使用PowerShell收集多台服务器的性能计数器
写在前面 当管理多台Windows Server服务器时(无论是DB.AD.WEB以及其他的应用服务器),当出现性能或其他问题后,参阅性能计数器都是一个非常好的维度从而推测出问题可能出现的原因 ...
- 野路子出身PowerShell 文件操作实用功能
本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...
- 使用PowerShell 监控运行时间和连接情况
概念 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.N ...
随机推荐
- 『vulnhub系列』BEELZEBUB- 1
『vulnhub系列』BEELZEBUB- 1 下载地址: https://www.vulnhub.com/entry/beelzebub-1,742/ 信息搜集: 使用nmap扫描存活主机,发现主机 ...
- FreeRDP使用,快速找出账户密码不正确的服务器地址
最近有个需求,需要找出服务器未统一设置账户密码的服务器,进行统一设置,一共有一百多台服务器,一个个远程登录看,那得都费劲啊,这时候就可以用到FreeRDP这个远程桌面协议工具,FreeRDP下载,根据 ...
- SpringBoot获取请求头信息
Http 头信息 HTTP 头(Header)是一种附加内容,独立于请求内容和响应内容. HTTP 协议中的大量特性都通过Header信息交互来实现,比如内容编解码.缓存.连接保活等等. reques ...
- SpringBoot异步任务EnableAsync
什么是一部任务和使用场景:适用于处理log.发送邮件.短信...等 下单接口->查库存 1000 余额校验 1500 风控用户 1000 启动类里面使用@EnableAsync注解开启功能,自动 ...
- 第二部分:关键技术领域的开源实践【内网穿透FRP】
FRP简介 FRP(Fast Reverse Proxy)作为一种高性能的内网穿透工具,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网IP节点(云 ...
- Python 潮流周刊第 2 季完结了,分享几项总结
我订阅了很多的周刊/Newsletter,但是发现它们都有一个共同的毛病:就是缺乏对往期内容的整理,它们很少会对内容数据作统计分析,更没有将内容整理成合集的习惯. 在自己开始连载周刊后,我就想别开生面 ...
- oeasy教您玩转vim - 60- # vim选项
vim选项 从头开始 这次我们从头开始 从进入vim之前开始 我们可以在终端里面给vim怎么样的参数呢? man vim 这个如果不行的话 要先运行unminimize更新manual 也可以在v ...
- QT 开发快速入门
本人 qt 业余,但有的时候要用到 qt,而又没有系统的学习,用到哪里看哪里. 环境: vs2012+ qt-vsaddins+qt5.5 qt 的按钮点击事件出发的基本要素: 1. 按钮触发函数为 ...
- 使用后台模板,cnpm install报错
- win10远程桌面连接报错:出现身份验证错误,要求的函数不受支持(CredSSP)
问题 解决办法 找到路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 在Syste ...