PowerShell 笔记 - 基础篇
Powershell 笔记
基础
查看powershell版本
PS C:\Users\chino> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.22000.653
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22000.653
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
查看简易帮助文档
help cmdlet  ##例如 help Get-Service
如果没有帮助文档, 需要先运行以下命令更新帮助文档(需要以管理员运行)
Update-Help
如果计算机无法上网, 可以用以下方式离线来安装帮助文档
先从已经安装帮助文档的机器运行以下命令
Save-Help -DestinationPath ./
从另一台服务器运行以下命令装载帮助文档
Update-Help -SourcePath ./
使用帮助系统查找命令, 例如想查找系统事件日志, 却不知道使用哪个命令, 可以运行以下命令
Help *log*
Help *event*
或者使用Get-Command (简写gcm) 查询cmdlet命令
gcm *log*
get-help cmdlet --detailed  查看详细帮助, 相当于man
get-help cmdlet --examples  查看样例
常用的参数类型
- string, 数字字母和空格, 如果出现空格符, 全部字符串必须包含在引号内部, 最好用单引号.
 - Int, Int32或Int64, 一个整数类型, 不包含小数
 - DateTime, 时间日期类型
 
如果参数类型为数据集合, 可以使用, 隔开, 例如
Get-EventLog Security -computer server1,DC4,file2
可选参数与必选参数 / 位置参数
例如 Get-Help
Get-Help [[-Name] <string>] [-Path <string>] [-Category {Alias | Cmdlet | Provider | General | FAQ | Glossary | HelpFile | ScriptCommand | Function | Filter | ExternalScript | All | DefaultHelp | DscResource | Class | Configuration}] [-Full] [-Component <string[]>] [-Functionality <string[]>] [-Role <string[]>] [<CommonParameters>]
[[-Name] <string>] 是一个位置参数, 因为参数名称在一个方括号内, 同时还是一个可选参数, 因为参数名称和参数值位于同一个方括号内.
位置参数可以不用指定参数名, 比如
Get-Help Get-EventLog可以直接运行而不用指定-Name参数名.
最佳实践是总是指定参数名, 熟练以后再使用位置参数来节省时间
Cmdlet 的命名惯例,以标准的动词开始比如Get, Set, New, 或Pause
powershell中的别名: 只是命令的一个昵称, 无法包含任何参数
使用快捷方式:
- 简化参数名称: powershell不要求输入完整的参数名称, 例如可以用
-comp代替-ComputerName, 必须是唯一识别参数所需要输入的最少的部分. 比如在参数-ComputerName和-Composit都存在的情况 - 参数名称别名. 例如 
Get-Command Get-EventLog | select -ExpandProperty parameters可以查看别名,-Cn就是-ComputerName的别名 - 位置参数. 例如
Get-ChildItem C:\替代Get-ChildItem -Path C:\ 
Show-Command cmdlet 命令可以在windows上以GUI的方式列出命令的参数名称
Powershell 提供程序(PSProvider)
PSProvider,其本质上是一个适配器。它可以接受某些数据存储,并使得这些介质看起来像是磁盘驱动器一样。你可以通过下面的命令查看当前Shell中已经存在的提供程序.
Get-PSProvider
Name                 Capabilities                                        Drives
----                 ------------                                        ------
Alias                ShouldProcess                                       {Alias}
Environment          ShouldProcess                                       {Env}
FileSystem           Filter, ShouldProcess, Credentials                  {/, Temp}
Function             ShouldProcess                                       {Function}
Variable             ShouldProcess                                       {Variable}
可以通过模块或者一些管理单元来将一些提供程序添加到powershell中, 这也是powershell仅支持的两种扩展方式. 如果启用了某些powershell功能, 可能也会新增一个PSProvider, 比如开启了远程处理时, 会新增 WSMan   Credentials
PSProvider常见的功能描述:
ShouldProcess提供支持-WhatIf和-Confirm参数, 保证我们在正式执行这部分脚本之前可以对它们进行测试Filter在cmdlet中操作提供程序的数据时, 支持-Filter参数Credentials改提供程序允许使用可变更的凭据连接数据存储, 这也就是-Credentials参数的作用Transactions该提供程序支持事务, 也就是允许在改提供程序中将多个变更作为一个原子操作进行提交或者全部回滚
可以使用某个提供程序创建一个PSDrive, PSDrive可以通过一个特定的提供程序连接到某些存储数据的介质, 这和在windows资源管理器中类似, 本质上是创建一个驱动器映射, 但是由于PSDrive使用了提供程序, 除了可以连接磁盘以外, 还能连接更多的数据存储介质, 运行Get-PSDrive 可以看到当前已经连接的驱动器.
可以通过一系列cmdlets去查阅和操作每个PSDrive呈现出来的数据, 大多数情况下, 操作PSDrive的cmdlet名词部分都会包含item. 可以通过Get-Command -noun *Item* 查看这些cmdlets
PSPrivider
常规文件操作
Windows 文件系统包括三部分: 磁盘驱动器, 文件夹, 文件.
PSDrive指向的对象都称为Item, Item可以是文件, 文件夹
切换目录
Set-Location -Path 'C:\Windows' # 等同于cd 'C:\Windows'
创建一个项Item
New-Item -ItemType directory folder # ItemType不指定默认创建文件类型的Item
Mkdir 也可以创建文件夹, 但Mkdir是一个function, 隐式调用了New-Item, 并指定
ItemType为directory
powershell 可以使用?和* 通配符, 如果文件名字中包含?或者*. 可以用-LiteralPath 参数. 该参数不支持任何通配符, 严格按照键入的值使用.
查看所有的PSDrive
Get-PSDrive
## 此处为mac下运行, windows下可以看到注册表类型HKCU, HKLM 等
Name           Used (GB)     Free (GB) Provider      Root                                    CurrentLocation
----           ---------     --------- --------      ----                                    ---------------
/                 226.26        239.37 FileSystem    /                                                   tmp
Alias                                  Alias
Env                                    Environment
Function                               Function
Temp              226.26        239.37 FileSystem    /var/folders/zp/53pdcbdj4q7g7d_sf6…
Variable                               Variable
操作注册表
Set-Location -Path HKCU:
Set-Location xxx   ## 选中要修改的注册表路径
Set-ItemProperty -Path DWM -PSProperty EnableColorization -Value 0  ## 设置
注意: Set-Item 无法作用于FileSystem的Provider, 修改文件内容用Set-Content
PowerShell 笔记 - 基础篇的更多相关文章
- 小猪猪C++笔记基础篇(五)表达式、语句
		
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
 - 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助
		
小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...
 - 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
		
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
 - Python学习笔记基础篇——总览
		
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
 - JavaScript笔记基础篇(二)
		
基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...
 - metasploit 渗透测试笔记(基础篇)
		
0x00 背景 笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识.理解.学习. 这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦. 如果在阅 ...
 - Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作
		
目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...
 - java学习笔记-基础篇
		
Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
 - SQL必学必会笔记 —— 基础篇
		
基础篇 SQL语言按照功能划分 DDL(DataDefinitionLanguage),也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库.数据表和列.通过使用DDL,可以创建,删除和修改数 ...
 
随机推荐
- SQL语句之Column 'Status' in where clause is ambiguous错误
			
问题: AND created_by IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) limit 0, 10]; Column 'created_by' in where cla ...
 - (4)_结果与讨论Result and Discussion【论文写作】
 - 技能篇:linux服务性能问题排查及jvm调优思路
			
只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或 ...
 - JavaScript 的Date构造函数太迷惑了。。。
			
1 new Date(2021,0,1,0,0,0,0) ===> Fri Jan 01 2021 00:00:00 GMT+0800 (中国标准时间) 2 new Date(2021,1,1, ...
 - Zookeeper中的Leader选取机制
			
一.Zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应 ...
 - springboot+mybatis实现数据分页(三种方式)
			
项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...
 - Visual Studio 安装 MFC
			
**Visual Studio 安装 MFC 库** 打开 Visual Studio Installer //程序 选择对应的版本 (本人 VS2022)->修改 [点击]单个组件 ...
 - 51单片机I/O引脚IO口工作原理
			
51单片机I/O引脚IO口工作原理 一.51单片机管脚p0.p1.p2.p3口区别如下: 1.意思不同P0口作输出口用时,需加上拉电阻.P0口有复用功能.当对外部存储器进行读写操作时,P0口先是提供外 ...
 - Java基础语法02——流程控制
			
流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)
 - JavaScript学习总结2-对象
			
JavaScript中对象除了最后一个属性以外都在结尾加逗号,同时所有属性都要在{ }内 1 <!DOCTYPE html> 2 <html lang="en"& ...