是否有可能/如何使用某些cmdlet停止PowerShell?

时间:2014-02-10 13:25:48

标签: powershell cmd

Powershell显然比cmd好很多,但它隐藏了基本功能。我通常用它来弄清楚如何在脚本中使用我想要的命令,但它打破了大量基本的东西,如果我遇到了粘性点,我最终会并排使用。

今天这是删除了一个目录-rd或rmdir--这两个目录在powershell中被破坏,而有利于它没有记录(从命令行)cmdlet Remove-Item。我似乎总是遇到它 - sc(用于解决服务问题);在键入命令等时查找正在调用的程序的位置等。

搞笑我实际上用sc得到了问题,然后用Google搜索找到命令,发现在powershell中也没有工作!这是令人困惑的一天

在某些情况下,一旦你知道这是正在发生的事情,你可以输入完整的exe名称(例如'where.exe'将起作用,而'where where'本身不会)。

然而,rmdir并非如此。虽然有趣的是在cmd中输入'where rmdir'不起作用。

所以...我的问题是这样的 - 有没有办法在powershell中关闭(最好是所有)cmdlet而只是获得正常的东西呢?

2 个答案:

答案 0 :(得分:4)

没有必要在powershell中关闭cmdlet,因为这会破坏使用它的原因。

无论如何,大多数“正常”的东西都存在,您可以使用get-alias命令找到它。

C:\> get-alias

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ?? -> Invoke-NullCoalescing
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           chdir -> Set-Location
.....
..... AND A WHOLE LOT MORE!

如果您错过了一个您真正想要的命令,那么您可以轻松添加新别名:

Set-Alias python2 "C:\Python27\python.exe"

为了避免每次都这样做,您只需将其添加到您的启动配置文件中即可。只需在命令提示符下键入$PROFILE,它就会显示文件路径。如果它不存在,只需创建它,并且当您开始新会话时,将自动调用您添加到顶部的所有powershell命令。

最后一件事。所有命令都有记录,只需两个就可以轻松找到它们。

只需在命令提示符下输入此内容,您就可以开始使用Powershell了!

get-help get-command

get-command -noun Item
get-command -verb get

答案 1 :(得分:1)

我刚刚意识到我的问题的答案被隐藏在对另一个答案的评论中:

要删除powershell中的cmdlet,请运行

Remove-Item别名:某事。

我可以确认你可以使用Josh的帖子中提到的个人资料来做到这一点,但还有几个步骤:

默认情况下,您无法在PowerShell中运行脚本。您必须使用set-ExecutionPolicy更改此内容。

我通过使用 admin powershell并输入

来更改此设置
set-executionpolicy bypass

这将允许您运行任何您喜欢的脚本

然后在我的个人资料脚本中,我有以下几行:

Remove-Item -force alias:sc

这个脚本在运行时不会看到错误,除非你有力量,否则它不会做任何事情。