Powershell利用Import-csv处理文本实例分享(一行中包含多个栏位内容) 4


场景:

假如现在需要用Powershell脚本批量验证多台服务器的密码,而且这些服务器的用户名和密码都不相同,那么这个时候就相当于在一个命令中需要读取和输入三个变量(服务器名称,用户名,密码)。这种场景下,用Get-Content无法实现同时输入三个变量,之前借助于读取Excel文件实现,但是读取EXCEL需要要求执行脚本的电脑一定要安装EXCEL,有些公司软件许可证管理的比较严格。后来,发现用Import-CSV 也可以实现。故分享一下段简单代码,演示一下基本方法,希望可以给大家一些启发。

 

D:\Samples.csv, 内容如下:

为了方便理解如何取值,加入IP栏位作为参考比较,但是在代码中不取IP的值。

==========================================================

Server,IP,Username,Password
TestServer1,TestIP1,TESTUser1,Testpassword1
TestServer2,TestIP2,TESTUser2,Testpassword2

==========================================================

演示代码如下:

==========================================================

$Contents=Import-Csv D:\Servers.csv  #将CSV文件中内容导入,,赋值给变量为了利用数组进行逐个读取;

#用for 循环,逐个读取,CSV和EXCEL 类似,我们取对应的Server,Username,Password 三个栏位的值.

for ($i=0;$i -le 1;$i++){

$Server=$Contents.Server[$i]
$User=$Contents.UserName[$i]
$PWD=$Contents.Password[$i]

Write-Host “The $i line Servername is $Server”
Write-Host “The $i line Usernane is $User”
Write-Host “The $i line Password is $PWD”
}

==============================================================

 

输出结果如下:

==============================================================
The 0 line Servername is TestServer1

The 0 line Usernane is TESTUser1

The 0 line Password is Testpassword1

The 1 line Servername is TestServer2

The 1 line Usernane is TESTUser2

The 1 line Password is Testpassword2

==============================================================

本文链接: https://www.pstips.net/import-csv-handle-txt.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

4 条评论 “Powershell利用Import-csv处理文本实例分享(一行中包含多个栏位内容)

    • MarkCheng

      当时写的时候,只是简单的示范一下,用了两行,所以写了1,

      更新了一下:
      $Contents=Import-Csv D:\Servers.csv #将CSV文件中内容导入,,赋值给变量为了利用数组进行逐个读取;
      $csvrows=($Contents | Measure-Object).Count #统计csv中的行数

      #用for 循环,逐个读取,CSV和EXCEL 类似,我们取对应的Server,Username,Password 三个栏位的值.

      for ($i=0;$i -le ($csvrows-1); $i++ ){

      $Server=$Contents[$i].Server
      $User=$Contents[$i].UserName
      $PWD=$Contents[$i].Password

      Write-Host “The $i line Servername is $Server”
      Write-Host “The $i line Usernane is $User”
      Write-Host “The $i line Password is $PWD”
      }