当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 周五乐趣:更好的 PSEdit

作者:精品下载站 日期:2024-12-14 07:46:02 浏览:15 分类:玩电脑

周五乐趣:更好的 PSEdit


在PowerShell ISE中,有一个名为PSEdit的内置函数。您可以使用此功能直接从 ISE 命令提示符轻松地将文件加载到 ISE。

Psedit c:\scripts\myscript.ps1

您还可以加载多个文件,但并不像您希望的那么容易。我发现自己想要这样做:

[玩转系统] 周五乐趣:更好的 PSEdit

正如你所看到的,这不是我所期待的。我可以让 PSEdit 打开多个文件,但我需要使用如下命令:

psedit (dir vAL*.PS1)

我终于厌倦了这个,所以我查看了 PSEdit 函数的代码。

[玩转系统] 周五乐趣:更好的 PSEdit

根据我所看到的,我假设这是很久以前写的。所以我决定更新它。这是我的版本:

#requires -version 4.0

Function PSEdit2 {
[cmdletbinding()]

param(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName,
HelpMessage="Enter a file path")]
[Alias("Fullname","Filenames")]
[ValidateScript({
if (Test-Path $_) {
$True
}
else {
Throw "Cannot validate path $_."
}
})]
[string[]]$Path
)

Begin {
   Write-Verbose "Starting $($MyInvocation.Mycommand)"
} #begin

Process {
   foreach ($filename in $path) {
     #resolve paths
     $resolved = Resolve-Path -Path $filename
     Write-Verbose "Opening $resolved"
     $psISE.CurrentPowerShellTab.Files.Add($resolved) | Out-Null
}

} #process
End {
  Write-Verbose "Ending $($MyInvocation.Mycommand)"
} #end

} #end function

主要的区别是我的版本在管道中工作,至少对我来说,可以更轻松地一次打开多个文件。

dir val*.ps1 | psedit2

我还添加了一些用于故障排除的详细消息。这是我创建新的 PowerShell 工具时的常见做法。您还会注意到,我用完整的 cmdlet 和参数名称替换了原始函数中的别名。

最后一个“功能”是我自定义的 ValidateScript 属性。我想验证是否有任何路径指向合法文件。我本来可以简单地使用这个:

[ValidateScript({Test-Path $_})]

但是,如果路径未通过测试,PowerShell 会显示一条很长的错误消息,但该消息并不总是有帮助。所以我添加了一些逻辑。验证测试必须返回 True 或 False。当它为 false 时,PowerShell 会引发异常。所以我写了自己的异常消息。

[玩转系统] 周五乐趣:更好的 PSEdit

我在原始 psedit 中遇到了类似的错误。

[玩转系统] 周五乐趣:更好的 PSEdit

所以也许我在这方面还没有进步那么多。但我本来可以写更长的消息,并且我想演示这种技术,以防您想使用它。

关于我的 PSEdit 版本的最后一句话。我没有使用标准名称,我猜是因为原始函数没有使用标准名称。我对此表示同意。这是其中一种情况,该函数是一个“骗子”命令,具有简单的、类似别名的名称。如果您想替换原来的 PSEdit 函数,请将我的函数添加到您的 ISE 配置文件脚本中并将其重命名为 PSEdit。

享受。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯