关于cmd:是否可以/如何使用某些cmdlet停止PowerShell?

Is it possible to/how do you stop powershell using certain cmdlets?

PowerShell显然比Cmd好很多,但它隐藏了基本功能。我通常用它来计算如何在脚本中使用我想要的命令,但是它打破了很多基本的东西,如果我遇到一个棘手的问题,我最终会同时使用这两个命令。

今天,这是在删除一个目录-rd或rmdir,这两个目录在PowerShell中都被破坏了,取而代之的是一个未记录的目录(从命令行中)cmdlets remove项。不过,我似乎一直在碰到它-sc(用于处理服务方面的问题);在哪里可以找到当您键入命令时正在调用的程序等。

有趣的是,我发现了sc的问题,然后在谷歌上找到了命令,结果发现它在PowerShell中也不起作用!那是一个令人困惑的日子

在某些情况下,一旦您知道这是正在发生的事情,您可以键入完整的exe名称(例如"where.exe"可以工作,而"where"本身不能工作)。

然而,对于rmdir,情况并非如此。尽管有趣的是,在命令中键入"where rmdir"不起作用。

所以…我的问题是,有没有一种方法可以关闭(最好是全部)PowerShell中的Cmdlet,而只获取普通的内容?


不需要关闭PowerShell中的Cmdlet,因为这会破坏拥有它的真正原因。

大多数"正常"的东西都在那里,你可以通过使用get-alias命令找到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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!

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

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

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

最后一件事。所有的命令都有文档记录,您只需使用两个命令就可以轻松地访问它们。

只需在命令提示符中键入此命令,您就可以开始PowerShell启蒙了!

1
2
3
4
get-help get-command

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


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

要在PowerShell中删除cmdlet,请运行

删除项别名:something。

我可以通过使用Josh文章中提到的配置文件来确认您可以做到这一点,不过还有几个步骤:

默认情况下,不能在PowerShell中运行脚本。必须使用set executionpolicy更改此设置。

我通过使用管理PowerShell并键入

1
set-executionpolicy bypass

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

然后在我的配置文件脚本中,我有如下行:

1
Remove-Item -force alias:sc

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