我正在尝试使用 powershell 读取 txt 文件,仅读取某些字符
$TxtFilePath = "C:\Users\myname\mycode\mydata.txt"
$TxtData = Get-Content $TxtFilePath | ForEach-Object {
# Ensure the line is long enough before extracting substrings
$Line = $_.PadRight(138) # Pad the line to ensure it has at least 138 characters
$entry = @{
LastName = $Line.Substring(18, 40).Trim()
FirstName = $Line.Substring(58, 40).Trim()
Birthdate = $Line.Substring(128, 10).Trim()
}
[PSCustomObject]$entry
}
第 N 个字符到第 N 个字符是对应值的空格(尽管有时例如名字只有 5 个字符,但 18-58 个字符是为姓氏准备的)。当我运行该代码时,错误是“”值无法转换为“System.Management.Automation.LanguagePrimitives+InternalPSCustomObject”类型。此语言模式仅支持核心类型。“””
它引用了这一行“”“[PSCustomObject]$entry””将不胜感激任何线索
我确实希望它可以按照规则读取 txt 文件。
错误消息意味着您的会话以
ConstrainedLanguage
模式运行(请参阅about_Language_Modes帮助主题)。但是,错误消息表明Windows PowerShell以及PowerShell (Core) 7(从 v7.5.0 开始)中存在一个错误:您应该能够使用
[pscustomobject]
强制类型转换在受限语言模式下构造实例,因为类型本身(又名[psobject]
)在此模式下受支持:解决方法:
使用
New-Object
而不是强制类型转换来构造您的[pscustomobject]
实例:注意的使用
[ordered]
,即有序哈希表,以保证属性按照定义顺序创建。