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,因为这会破坏拥有它的真正原因。
大多数"正常"的东西都在那里,你可以通过使用
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" |
为了避免每次都必须这样做,您可以简单地将其添加到启动配置文件中。只需在命令提示符中键入
最后一件事。所有的命令都有文档记录,您只需使用两个命令就可以轻松地访问它们。
只需在命令提示符中键入此命令,您就可以开始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 |
当这个脚本运行时,您不会看到它的错误,除非您有足够的力量,否则它不会做任何事情。