【发布时间】:2021-12-25 07:14:16
【问题描述】:
是否有任何函数可用于验证路径字符串?
https://docs.microsoft.com/en-us/dotnet/api/system.io.path?view=net-5.0 上的 Microsoft 文档说:“所有将路径作为参数的 Path 成员如果检测到无效的路径字符,就会抛出 ArgumentException。”
这应该抛出异常吗?
PS C:\src\t> [Io.Path]::GetFullPath('C:\sr<|c\t')
C:\sr<|c\t
PS C:\src\t> dotnet --version
5.0.301
PS C:\src\t> $PSVersionTable.PSVersion.ToString()
7.2.0
【问题讨论】:
-
你可以滥用
System.Uri.TryParse。如果返回true,则路径有效 -
if ((Test-Path -Path $yourPath) -eq $false) { Write-Output "Path is invalid";返回; }
-
Test-Path $path -IsValid看起来很有希望,但当它为C:\sr<|c\t返回$true时似乎被破坏了。 -
有趣的是,
Test-Path 'C:\sr<|c\t' -IsValid在 PS 5.1 上返回$false,正如预期的那样。它似乎仅在 PS 7.x 中被破坏。 -
在 PS 5.1
[IO.Path]::GetFullPath('C:\sr<|c\t')上确实会引发有关无效字符的异常。
标签: .net powershell .net-5