是否可以/如何使用某些 cmdlet 停止 powershell?

Posted

技术标签:

【中文标题】是否可以/如何使用某些 cmdlet 停止 powershell?【英文标题】:Is it possible to/how do you stop powershell using certain cmdlets? 【发布时间】:2014-03-07 20:41:05 【问题描述】:

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

今天这是删除一个目录 - rd 或 rmdir - 这两者都在 powershell 中被破坏,有利于一个未记录的(从命令行)cmdlet Remove-Item。不过,我似乎一直都遇到它 - sc(用于处理服务);当您键入命令等时,在哪里可以找到正在调用的程序。

有趣的是,我实际上遇到了 sc 的问题,然后用谷歌搜索找出命令在哪里,却发现在 powershell 中也不起作用!那是令人困惑的一天

在某些情况下,一旦您知道这是怎么回事,您就可以输入完整的 exe 名称(例如,“where.exe”可以工作,而“where”本身就不行)。

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

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

【问题讨论】:

阅读一下:blogs.technet.com/b/josebda/archive/2012/03/03/… @Nacimota 刚刚阅读了您发布的那篇文章的更多内容。谢谢 - 它是一个非常棒的链接。知道总是有 cmd /c 选项真的很有用 【参考方案1】:

没有必要在 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

【讨论】:

很好的答案 + get-help 命令的好答案 - 尝试了各种 /? -help 帮助...等等! 我想我主要是用它来自动完成文件+程序名称,尽管仍然怀念 bash 中出色的自动完成功能 @JonnyLeeds - Powershell 将 [TAB] 完成大多数事情,您只需按 Tab 键即可循环浏览项目。此外,如果您还没有,请尝试使用最新的 ISE(交互式脚本环境),它具有 GUI 风格的自动完成和搜索功能。 PowerShell 的自动完成功能非常棒,但您必须使用 PowerShell 的 cmdlet 才能真正利用它。 @Josh 很酷,我可能会检查一下。是的,powershell 非常适合自动完成,但我真的很喜欢拒绝自动完成的 bash 风格,除非有一个答案(在第一次按下时),然后如果你再次按下它会显示所有潜在的匹配项。【参考方案2】:

我刚刚意识到我的问题的答案被埋在了另一个答案的 cmets 中:

要在您运行的 powershell 中删除 cmdlet

删除项目别名:某事。

我可以确认您可以使用 Josh 帖子中提到的个人资料来执行此操作,但是还有几个步骤:

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

我通过使用 admin powershell 并输入

来更改此设置
set-executionpolicy bypass

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

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

Remove-Item -force alias:sc

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

【讨论】:

以上是关于是否可以/如何使用某些 cmdlet 停止 powershell?的主要内容,如果未能解决你的问题,请参考以下文章

linux系统如何使用service命令怎么启动、停止或重启某些系统服务进程

在 Powershell 中优雅地停止

如何将 PowerShell cmdlet 或函数添加到我的计算机以使其始终可用?

如何在某些情况下停止 iPad 旋转?

如何停止一个正在运行的线程?

如何停止一个正在运行的线程?