PowerShell⼊门教程之Cmd命令与PowerShell命令相互调
⽤的⽅法
ps切图后怎么保存jpg单独使⽤⼀种脚本来完成⼀项任务是理想的状态,⽽现实的情况往往是,因为历史原因、或者团队组成,你不得不将多种脚本或者程序组合在⼀起,来完成某项任务。本⽂的讨论范围是Cmd命令与PowerShell命令之间的组合与调⽤。eclipse颜设置
⽏庸置疑,Cmd命令与PowerShell命令之间的调⽤有两个⽅向。即在Cmd命令中调⽤PowerShell的命令,以及在PowerShell脚本中调⽤Cmd命令。需要说明的是,这⾥的调⽤分两个层次:⼀、简单的在其中⼀个的环境中执⾏另外⼀个命令,完成部分⼯作;⼆、在其中⼀个的执⾏上下⽂中调⽤另⼀个的命令,并根据返回结果来选择后⾯的逻辑。
在Cmd命令中调⽤PowerShell命令
最危险的黑客cmd命令如果只是在Cmd命令中调⽤PowerShell的命令,⽽不需要记录PowerShell的返回结果,是⾮常简单的。可以直接在Cmd命令或者脚本中执⾏类似⼀下命令:
无主之地3有吗复制代码代码如下:
python入门教程(非常详细)pptpowershell echo "Hello"
执⾏上述命令的时候,Cmd是把PowerShell当成⼀个应⽤程序来执⾏的。
在Cmd命令中调⽤PowerShell的命令并获得返回值的可⾏⽅法并不多。这是因为,Cmd命令对于结果的处理往往需要借助于⽂件读写,很少有机会在各个命令之间传递数据,并保存中间结果的。For命令是其中最好的⼀个⽅法,它的指向⽅法如下:
复制代码代码如下:
for /f %i in ('powershell echo "Hello"') do (set a=%i)
以上命令的执⾏结果是%a%被赋值为Hello。当然,如果只是简单赋值,就没有必要这样⼤费周折。调⽤PowerShell的命令,肯定是看中了它强⼤的编程能⼒,⽐如⾃定义的排序等等。
我遇到的⼀个实际的例⼦是这样的:⽂件服务器上有⼀个⽬录,⾥边放着⼀些按年⽉命名的⽬录。因为这个⽬录结构已经确定下来了,⽽且很多组都在使⽤,不能随便改动。我们有⼀个任务就是每天定时去最新的年⽉⽬录⾥拷贝build。⿇烦的是,第⼀、⽂件夹时按照12.1、12.2。。。12.10、12.11、12.12、13.1。。。这样命名的;第⼆、从时间上没法,因为最新的⽬录不是在⽉底,⽽是在⽉中的某⼀天⽣成的。以Cmd命令有限的编程能⼒,肯定是不好解决这个问题的。我最终写了⼀个PowerShell的脚本⽂件,在Cmd的脚本中调⽤,终于解决了这个问题。
ascii表示在PowerShell命令中调⽤Cmd命令
由于PowerShell强⼤的管道功能,在PowerShell命令或者脚本中调⽤Cmd命令并获得返回结果是件很容易的事情,是否获得结果对于调⽤Cmd命令的⽅式也没有影响。请看如下⽰例:
复制代码代码如下:
cmd /c dir
$a = (cmd /c dir)
$a
以上⽰例中,第1⾏的执⾏结果,和后两⾏的执⾏结果是⼀样的。不同点是,后者的执⾏结果被保存了下来,前者只是将结果打印在屏幕上。
为什么需要在PowerShell中调⽤Cmd命令呢(既然PowerShell有如此强⼤的Shell以及编程特性)?其实原因也很简单。在PowerShell之前我们有很多很好⽤的Cmd命令、⼯具和控制台程序,如果完全丢弃他们并使⽤PowerShell重写的话,那绝对是浪费。要知道,能够利⽤最⼩的改变来⾼效地完成任务,才是我们的⽬标。
结语
⼀个新的语⾔,如果不能与已有的资源兼容和沟通,那么它注定不能成为⼤众的选择(也许可能在⼩众中流⾏),最终将被遗弃和忘记。PowerShell与现有系统良好沟通性有⽬共睹,从它与Cmd命令的关系可见⼀斑。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论