【发布时间】:2020-01-22 06:11:02
【问题描述】:
在带有 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”。
- 等
我熟悉 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 }
【问题讨论】:
标签: windows powershell hex powershell-2.0