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 笔记 - 基础篇的更多相关文章

  1. 小猪猪C++笔记基础篇(五)表达式、语句

    小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...

  2. 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

    小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...

  3. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  4. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  5. JavaScript笔记基础篇(二)

    基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...

  6. metasploit 渗透测试笔记(基础篇)

    0x00 背景 笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识.理解.学习. 这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦. 如果在阅 ...

  7. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

  8. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  9. SQL必学必会笔记 —— 基础篇

    基础篇 SQL语言按照功能划分 DDL(DataDefinitionLanguage),也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库.数据表和列.通过使用DDL,可以创建,删除和修改数 ...

随机推荐

  1. js身份证精确认证

    function checkIdCard(idcard) { // 1 "验证通过!", 0 //身份证号码校验错误 var Errors = new Array( "1 ...

  2. 无人驾驶—高精地图和V2X

    高精地图将厘米级的静态信息传传递给无人车V2X将路况上的动态信息传递给无人车 高精地图的作用 高精地图与传统地图的对比 高精地图与定位的关系 上图左侧是感知到的区域,右侧是高精地图,之后进行拼接获得车 ...

  3. AGENS算法

    3.2 层次方法 下图,上面是从左到右由5个簇逐渐合并成1个簇的过程,下面是从右到左由一个簇逐渐分裂成5个簇的过程 AGENS算法 最后面一句话是重点,假设有<A,B>,<C,D&g ...

  4. 用Weex开发的V2EX三端app,附探坑总结

    项目地址 git传送门(内附项目预览) Weex环境配置 npm install -g weex npm install -g weexpack # weex客户端的cli npm install - ...

  5. HTML5存储方式

    由于之前在参加面试或者笔试的过程中经常会被问到HTML5存储的内容,包括它们之间的区别.特征和应用范围,所以看到一篇介绍不错的文章,把里面的个人觉得适合我的内容按照自己的理解总结如下.方便以后忘记了进 ...

  6. H5使用Canvas绘图

    一.什么是Canvas Canvas 是H5的一部分,允许脚本语言动态渲染图像.Canvas 定义一个区域,可以由html属性定义该区域的宽高,javascript代码可以访问该区域,通过一整套完整的 ...

  7. mysql基本操作2

    ##DDL控制表结构,不支持事务##DML控制表数据,支持事务       DQL专门做查询  ##TCL 管理事务##DCL 管理数据库权限     ##ORDER BY  子句-根据指定列对结果集 ...

  8. C语言-操作符与表达式

    C语言入门之操作符与表达式 前言 本篇文章主要包括各种操作符的介绍与表达式求值,欢迎各位小伙伴与我一起学习. 一.操作符 分类 算术操作符 移位操作符 位操作符 赋值操作符 单目运算符 关系操作符 逻 ...

  9. 集合——Collection接口,List接口

    集合:对象的容器,定义了对多个对象进行操作的常用方法.可实现数组的功能 集合和数组的区别: 数组长度固定,集合长度不固定 数组可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型. 集合的位置 ...

  10. CesiumJS 2022^ 原理[3] 渲染原理之从 Entity 看 DataSource 架构 - 生成 Primitive 的过程

    目录 API 用法回顾 1. 为什么要从 Viewer 访问 Entity API 1.1. 高层数据模型的封装 - DataSource API 1.2. 显示管理器 DataSourceDispl ...