[玩转系统] Import-Csv (Microsoft.PowerShell.Utility)
作者:精品下载站 日期:2024-12-14 02:05:51 浏览:14 分类:玩电脑
Import-Csv (Microsoft.PowerShell.Utility)
Import-Csv
模块 :Microsoft.PowerShell.Utility根据字符分隔值 (CSV) 文件中的项目创建类似表格的自定义对象。
句法
Import-Csv
[[-Delimiter] <Char>]
[-Path] <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[[-Delimiter] <Char>]
-LiteralPath <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[-Path] <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
-LiteralPath <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
描述
Import-Csv
cmdlet 从 CSV 文件中的项目创建类似表格的自定义对象。 CSV 文件中的每一列都成为自定义对象的属性,行中的项目成为属性值。 Import-Csv
适用于任何 CSV 文件,包括由 Export-Csv
cmdlet 生成的文件。
您可以使用 Import-Csv
cmdlet 的参数指定列标题行和项目分隔符,或直接 Import-Csv
使用当前区域性的列表分隔符作为项目分隔符。
您还可以使用 ConvertTo-Csv
和 ConvertFrom-Csv
cmdlet 将对象转换为 CSV 字符串(以及反之)。这些 cmdlet 与 Export-CSV
和 Import-Csv
cmdlet 相同,只是它们不处理文件。
如果 CSV 文件中的标题行条目包含空值或 Null 值,PowerShell 会插入默认标题行名称并显示警告消息。
从 PowerShell 6.0 开始,Import-Csv
现在支持 W3C 扩展日志文件格式。
示例
示例 1:导入流程对象
此示例演示如何导出然后导入过程对象的 CSV 文件。
Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
BasePriority NoteProperty string BasePriority=8
Company NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name SI Handles VM WS PM NPM Path
---- -- ------- -- -- -- --- ----
ApplicationFrameHost 4 407 2199293489152 15884288 15151104 23792 C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit 0 157 2199112204288 4591616 1630208 10376
winlogon 4 233 2199125549056 7659520 2826240 10992 C:\WINDOWS\System32\WinLogon.exe
WinStore.App 4 846 873435136 33652736 26607616 55432 C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE 0 201 2199100219392 8830976 3297280 10632 C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE 0 407 2199157727232 18509824 12922880 16624 C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost 0 834 2199310204928 51945472 87441408 24984 C:\Windows\System32\WUDFHost.exe
Get-Process
cmdlet 将进程对象沿着管道发送到 Export-Csv
。 Export-Csv
cmdlet 将流程对象转换为 CSV 字符串,并将字符串保存在 Processes.csv 文件中。 Import-Csv
cmdlet 从 Processes.csv 文件导入 CSV 字符串。字符串保存在 $P
变量中。 $P
变量沿着管道发送到 Get-Member
cmdlet,该 cmdlet 显示导入的 CSV 字符串的属性。 $P
变量沿着管道发送到 Format-Table
cmdlet 并显示对象。
示例2:指定分隔符
此示例演示如何使用 Import-Csv
cmdlet 的 Delimiter 参数。
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Get-Process
cmdlet 将进程对象沿着管道发送到 Export-Csv
。 Export-Csv
cmdlet 将流程对象转换为 CSV 字符串,并将字符串保存在 Processes.csv 文件中。 Delimiter 参数用于指定冒号分隔符。 Import-Csv
cmdlet 从 Processes.csv 文件导入 CSV 字符串。字符串保存在 $P
变量中。 $P
变量沿着管道发送到 Format-Table
cmdlet。
示例 3:指定分隔符的当前区域性
此示例演示如何将 Import-Csv
cmdlet 与 UseCulture 参数结合使用。
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Get-Culture
cmdlet 使用嵌套属性 TextInfo 和 ListSeparator 来获取当前区域性的默认列表分隔符。 Get-Process
cmdlet 将进程对象沿着管道发送到 Export-Csv
。 Export-Csv
cmdlet 将流程对象转换为 CSV 字符串,并将字符串保存在 Processes.csv 文件中。 UseCulture 参数使用当前区域性的默认列表分隔符。 Import-Csv
cmdlet 从 Processes.csv 文件导入 CSV 字符串。
示例 4:更改导入对象中的属性名称
此示例演示如何使用 Import-Csv
的 Header 参数更改生成的导入对象中的属性名称。
Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State : Running
MoreData : True
StatusMessage :
Location : localhost
Command : Get-Process
StateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : a259eb63-6824-4b97-a033-305108ae1c2e
Id : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime : 12/20/2018 18:59:57
EndTime :
JobType : BackgroundJob
Output : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]
Start-Job
cmdlet 启动运行 Get-Process
的后台作业。作业对象沿着管道发送到 Export-Csv
cmdlet 并转换为 CSV 字符串。 NoTypeInformation 参数从 CSV 输出中删除类型信息标头,并且在 PowerShell v6 及更高版本中是可选的。 $Header
变量包含替换以下默认值的自定义标头:HasMoreData、JobStateInfo、PSBeginTime、PSEndTime 和 PSJobTypeName。 $A
变量使用 Get-Content
cmdlet 从 Jobs.csv 文件获取 CSV 字符串。 $A
变量用于从文件中删除默认标头。 Out-File
cmdlet 将新版本的 Jobs.csv 文件保存在 $A
变量中。 Import-Csv
cmdlet 导入 Jobs.csv 文件并使用 Header 参数应用 $Header
变量。 $J
变量包含导入的 PSCustomObject 并在 PowerShell 控制台中显示该对象。
示例 5:使用 CSV 文件创建自定义对象
此示例演示如何使用 CSV 文件在 PowerShell 中创建自定义对象。
Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
LinkID NoteProperty string LinkID=113207
TopicTitle NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases
要创建 Links.csv 文件,请使用 Get-Content
输出中显示的值。
Get-Content
cmdlet 显示 Links.csv 文件。 Import-Csv
cmdlet 导入 Links.csv 文件。 Header 参数指定属性名称LinkId 和TopicTitle。这些对象存储在 $A
变量中。 Get-Member
cmdlet 显示 Header 参数中的属性名称。 Where-Object
cmdlet 选择具有包含别名的TopicTitle 属性的对象。
示例 6:导入缺少值的 CSV
此示例显示当 CSV 文件中的标题行包含 null 或空值时,PowerShell 中的 Import-Csv
cmdlet 如何响应。 Import-Csv
用默认名称替换缺失的标题行,该标题行将成为 Import-Csv
返回的对象的属性名称。
Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
ProjectID ProjectName H1 Completed
--------- ----------- -- ---------
13 Inventory Redmond True
440 FarEast True
469 Marketing Europe False
(Import-Csv -Path .\Projects.csv).H1
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
Redmond
FarEast
Europe
要创建 Projects.csv 文件,请使用示例的 Get-Content
输出中显示的值。
Get-Content
cmdlet 显示 Projects.csv 文件。标题行缺少 ProjectName 和 Completed 之间的值。 Import-Csv
cmdlet 导入 Projects.csv 文件并显示警告消息,因为 H1 是默认标头名称。 (Import-Csv -Path .\Projects.csv).H1
命令获取 H1 属性值并显示警告。
参数
-Delimiter
指定分隔 CSV 文件中的属性值的分隔符。默认值为逗号 (,
)。
输入一个字符,例如冒号 (:
)。要指定分号 (;
),请将其括在单引号中。要指定转义特殊字符,例如制表符 (`t
),请将其用双引号引起来。
如果您在文件中指定的字符不是实际字符串分隔符,Import-Csv
无法从 CSV 字符串创建对象,并将返回 CSV 字符串。
查尔
位置:1
默认值:逗号 (,)
必需的:False
接受管道输入:False
接受通配符:False
-Encoding
指定导入的 CSV 文件的编码。默认值为 utf8NoBOM
。
该参数可接受的值如下:
ascii
:使用 ASCII(7 位)字符集的编码。ansi
:使用当前区域性的 ANSI 代码页的编码。此选项是在 PowerShell 7.4 中添加的。bigendianunicode
:使用 big-endian 字节顺序以 UTF-16 格式进行编码。bigendianutf32
:使用 big-endian 字节顺序以 UTF-32 格式进行编码。oem
:使用 MS-DOS 和控制台程序的默认编码。unicode
:使用小端字节顺序以 UTF-16 格式进行编码。utf7
:以UTF-7格式编码。utf8
:以UTF-8格式编码。utf8BOM
:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码utf8NoBOM
:以 UTF-8 格式编码,不带字节顺序标记 (BOM)utf32
:以 UTF-32 格式编码。
从 PowerShell 6.2 开始,Encoding 参数还允许使用注册代码页的数字 ID(例如 -Encoding 1251
)或注册代码页的字符串名称(例如 -Encoding “windows-1251”
)。有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。
从 PowerShell 7.4 开始,您可以使用 Encoding 参数的 Ansi
值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定。
笔记
不再建议使用UTF-7*。从 PowerShell 7.1 开始,如果为 Encoding 参数指定 utf7
,则会写入警告。
编码
接受的值:ASCII、BigEndianUnicode、BigEndianUTF32、OEM、Unicode、UTF7、UTF8、UTF8BOM、UTF8NoBOM、UTF32
位置:命名
默认值:UTF8无BOM
必需的:False
接受管道输入:False
接受通配符:False
-Header
为导入的文件指定备用列标题行。列标题确定 Import-Csv
创建的对象的属性名称。
输入以字符分隔的列表形式的列标题。不要将标题字符串括在引号中。将每个列标题用单引号引起来。
如果输入的列标题少于数据列,则剩余的数据列将被丢弃。如果您输入的列标题多于数据列,则会使用空数据列创建附加列标题。
使用标题参数时,从 CSV 文件中删除原始标题行。否则,Import-Csv
从标题行中的项目创建一个额外的对象。
String[]
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-LiteralPath
指定要导入的 CSV 文件的路径。与 Path 不同,LiteralPath 参数的值完全按照键入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其用单引号引起来。单引号告诉 PowerShell 不要将任何字符解释为转义序列。
类型 :String[]
别名:PSPath, LP
位置:命名
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Path
指定要导入的 CSV 文件的路径。您还可以通过管道将路径传递给 Import-Csv
。
String[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-UseCulture
使用当前区域性的列表分隔符作为项目分隔符。要查找区域性的列表分隔符,请使用以下命令:(Get-Culture).TextInfo.ListSeparator
。
SwitchParameter
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
输入
字符串
您可以通过管道传输包含此 cmdlet 路径的字符串。
输出
对象
此 cmdlet 返回 CSV 文件中的内容描述的对象。
笔记
PowerShell 包含以下 Import-Csv 别名:
所有平台:
ipcsv
由于导入的对象是对象类型的 CSV 版本,因此用于格式化对象类型的非 CSV 版本的 PowerShell 类型格式化条目无法识别和格式化它们。
Import-Csv
命令的结果是形成类似表格的自定义对象的字符串集合。每行都是一个单独的字符串,因此您可以使用对象的 Count 属性来计算表行数。列是对象的属性,行中的项目是属性值。
列标题行确定列数和列名称。列名也是对象属性的名称。第一行被解释为列标题,除非您使用 Header 参数指定列标题。如果任何行的值多于标题行,则忽略附加值。
如果列标题行缺少值或包含 Null 或空值,Import-Csv
使用 H 后跟缺少的列标题和属性名称的数字。
在 CSV 文件中,每个对象都由该对象的属性值的字符分隔列表表示。使用对象的ToString()方法将属性值转换为字符串,因此它们由属性值的名称表示。 Export-Csv
不导出对象的方法。
Import-Csv
还支持 W3C 扩展日志格式。以 #
开头的行将被视为注释并被忽略,除非注释以 #Fields:
开头并且包含分隔的列名称列表。在这种情况下,cmdlet 将使用这些列名称。这是 Windows IIS 和其他 Web 服务器日志的标准格式。有关详细信息,请参阅扩展日志文件格式。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag