或者 复制代码 代码如下: PS D:ProjectsPractisePowerShell> cd .. PS D:ProjectsPractise>
结果跟我们的预期是差不多。不过,我们是否就能据此说PowerShell就是PowerShell是命令行的加强版吗?再试试下面这个命令: 复制代码 代码如下: PS D:ProjectsPractisePowerShell> dir /ad dir : Cannot find path "D:ad" because it does not exist.
这个跟我们的期望相去甚远。在Cmd中,它应该输出当前位置的子文件夹的信息,但是这里,它似乎理解不了我们的参数。下面这个命令也是一样: 复制代码 代码如下: PS D:ProjectsPractisePowerShell> fc .alias.txt .cmdlets.txt Format-Custom : A positional parameter cannot be found that accepts argument ".cmdlets.txt".
我本来想要调用比较两个文件的fc命令,结果它却理解成了Format-Custom,牛头不对马嘴。这是怎么回事儿呢?到这里我们就可以回答前两个问题了:PowerShell不能执行Cmd命令行的所有命令,确切地说,PowerShell不能执行任何Cmd命令,至少不能直接执行。这是因为,PowerShell不是Cmd的新版本或者加强版什么的,只是它的有些命令从长相到功能都跟Cmd命令很相似而已。 PowerShell与Cmd命令行的关系 PowerShell可以做为一个应用程序在Cmd中运行,其运行方式有点像在Cmd中运行SQLCmd或者Nslookup,在没有明确exit退出之前,一直是应用程序的运行环境,一切的输入,包括命令和数据,都由应用程序来接受和处理。 复制代码 代码如下: D:ProjectsPractisePowerShell>powershell Windows PowerShell Copyright (C) 2012 Microsoft Corporation. All rights reserved. PS D:ProjectsPractisePowerShell> get-help TOPIC Windows PowerShell Help System
Cmd也可以在PowerShell中作为应用程序运行,其运行方式与在Cmd中运行PowerShell相似: 复制代码 代码如下: PS D:ProjectsPractisePowerShell> cmd Microsoft Windows [Version 6.2.9200] (c) 2012 Microsoft Corporation. All rights reserved. D:ProjectsPractisePowerShell>dir /ad Volume in drive D is Doc Volume Serial Number is A6C5-E7CE Directory of D:ProjectsPractisePowerShell 01/30/2013 04:54 PM <DIR> . 01/30/2013 04:54 PM <DIR> .. 01/23/2013 12:35 PM <DIR> d1 01/23/2013 12:35 PM <DIR> d2
PowerShell通过Alias这个特性,可以让使用者以Cmd风格来使用PowerShell命令。这样做的好处是让用户在刚接触PowerShell的时候,就像在使用Cmd一样亲切、熟悉。坏处是,让人容易把PowerShell和Cmd搞混了。不过当你了解了Alias的概念和Get-Alias命令以后,这个问题将迎刃而解: 复制代码 代码如下: PS D:ProjectsPractisePowerShell> get-alias dir, echo, type CommandType Name ModuleName ----------- ---- ---------- Alias dir -> Get-ChildItem Alias cd -> Set-Location Alias echo -> Write-Output