关闭。这个问题是基于意见的。它目前不接受答案。想改进这个问题?更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。 3年前关闭。改进这个问题
我正在争论我是应该学习 PowerShell,还是坚持使用 Cygwin/Perl 脚本/Unix shell 脚本等。
PowerShell 的好处是脚本可以更容易地被没有 Cygwin 的队友使用;但是,我不知道我是否真的会编写那么多通用脚本,或者人们是否会使用它们。
Unix 脚本如此强大,PowerShell 是否足够接近以保证切换?
以下是我将在 PowerShell 中寻找的一些特定事物(或等价物):
grep
种类
独特的
Perl(PowerShell 与 Perl 的功能有多接近?)
AWK
sed
文件(提供文件信息的命令)
等等
工具只是工具。他们提供帮助或不提供帮助。你需要帮助,或者你不需要。
如果您了解 Unix,并且这些工具可以在 Windows 上执行您需要它们执行的操作 - 那么您就是一个快乐的人,无需学习 PowerShell(除非您想探索)。
我最初的意图是在 Windows 中包含一组 Unix 工具并完成它(我们团队中的许多人都有深厚的 Unix 背景和对那个社区的健康尊重。)
我发现这并没有太大帮助。原因是 AWK/grep/sed 不适用于 COM、WMI、ADSI、注册表、证书存储等。
换句话说,UNIX 是一个围绕文本文件自我调整的整个生态系统。因此,文本处理工具是有效的管理工具。 Windows 是一个完全不同的生态系统,围绕 API 和对象进行了自我调整。这就是我们发明 PowerShell 的原因。
我想您会发现,在很多情况下,文本处理无法在 Windows 上为您提供所需的内容。那时,您将需要选择 PowerShell。注意 - 这不是全有或全无的交易。在 PowerShell 中,您可以调用 Unix 工具(并使用它们的文本处理或 PowerShell 的文本处理)。您还可以从 Unix 工具调用 PowerShell 并获取文本。
再说一遍 - 这里没有宗教 - 我们的重点是为您提供成功所需的工具。这就是为什么我们如此热衷于反馈。让我们知道我们在哪里工作失败或您没有所需工具的地方,我们会将其列入清单并着手处理。
老实说,我们正在把自己从一个 30 年的坑里挖出来,所以这需要一段时间。也就是说,如果您选择 Windows Server 2008 /R2 的测试版和/或我们的服务器产品的测试版,我想您会对这个漏洞被填补的速度感到震惊。
关于使用 - 迄今为止,我们的下载量已超过 350 万次。这不包括在 Windows Server 2008 中使用它的人,因为它是作为可选组件包含的,不需要下载。
V2 将在所有版本的 Windows 中提供。除了作为可选组件的服务器核心之外,所有版本都将默认启用。在 Windows 7/Windows Server 2008 R2 发布后不久,我们将在所有平台(Windows XP 及更高版本)上提供 V2。换句话说 - 您在学习上的投资将适用于大量机器/环境。
最后一条评论。如果/当你开始学习 PowerShell,我想你会很高兴的。大部分设计都深受我们的 Unix 背景的影响,所以虽然我们完全不同,但你会很快学会它(在你不再抱怨它不是 Unix 之后:-))。
我们知道人们的学习预算非常有限——这就是为什么我们非常重视一致性。你会学到一些东西,然后你会一遍又一遍地使用它。
实验!享受!从事!
grep
Select-String
cmdlet 和 -match
运算符使用正则表达式。您也可以直接利用 .NET 的正则表达式支持来获得更高级的功能。
种类
Sort-Object
更强大(比我记得 *nix 的 sort
)。允许对任意表达式进行多级排序。在这里,PowerShell 对底层类型的维护有所帮助;例如,DateTime
属性将作为 DateTime
进行排序,而无需确保格式化为可排序格式。
独特的
Select-Object -Unique
Perl(PowerShell 与 Perl 的功能有多接近?)
就 Perl 的领域特定支持库的广度而言:远未接近(还)。
对于一般编程而言,PowerShell 无疑更具凝聚力和一致性,并且更易于扩展。文本修改的一个空白相当于 Perl 的 ..
运算符。
AWK
自从使用 AWK 以来已经足够长了(必须 > 18 年,因为后来我只使用了 Perl),所以不能真正评论。
sed
[看上面]
文件(提供文件信息的命令)
PowerShell 在这里的优势与其说是它可以对文件系统对象做什么(并且它在此处获取完整信息,dir
会根据需要返回 FileInfo
或 FolderInfo
对象),而是它是整个提供程序模型。
您可以将注册表、证书存储、SQL Server、Internet Explorer 的 RSS 缓存等视为可由与文件系统相同的 cmdlet 导航的对象空间。
PowerShell 绝对是 Windows 上的前进方向。微软已将其作为未来非家用产品要求的一部分。因此在 Exchange 中的丰富支持,在 SQL Server 中的支持。这只会扩大。
最近的一个例子是 TFS PowerToys。许多 TFS 客户端操作无需每次都启动 tf.exe(这需要新的 TFS 服务器连接等)即可完成,并且随后进一步处理数据更加容易。以及允许对整个 TFS 客户端 API 的广泛访问比在 TF.exe 的任何一个团队资源管理器中公开的更详细。
sed 's/pattern/replacement/' file
,大致为 gc file | %{$_ -replace 'pattern','replacement'}
,同样对于 awk:awk 'BEGIN {} /pat1/ {action1} /pat2/ {action2} END {}' file
大致为 {BEGIN {}; switch -r -c -file file { 'pat1' {action1} 'pat2' {action2}}; END{};}
作为一个从 1997 年到 2010 年专注于 Windows 企业开发的人,显然的答案是 PowerShell,因为之前给出的所有充分理由(例如,它是 Microsoft 企业战略的一部分;它与 Windows/COM/.NET 很好地集成;以及使用对象而不是文件提供了“更丰富”的编码模型)。出于这个原因,在过去两年左右的时间里,我一直在使用和推广 PowerShell,并明确相信我在遵循“比尔的话”。
但是,作为一个实用主义者,我不再确定 PowerShell 是一个很好的答案。虽然它是一款出色的 Windows 工具,并且为填补 Window 命令行这一历史漏洞提供了非常必要的一步,但当我们都看到微软在消费者计算领域的控制下滑时,微软似乎越来越有可能在未来进行一场大规模的战斗,以保持其操作系统为对未来的企业很重要。
事实上,鉴于我发现我的工作越来越多地在异构环境中工作,我发现目前使用 Bash 脚本更有用,因为它们不仅适用于 Linux、Solaris 和 Mac OS X,而且还适用于Cygwin 的帮助——在 Windows 上。
因此,如果您相信操作系统的未来是商品化而不是垄断,那么在可行的情况下选择远离专有工具的敏捷开发工具策略似乎是有意义的。但是,如果您看到自己的未来被所有的 Redmond 所主宰,那么请选择 PowerShell。
我使用了一些 PowerShell 来实现脚本自动化。虽然环境似乎比 Unix shell 考虑得更多,但实际上使用对象而不是文本流要笨拙得多,而且在过去 30 年开发的许多 Unix 工具年仍然失踪。
Cygwin 仍然是我为 Windows 主机选择的脚本环境。在完成工作方面,它肯定优于其他选择。
这里有很多很棒的答案,这是我的看法。如果你准备好了,PowerShell 已经准备好了......示例:
grep = "Select-String -Pattern"
排序 = "Sort-Object"
uniq = "Get-Unique"
文件 =“Get-Item”
猫 =“Get-Content”
Perl/AWK/Sed 不是命令,而是实用程序,因此很难比较,但您几乎可以在 PowerShell 中完成所有操作。
sls
、sort
、gu
、gi
、gc
。在一个系统中使用制表符完成的长可读名称和可键入的短名称。这对您来说是用户友好的进步。
Get-Content
的别名之一是 cat
,因此 Cygwin/Unix 和 PowerShell 之间没有任何区别。不幸的是,在大多数情况下,Microsoft 的 cmdlet 文档都缺少有关别名的信息,但在 PowerShell 会话中却缺少 a list of all aliases is output by using Get-Alias
。 “Get-Unique”的别名是“gu”,所以它比 Cygwin/Unix 短!
我最近才开始认真地涉足 PowerShell。尽管在过去的七年里,我一直在几乎完全基于 Windows 的环境中工作,但我来自 Unix 背景,发现自己一直在尝试“Unix-fy”我在 Windows 上的交互体验。至少可以说令人沮丧。
将 PowerShell 与 Bash、tcsh 或 zsh 之类的东西进行比较是公平的,因为像 grep、sed、awk 这样的实用程序, find 等严格来说不是shell的一部分;但是,它们将始终是任何 Unix 环境的一部分。也就是说,像 Select-String 这样的 PowerShell 命令具有与 grep 非常相似的功能,并且 is 被捆绑为 PowerShell 中的核心模块......所以行可能有点模糊。
我认为关键是文化,以及各自的工具集将体现各自的文化这一事实:
Unix 是基于文件的(通常是非 Unicode)基于文本的文化。配置文件几乎完全是文本文件。另一方面,Windows 在配置格式方面总是更加结构化——配置通常保存在专有数据库(例如,Windows 注册表)中,这些数据库需要专门的工具进行管理。
Unix 管理(以及多年来的开发)界面传统上是命令行和虚拟终端。 Windows 最初是作为 GUI 的,而管理功能最近才开始从完全基于 GUI 的转变。鉴于它在 PowerShell 上的显着领先优势,我们可以期待 Unix 在命令行上的体验会更丰富、更成熟,而我的经验与此相符。关于这一点,根据我的经验: Unix 管理经验旨在使事情变得容易,只需最少的按键;这可能是由于必须通过缓慢的 9600 波特拨号连接来管理服务器的历史情况。现在 PowerShell 确实有别名,这对绕过相当冗长的动词名词标准有很大帮助,但是了解这些别名有点痛苦(任何人都知道比:别名 | where {$_.ResolvedCommandName - eq "
Unix 管理体验旨在以最少的击键使事情变得容易;这可能是由于必须通过缓慢的 9600 波特拨号连接来管理服务器的历史情况。现在 PowerShell 确实有别名,这对绕过相当冗长的动词名词标准有很大帮助,但是了解这些别名有点痛苦(任何人都知道比:别名 | where {$_.ResolvedCommandName - eq "
Unix 体验针对触摸打字员进行了优化;一个人几乎可以在不离开“家”位置的情况下做任何事情。例如,在 Bash 中,使用 Emacs 键绑定(是的,Bash 还支持 vi 绑定),使用 Ctrl-P 和 Ctrl-N 循环浏览历史记录,同时使用 Ctrl- 移动到行首和行尾A 和 Ctrl-E 分别...而且它绝对不会到此结束。尝试在 PowerShell 控制台中进行最简单的导航,而无需从初始位置移动,但您会遇到麻烦。
像 Unix 上的通用分页(少一点)这样简单的东西在 PowerShell 中似乎没有开箱即用,这有点令人沮丧,而且也不存在丰富的编辑器体验。当然,人们总是可以下载能够填补这些空白的第三方工具,但如果这些东西就像在几乎任何风格的 Unix 上一样“存在”,那就太好了。
Windows 文化,至少在系统 API 方面,很大程度上是由支持框架驱动的,即 COM 和 .NET,它们都是高度结构化和基于对象的。另一方面,对 Unix API 的访问传统上是通过文件接口(/dev 和 /proc)或(非面向对象的)C 风格的库调用。脚本编写体验与它们各自的操作系统范例相匹配也就不足为奇了。 PowerShell 本质上是结构化的(一切都是对象)并且基于 Bash-and-friends 文件。 PowerShell 程序员可以使用的结构化 API 非常庞大(基本上与现有的标准 COM 和 .NET 接口集的庞大相匹配)。
简而言之,尽管 PowerShell 的脚本功能可以说比 Bash 更强大(尤其是考虑到 .NET BCL 的可用性时),但 交互式 体验非常重要较弱,特别是如果您是从完全由键盘驱动、基于控制台的角度来看它(就像许多 Unix-heads 一样)。
alias -Definition *property
(或任何其他模式)怎么样?我认为您的答案的问题在于您将 shell 和控制台混为一谈:请记住,您可以选择具有不同编辑选项的控制台。他们故意破坏 DOS 控制台编辑以鼓励人们使用其他控制台,例如 ISE。
!!
示例可以在 Powershell 中编写为 (h -c 1) -replace '-1-','-2-' -replace '50','51' | iex
,但向上箭头和编辑单个命令更容易。如果您想在很多命令中执行此操作,我认为 Powershell 会赢。重复 10 个以命令 #255 结尾的命令并进行编辑: (h -c 10 -id 255) -replace '-1-','-2-' -replace '50','51' | iex
Powershell 的历史记录还允许您执行 Linux shell 中闻所未闻的事情;如果您想知道一个命令运行了多长时间:h -id 20 | select { $_.EndExecutionTime - $_.StartExecutionTime }
fc -e "sed -i -e 's/-1-/-2-/g' -e 's/50/51/g'" 10 255
无论如何,我不是一个非常有经验的 PowerShell 用户,但我接触到的一点点给我留下了深刻的印象。您可以将内置 cmdlet 链接在一起,以执行您可以在 Unix 提示符下执行的任何操作,并且还有一些额外的好处可以执行诸如导出到 CSV、HTML 表以及更深入的系统管理类型的工作.
如果您真的需要像 sed 这样的东西,那么总会有 UnixUtils 或 GnuWin32,您可以很容易地与 PowerShell 集成。
作为一个长期使用 Unix 的用户,我在习惯命令命名方案方面确实有点困难,如果我了解更多 .NET,我肯定会从中受益更多。
所以本质上,我说如果它的仅限 Windows 不会造成问题,那么它是非常值得学习的。
如果你喜欢 shell 脚本,你会喜欢 PowerShell!
从 A guided tour of the Microsoft Command Shell (Ars Technica) 开始。
'
(单引号)。对于双双引号的东西 - 同样,使用 write-output 'this is a "test"'
。您指向的问题是针对正则表达式的,而正则表达式的转义在任何地方都有效。 Powershell 也有 Here-Strings / 逐字字符串。甚至 Java 也没有这些!尝试在 Java 中转义正则表达式。而且您有时不使用文字路径。您需要时使用。 LiteralPath 逐字处理通配符而不扩展它们。当您的文件有它时,您可以使用它。它为您提供了更多选择。
write-output "this is a `"test`""
也有效。只需使用 `
而不是 `\`。 regex::escape 的存在是为了帮助你,这样你就不会错过转义的东西。没有必要使用它。您认为可以帮助您和防止错误的其他选项是不一致的。
由于我最近的实验使我深入了解了 PowerShell 和 .NET 调用,我必须说 PowerShell 可以替代 Cygwin 和 Unix shell。
我不确定 Perl,但由于 PowerShell 和 Perl 作为编程语言都是图灵完备的,所以我也同意替换 Perl。
PowerShell 在 Cygwin 和 *nix 下的普通 Bash 之上的一件事是,它能够执行沙盒 DLL 调用,通过直接 API 调用、WMI 方法甚至 COM 对象来操纵操作系统。如何通过代码启动 Internet Explorer,然后对其显示的文档做任何您想做的事情,有效地模拟 Web 服务器的后端?
如何从 SQL 服务器和其他数据提供者收集数据,解析它们并导出为 CSV、邮件消息、文本以及任何类型的现有和不存在的文件格式? (当然,具有根据收到的数据创建有效文件的适当技能,但 CSV 很容易获得)。
通过签名的 cmdlet 和脚本、组策略和执行策略可以提供额外的安全性,即使您以管理员身份运行恶意代码,它们也有助于防止恶意代码在您的系统上运行。
关于实现了哪些命令 - Richard 的答案列出了它们以及 PowerShell 已经模拟它们的功能的能力。
关于 PowerShell 是否强大以保证切换 - 这更多是个人喜好问题,尽管随着越来越多的 Windows 服务提供 PowerShell cmdlet 来控制它们,不使用带有这些服务的 PowerShell 被认为是一个障碍。 (Hyper-V 服务器是主要的此类服务,它还提供了使用 PowerShell cmdlet 比使用 GUI 执行更多操作的能力!)
这个答案可能晚了五年,但是,如果有人在 Windows 上执行管理任务或各种东西的一般脚本,他们绝对应该尝试利用 PowerShell 来达到他们的目的。
当您将 PowerShell 与 Cygwin/Perl/Shell 组合进行比较时,请注意 PowerShell 仅代表该组合的“Shell”部分。
但是,您可以从 PowerShell 调用任何命令,就像从 cmd.exe 或 Cygwin 一样。它没有重新实现指定的功能,当然也比不上 Perl。
它“只是”一个外壳,但它使编程更容易,为 .NET 世界提供了一个舒适的接口。
另请记住,PowerShell 需要 Windows XP、Windows Server 2003 或更高版本,这可能会根据您的 IT 基础架构造成问题。
更新:
我不知道我的回答会引发什么样的哲学辩论。
我在问题的上下文中发布了我的答案:将 PowerShell 与 Cygwin 和 Perl 和 Bash 进行比较。
PowerShell 是一个 shell,因为它在内置命令、命令行开关、用户函数和外部命令(.exe、.bat、.cmd)之间没有语法差异。只有调用 .NET 方法的不同之处在于在调用中添加命名空间或对象。
它的可编程性源自 .NET 框架,而不是任何特定于 PowerShell“语言”的东西。
我想说我相信 PowerShell 是一种“脚本语言”,只要将 Bugzilla 或 MediaWiki 实现为在 Web 服务器上运行的 PowerShell 脚本;)
在那之前,享受 comparisons。
TL;DR -- 我不讨厌 Windows 或 PowerShell。我无法在 Windows 或 PowerShell 中做任何事情。
我个人仍然觉得 PowerShell 充其量是平淡无奇的。
目录路径的制表符完成不复合,要求用户在每个名称完成后输入路径分隔符。
我仍然觉得 Windows 甚至没有路径或路径是什么的概念,没有可访问的用户主页指示器 ~/ 缺少一些 @environment://somejibberish/%user_home%
NTFS 仍然是一团糟,而且似乎永远都是。祝您导航顺利。
cmd-esque界面,恐龙cmd.exe在PowerShell中仍然可见,编辑→标记仍然是复制信息的唯一方式,并且仅以可见终端空间的矩形块的形式进行复制。和 Edit → Mark 仍然是将字符串粘贴到终端的唯一方法。
将其涂成蓝色并不会使其更具吸引力。不过,我不介意微软开发人员对颜色有兴趣。
Windows 总是在屏幕的左上角打开。对于使用垂直任务栏的人来说,这非常烦人,特别是考虑到 Windows 任务栏将覆盖窗口的唯一角落,该角落可以访问复制/粘贴功能。
由于 Windows 包含的工具,我不能说太多。由于有一整套开源、免费许可的 CLI 工具,并且 PowerShell 附带,据我所知,它们中没有一个完全令人失望。
PowerShell 的 wget 对 GNU wget 采用了看似无与伦比的参数。谢谢,希望的曙光便携无用。
PowerShell POSIX 不兼容 Bash,尤其是 && 运算符没有被处理,使得最简单的条件命令跟在后面不是一回事。
我不认识人;我试了一下,我真的试了;我仍然尝试试一试,希望下次打开它时它会变得没用。我不能在 PowerShell 中做任何事情,而且我几乎不能用一个真正的项目来做将 GNU 工具带到 Windows 的事情。
MySysGit 使用几个 GNU 工具为我提供了恐龙 cmd.exe 提示,它仍然非常平淡无奇,但最后路径完成工作。 Git 命令将在 Git Bash 中运行。
Mintty for MySysGit 在 mysysgit 的环境中提供 Cygwin 界面,使复制和粘贴成为一个东西(选择复制(鼠标),Shift+Ins 粘贴,多么现代... )。然而,像 git push
这样的东西在 Mintty 中被破坏了。
我并不是要咆哮,但即使使用像 Cygwin 这样的工具,我仍然看到 Windows 上的命令行可用性存在巨大问题。
PS:仅仅因为可以在 PowerShell 中完成某些事情,并不能使其可用。可用性比能力更深层次,是我作为消费者尝试使用产品时倾向于关注的内容。
.
或 [
来访问属性或索引,所以它不能只添加路径末尾的分隔符。究竟是哪个 PowerShell wget?哪个 PowerShell POSIX?它不是试图将 gnu 工具带到 Windows,或者是与 bash 兼容的顺便说一句。
(get-command wg*.exe).Path
。回复:bash 完成和 readline -> leeholmes.com/blog/2012/09/13/… 导致 github.com/lzybkr/PSReadLine
PowerShell 中的 cmdlet 非常好用并且工作可靠。因为我是一名 Java/C# 开发人员,所以它们的面向对象特性对我很有吸引力,但它根本不是一个完整的集合。由于它是面向对象的,因此错过了 POSIX 工具集的许多成熟的 text stream(awk
和 sed
仅举几例)。
对于热爱 OO 技术和热爱 POSIX 工具的成熟度这两个困境,我发现的最佳答案是两者都使用! PowerShell 的一个重要方面是它出色地将对象管道传输到标准流。默认情况下,PowerShell 使用对象管道来传输其对象。这些不是标准流(标准输出、标准错误和标准输入)。当 PowerShell 需要将输出传递给没有对象管道的标准进程时,它首先将对象转换为文本流。由于它在这方面做得很好,因此 PowerShell 是托管 POSIX 工具的绝佳场所!
最好的 POSIX 工具集是 GnuWin32。安装确实需要超过 5 秒,但值得麻烦,据我所知,它不会修改您的系统(注册表、c:\windows\*
文件夹等),除了将文件复制到您指定的目录.这特别好,因为如果您将工具放在共享目录中,许多人可以同时访问它们。
GnuWin32 安装说明
下载并执行 exe(它来自 SourceForge site),将其指向合适的目录(我将使用 C:\bin
)。它将在那里创建一个 GetGnuWin32
目录,您将在其中运行 download.bat
,然后是 install.bat
(不带参数),之后,将有一个 C:\bin\GetGnuWin32\gnuwin32\bin
目录,它是曾经存在于视窗机。将该目录添加到您的路径中,您就可以开始了。
我还没有看到 PowerShell 真正起飞,至少现在还没有。因此,除非您团队中的其他人已经知道它,否则可能不值得努力学习它。
对于您的困境,您可能最好使用其他人可能落后的脚本语言,如您提到的 Perl,或其他如 Ruby 或 Python。
我认为这在很大程度上取决于您需要做什么。就我个人而言,我一直在将 Python 用于我自己的个人脚本,但我知道当我开始编写一些我永远无法传递的东西时——所以我尽量不做任何太具有革命性的事情。
为什么不两者都用?在 Cygwin 中调用 PowerShell 脚本,就像 Perl 等任何其他解释脚本一样。
我这样做已经足够我为 Bash 包装器编写 https://bitbucket.org/jbianchi/powershell 以在 Cygwin 中调用 powershell.exe。它可以用作 shebang 作为 powershell.exe .ps1 脚本的第一行(因为 PowerShell 也使用“#”作为注释)。有关示例,请参见 https://bitbucket.org/jbianchi/powershell/wiki/Home
在几行中,Cygwin 和 PowerShell 是不同的工具,但是如果您安装了 Cygwin,则可以在 PowerShell 会话中运行 Cygwin 可执行文件。我已经习惯了 PowerShell,以至于现在我不再使用 grep、sort、awk 等。PowerShell 中有很多内置的替代品,如果没有,你可以在那里找到一个 cmdlet。
我发现自己使用的主要工具是 ssh.exe,但在 PowerShell 会话中。
它工作得很好。
我发现 PowerShell 编程不值得付出努力。
我有几年在 Unix 下编写 shell 脚本的经验,但我发现用 PowerShell 做很多事情都非常困难。
似乎许多功能都需要您询问 Windows 管理界面并发出类似 SQL 的命令来获取您需要的信息。
例如,我想编写一个脚本来从目录树中删除所有具有特定后缀的文件。在 Unix 下,这将是一个简单的...
find . -name \*.xyz -exec rm {} \;
几个小时后,使用 Scripting.FileSystemObject
和 WScript.Shell
并发出 "SELECT * FROM Win32_ShortcutFile WHERE Drive = '" &驾驶与"' AND 路径 = '" &搜索文件夹和"'",我终于放弃了,选择了 Windows Explorer 的 Search 命令,只需要手动操作即可。可能有一些方法可以做我想做的事,但我没有看到任何明显的东西,而且 MSDN 网站上的所有示例都如此微不足道,毫无价值。
编辑 嘿,当然,当我写完这篇文章后,我又浏览了一些内容,发现了我遗漏的内容:remove-item 命令的 -recurse
选项有问题(如果您使用 { 2})。
我一直在尝试“remove-item -filter '* .xyz' -recurse”,但它不起作用,所以我放弃了。
原来你需要使用 get-childitem -filter '*.xyz' -recurse | remove-item
PowerShell 非常强大,比 Unix shell 的标准内置程序更强大(但这只是因为它包含了通常由子程序提供的大部分功能)。此外,考虑到您可以使用任何 .NET 语言编写小程序,包括 IronPython、IronRuby、PerlNet 等。或者您可以简单地从 PowerShell 调用 Cygwin 命令,忽略所有额外功能,它的工作方式类似于重击、KornShell 或其他...
tar -c . | gzip > package.tar.gz
直接 之类的操作,否则您会受苦。请参阅brianreiter.org/2010/01/29/…