PowerShell当心ToString()陷阱


适用于所有PowerShell版本

所有的.NET对象都有一个ToString()方法,返回该对象代表的文本描述。我们在PowerShell中输出一个对象时,默认也会调用这个对象的ToString方法,但是同类型的ToString返回的对象也可能是不同的,所以在不确定的情况下最好不要随意使用。

比如下面的脚本,两行脚本都会生成一个FileInfo对象,分别代表这同一个文件。唯一的不同只是他们的创建方式不同,但是他们的属性都是一致的,然后ToString()方法返回的结果却迥异。

PS> $file1 = Get-ChildItem $env:windir -Filter regedit.exe
PS> $file2 = Get-Item $env:windir\regedit.exe

$file1.FullName; $file2.FullName
C:\WINDOWS\regedit.exe
C:\WINDOWS\regedit.exe
 
PS> $file1.GetType().FullName; $file2.GetType().FullName
System.IO.FileInfo
System.IO.FileInfo
 
PS> $file1.ToString(); $file2.ToString()
regedit.exe
C:\WINDOWS\regedit.exe

你可能会大叫“Ou,my gold”,怎么可能,这怎么可能,不急,我们下篇文章来揭开这个ToString()返回值竟然不同的神秘面纱。

原文连接:Careful with ToString()

本文链接: https://www.pstips.net/a556ca.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注