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. 微信小程序上拉加载:onReachBottom详解+设置触发距离

    前端经常遇到上拉加载更多的需求,一般还涉及到翻页.小程序里已经给了下拉到底的触发方法onReachBottom(),这里记录下怎样使用这个方法实现下拉加载更多,有需要的直接看代码,有详细注释: 1.首 ...

  2. React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)

    本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面设计相关. 1. 指令式界面设计 Vue 与 A ...

  3. python-汇率兑换

    按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序 输入格式: 输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100 输出格式: 输出经过汇率计算的美元或人民币的金额,格式与 ...

  4. centos报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/

    检查是否可以上网. ping 114.114.114.114 如果不可以,调试通.通了之后下一步: 然后检查DNS设置是否正常. ping www.baidu.com 不正常的话,设置DNS,如下: ...

  5. sql语句中 left join,right join,inner join 的区别

    看到了sql,发现好久没写sql甚是想念哈哈哈哈,好多当时学的东西都忘了,当时总结的好多的文档也怎么都找不到了..... 言归正传,找到了一张图感觉描述的还挺清晰,先贴图,再说说自己的理解. 1.LE ...

  6. CSS简单样式练习(六)

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  7. 记一次修改框架源码的经历,修改redux使得redux 可以一次处理多个action,并且只发出一次订阅消息

    redux是一个数据状态管理的js框架,redux把行为抽象成一个对象,把状态抽象成一个很大的数据结构,每次用户或者其他什么方式需要改变页面都可以理解成对数据状态的改变,根据出发这次改变的不同从而有各 ...

  8. 使用element UI el-upload组件实现视频文件上传及上传进度显示方法总结

    实现效果: 上传中: 上传完成: 代码: <el-form-item label="视频上传" prop="Video"> <!-- acti ...

  9. 控制反转 IOC 理论推导

    控制反转 IOC 理论推导 按照我们传统的开发,我们会先去 dao 层创建一个接口,在接口中定义方法. public interface UserDao { void getUser(); } 然后再 ...

  10. C++ 限定符Const和指针

    指向常量的指针 指向常量的指针不能用于其所指对象的值.若想存放常量对象的地址,只能使用指向常量的指针. const int a = 3; //a是个常量,其值不能改变 int *b = &a; ...