PowerShell的初步学习

时间:2021-10-11 21:42:12

今天要重新学习一钟语法,由于工作中项目的需要,不得不说学习新的语言是必不可少的。
          Windows PowerShell 是一种命令行外科程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。PowerShell是按照linux的b shell, k shell等来的, 除了命令行的界面, 还有一个集成开发环境PowerShell ISE(Integrated Scripting Environment), 类似linux里的vim, vm等脚本编辑工具, PowerShell ISE的界面调试功能使用起来是非常轻松的,使脚本的书写变得方便了.Windows PowerShell v3将伴随着MicrosoftHyper-V3.0和Windows Server 2012发布。PowerShell v3是一个Windows任务自动化的框架,它由一个命令行shell和内置在这个.NET框架上的编程语言组成。

                1、PS1文件
           一个PowerShell脚本其实就是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名需要使用.PS1扩展。
         2、执行权限
          为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设为受限的(Restricted),意味着PowerShell脚本无法执行,你可以使用下面的cmdlet命令确定当前的执行策略:
          Get-ExecutionPolicy 你可以选择使用的执行策略有:
          Restricted -脚本不能运行。 RemoteSigned - 本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)。 AllSigned – 仅当脚本由受信任的发布者签名才能运行。          
          Unrestricted –脚本执行不受限制,不管来自哪里,也不管它们是否有签名。
          你可以使用下面的cmdlet命令设置PowerShell的执行策略:
          Set-ExecutionPolicy <policy name>
         3、运行脚本
           如果你想从命令行运行一个可执行文件,多年来一个永恒不变的方法是,在命令行转到该执行文件所在的位置,然后键入该执行文件的名称,但这个古老的方法现在却不能适用于PowerShell可执行脚本了。
           如果你想执行一个PowerShell脚本,通常必须键入完整的路径和文件名,例如,假设你要运行一个名为a.ps1的脚本,你可以键入:
           C:\Scripts\aps1 最大的例外是,如果PowerShell脚本文件刚好位于你的系统目录中,那么你可以直接在命令提示符后键入脚本文件名即可运行,如:
           .\a.ps1 注意前面需要加上.\,这和Linux下执行Shell脚本的方法如出一辙。
         4、管道
          管道的作用是将一个命令的输出作为另一个命令的输入,两个命令(或cmdlet)之间只需要用管道符号(|)连接即可。
          为了帮助你了解管道是如何工作的,我们以一个例子进行说明,假设你想创建运行在服务器上的进程列表,并按进程的ID 号进行排序,可以使用Get-Process cmdlet命令获得进程列表,但默认情况下列表不会排序,如果将这个cmdlet命令的输出用管道输送给Sort-Object ID命令,进程列表将会按进程ID号进行排序,如:
          Get-Process | Sort-Object ID
         5、变量
         虽然可以使用管道将一个命令的输出输送给另一个命令,但管道本身也是有限制的,当你用管道从一个命令向另一个命令传递输出结果时,输出结果立即被使用,但有时候,你可能需要保存输出结果一段时间,以便以后可以使用(或重用),这个时候管道就应该下场,轮到变量上场了。
         人们很容易将变量想象成一个仓库,但在PowerShell中,变量可以保存命令的完整输出,例如,假设你想保存服务器处于运行中的进程列表,你可以将它赋给一个变量,如:
         $a = Get-Process 在这里,变量被命名为$a,如果你想使用这个变量,只需要简单地调用它的名称即可,例如,键入$a便可在屏幕上打印变量的内容。
         你可以将多个用管道连接的命令的最终输出赋给一个变量,只需要用一对小括号将命令括起来即可,例如,假设你想按进程ID对运行中的进程进行排序,然后将结果输出给一个变量,你可以使用下面这个命令:
         $a = (Get-Process | Sort-Object ID)
         6、@符号
         通过使用@符号,你可以将列表内容转换成一个数组,例如,下面的代码创建了一个名为$Procs的变量,它包含多行文本内容(一个数组):$procs = @{name="explorer","svchost"}
         使用变量时你也可以使用@符号,为了确保它作为数组而不是单个值处理,例如,下面的代码将在我前面定义的变量上运行Get-Process cmdlet命令:
         Get-Process @procsWindows将显示Windows资源管理器和Svchost使用的所有进程,注意变量前使用的@符号,而不是常见的$符号。
         7、Split
         Split操作符根据你指定的字符拆分一个文本字符串,例如,假设你想将一个句子拆分成一个单词组成的一个数组,你可以使用下面的命令做到:
         "This is a test" -split " " 拆分后的结果如下:
         This is a test
         8、Join
         就像Split可以将一个文本字符串拆分成多块一样,Join的操作则是逆向的,将多个独立的块连接成一个整体,例如,下面这行代码将会创建一个文本字符串,由我的名字和姓氏组成:
         "Brien","Posey" -join " " 命令末尾双引号之间的空格告诉Windows在两个文本字符串之间插入一个空格。
         9、断点
         运行一个新创建的PowerShell脚本时,如果脚本有Bug,会遇到意想不到的后果,保护自己的一个方法是在脚本的关键位置插入断点,这样你就可以确保脚本正常运行先,然后再处理可能存在的问题。
         插入断点最简单的方法是根据行号插入,例如,假设你要在第10行插入一个断点,可以使用下面的命令:
         New-PSBreakpoint -Script C:\Scripts\a.ps1 -Line 10 你也可以将断点绑定到变量上,如果你希望你的脚本任何时候都可以修改a$的内容,可以使用下面的命令:
         New-PSBreakpoint -Script C:\scripts\a.ps1 -variables a 注意,我在变量名后并没有包括美元符号。
         可以和PSBreakpoint一起使用的动词包括New,Get,Enable,Disable和Remove。
         10、Step
         调试一个脚本时,有时可能需要逐行运行脚本,这时你可以使用Step-Into cmdlet命令,它会使脚本一行一行地执行,不管有没有设置断点,如果你想从这种步进式运行模式退出来,使用Step-Out cmdlet命令即可,但需要注意的是,使用Step-Out cmdlet命令后,断点仍然有效。
         顺便说一句,如果你的脚本使用了函数,你可能对Step-Out cmdlet更感兴趣,Step-Out的工作方式和Step-Into一样,不过,如果调用了一个函数,Windows不会逐步执行,整个函数将会一次性执行。

         11.获取当前时间的年月日格式

$curDate=[System.DateTime]::Now
$currentDate= [System.DateTime]::ParseExact($curDate, 'yyyy/MM/dd', $null)
$downloadDate=([System.DateTime]::Now).ToString().substring(,)

12.if-else语句的用法

$a=
if($a -eq '提携中')
{
$b = '提携'
}
else
{
$b= $a
}
$a =
if($a -eq '')
{
$b =
}
else
{
$b=
}
$a='am'
$b=''
if($a -eq 'pm' -and $b -eq '')
{
$c = $a
}
else
{
$c = $b
}
$a ='承認済'
$a = '承認'
if($a -eq '承認済' -or $b -eq '承認済')
{
$c=
}
else
{
$c=
}
$a='私は学習'
if($a.Length -gt )
{
$b=$a.substring(,)
}
else
{
$b=$a
}
if($entity.SELFBACK -ne '')
{
$entity.SELFBACK=''
}
else
{
$entity.SELFBACK=''
}
$c=,
$a = [System.String]::IsNullOrEmpty('')
if($a)
{
$b=
}
else
{
$b=[System.Int32]::Parse($c.Replace(',',''))
}

13.调用方法时间Powershell的用法

$a=5.636
$b = [Math]::Round($a,[MidpointRounding]::AwayFromZero)
$a=''
$b = [System.Int32]::Parse($a])
$a= $Null
$b =
$a=''
$b = [System.String]::IsNullOrEmpty($a)
if($b)
{
$c=
}
else
{
$c=$a
}

          综上所述Powershell 中的比较运算符:                   
          -eq :等于
         -ne :不等于
         -gt :大于
         -ge :大于等于
         -lt :小于
         -le :小于等于
         -contains :包含
         -notcontains :不包含

好啦,仅仅针对powershell就总结到这里,我主要是在程序中简单的使用该语句,对其进行的总结还是更多的参照百度百科,今天就总结到这里啦,嘿嘿。

PowerShell的初步学习的更多相关文章

  1. json2&period;js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  2. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  3. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  4. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  5. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  6. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  7. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  8. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

  9. LinQ的初步学习与总结

    嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...

随机推荐

  1. jQuery -- DOM节点的操作

    DOM 操作的分类: dom core: getElementById() getElementsByTagName() getAttribute() setAttribute() html-dom ...

  2. 2013年最棒的4个PHP框架

    PHP 框架可以帮你编写简洁可重用的代码,遵循 MVC 模式,确保应用逻辑和展现分离.有很多很多的框架各有千秋,有的性能好,有的文档全,还有的提供大量的内建功能等等. 这里我们罗列的 2013 年最好 ...

  3. Excel常用函数大全

    1.ABS函数  函数名称:ABS  主要功能:求出相应数字的绝对值.  使用格式:ABS(number)  参数说明:number代表需要求绝对值的数值或引用的单元格.  应用举例:如果在B2单元格 ...

  4. IOS学习之路-- 指针&amp&semi;宏函数

    如果*p被()包住,说明指针变量p将来指向的是函数 //声明一个指针变量 //int (*p)(int, int) = sum; int (*p)(int, int); p = sum; // 如果* ...

  5. Android - 数据存储 -在SQL数据库中保存数据

    对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...

  6. dapper 可空bool转换出错及解决方案

    最近使用entityframewok生成数据库,使用dapper来访问数据库,产生了一个意外的bug,下面是产生bug的示例以及解决方案. 由于用entityframework生成数据库,默认情况en ...

  7. Chrome浏览器扩展开发系列之十二:Content Scripts

    Content Scripts是运行在Web页面的上下文的JavaScript文件.通过标准的DOM,Content Scripts 可以操作(读取并修改)浏览器当前访问的Web页面的内容. Cont ...

  8. dense prediction问题

    dense prediction  理解:标注出图像中每个像素点的对象类别,要求不但给出具体目标的位置,还要描绘物体的边界,如图像分割.语义分割.边缘检测等等. 基于深度学习主要的做法有两种: 基于图 ...

  9. ASP&period;NET CORE 2&period;0 发布到IIS,IIS如何设置环境变量来区分生产环境和测试环境

    0.前言 因为给前端的测试环境是windows,所以要设置windows上的环境变量,如果上Linux就没有这篇文章了,所以大家不要在意为什么core不放在linux上. 1.网上的解决方案 a 方式 ...

  10. 图片文字混排的垂直居中、inline-block块元素和行内元素混排的垂直居中问题

    图片.文字混排: 不管图片和文字的前后位置,都要给 图片 设置 vertical-algin,而不是谁在前面给谁设置. 此方法兼容IE7+ 和其它主流浏览器.IE7-没有测. inline-block ...