显示 GetInvalidFileNameChars() 的 Powershell 输出的十六进制值

miv*_*ivk 2 windows powershell hex powershell-2.0

在带有 PowerShell v.2 的 Windows 7 中,我尝试使用 来查看它的无效字符列表[System.IO.Path]::GetInvalidFileNameChars()

在提示符下输入时,它会列出字符,每行一个。我想要的是获取他们的十六进制(或十进制)代码。

阿蒙我尝试过的事情:

  • ForEach ($char in [System.IO.Path]::GetInvalidFileNameChars()) {"{0:x}" -f $char}:输出字符,而不是十六进制。
  • [System.IO.Path]::GetInvalidFileNameChars() | { $_.ToString("X2") }

表达式只允许作为管道的第一个元素。

  • [System.IO.Path]::GetInvalidFileNameChars() | Format-Hex -Raw -Encoding Ascii

术语“十六进制格式”无法识别...

  • ForEach ($c in [System.IO.Path]::GetInvalidFileNameChars()) {echo $c.ToString("X2")}

找不到“ToString”的重载和参数计数:“1”。

  • ETC。

我熟悉 Bash、Perl,甚至是蹩脚的cmd.exe,但不幸的是对 PowerShell 一无所知。

但我确信一定有一种简单易用的方法来列出这些字符的十六进制值。

更新: 由于下面的答案,我最终使用的命令是这个命令,除了十六进制值之外,它还打印十进制值和字符本身:

ForEach ($c in [System.IO.Path]::GetInvalidFileNameChars()) { $i=([int]$c); "{0,3:d}  {1,2:x2}  {2,1}" -f $i,$i,$c }
Run Code Online (Sandbox Code Playgroud)

The*_*heo 5

尝试

[System.IO.Path]::GetInvalidFileNameChars() | ForEach-Object {'{0:X2}' -f [int]$_ }
Run Code Online (Sandbox Code Playgroud)