首页 技术 正文
技术 2022年11月12日
0 收藏 923 点赞 3,367 浏览 4400 个字

今天要重新学习一钟语法,由于工作中项目的需要,不得不说学习新的语言是必不可少的。
          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就总结到这里,我主要是在程序中简单的使用该语句,对其进行的总结还是更多的参照百度百科,今天就总结到这里啦,嘿嘿。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848