Whi*_*uit 4 powershell powershell-ise
在 Powershell ISE 中调试和测试多行命令多年来一直困扰着我。我喜欢多行命令,因为它们易于阅读,但它们使调试变得更加困难。例如,我使用以下命令来获取早于$days(顺便说一下)的文件夹。
$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 `
| Where CreationTime -gt (Get-Date).AddDays(-1 * $days) `
| Sort-Object -Property LastWriteTime
Run Code Online (Sandbox Code Playgroud)
我想更改AddDays为AddMinutes测试不同的结果集,但我想保留原始行,以便我可以轻松地来回切换。下面我复制了我想保留的行并将其注释掉,并在新行上更改AddDays为AddMinutes添加#中断多行功能。有没有一种简单的方法可以解决这个问题,我不必剪切复制的行并将其从命令中“移出”?或者有没有办法将命令拆分/拆分为多行?
$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 `
# | Where CreationTime -gt (Get-Date).AddDays(-1 * $days) `
| Where CreationTime -gt (Get-Date).AddMinutes(-1 * $days) `
| Sort-Object -Property LastWriteTime
Run Code Online (Sandbox Code Playgroud)
(由于注释掉的行,以上不起作用)
使用多行注释语法而不是#。
command <# comment #>
-parameter1=value1 <# comment #>
-parameter2=value2 <# comment #>
Run Code Online (Sandbox Code Playgroud)
这应该允许您在多行命令中注释文本。
但是,这仅在您使用 Powershell 2.0 时有效
你的问题是 [icky, nasty] 反引号。[咧嘴笑] powershell知道管道后面还有更多……因此,如果将管道放在正在管道传输的段的末尾,则无需添加反引号。像这样 ...
$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 |
# Where CreationTime -gt (Get-Date).AddDays(-1 * $days) |
Where CreationTime -gt (Get-Date).AddMinutes(-1 * $days) |
Sort-Object -Property LastWriteTime
Run Code Online (Sandbox Code Playgroud)
小智 5
由于 powershell 期望在 a|或 a之后继续,
作为行中的最后一个字符,因此您不需要反引号,并且
可以采用不同的格式,那么较长管道中的单行注释仍然有效:
$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 |
# Where CreationTime -gt (Get-Date).AddDays(-1 * $days) |
Where CreationTime -gt (Get-Date).AddMinutes(-1 * $minutes) |
Sort-Object -Property LastWriteTime
Run Code Online (Sandbox Code Playgroud)