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

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

今天,这是删除一个目录 - rd或rmdir - 这两个目录在PowerShell中被破解,赞成它没有记录(来自命令行)的cmdlet Remove-Item。 我似乎总是遇到它 - sc(用于服务); 当你输入一个命令时寻找哪个程序被调用等等。

有趣的是,我真的用sc解决了这个问题,然后用google搜索了一下这个命令,只是发现这个命令在powershell中没有作用! 那是令人困惑的一天

在某些情况下,一旦你知道这是怎么回事,你可以键入完整的exe名称(例如'where.exe'将起作用,而'where'在它自己的位置上)。

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

所以...我的问题是这样的 - 有没有办法在PowerShell中关闭(最好是所有)cmdlet,而只是取而代之的是正常的东西?


没有必要关闭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:Python27python.exe"

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

还有最后一件事。 所有的命令都被记录下来,并且只需两次就可以轻松找到它们。

只需在命令提示符中输入此命令,即可开始使用Powershell启示!

get-help get-command

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

我刚刚意识到我的问题的答案被埋在了对其他答案的评论中:

要在PowerShell中删除一个cmdlet,请运行

删除项目别名:东西。

我可以确认你可以通过使用Josh的帖子中提到的配置文件来做到这一点,但是还有几个步骤:

默认情况下,你不能在PowerShell中运行脚本。 你必须使用set-ExecutionPolicy来改变它。

我通过使用管理 PowerShell和打字改变了这一点

set-executionpolicy bypass

这会让你运行你喜欢的任何脚本

然后在我的个人资料脚本中我有这样的行:

Remove-Item -force alias:sc

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

链接地址: http://www.djcxy.com/p/30333.html

上一篇: Is it possible to/how do you stop powershell using certain cmdlets?

下一篇: MongoDB InvalidDocument: Cannot encode object