将值添加到 Foreach-Object 的三个不同变量中

Add value into three different variables from Foreach-Object

我有一个文件 (config.cfg),其中包含三个这样的字符串:host:user:pass

在我的 Unix 代码中,我这样做是为了获取值并将其分配给三个不同的变量:

  $FTP_HOST=$( cut -f1 -d: config.cfg )
  $FTP_USER=$( cut -f2 -d: config.cfg )
  $FTP_PASS=$( cut -f3 -d: config.cfg )

如何在 PowerShell 3.0 中执行此操作?我试过 Foreach-Object 但找不到分配给三个变量的方法。

您可以用冒号拆分数据并分配每个元素:

$config = Get-Content config.cfg
$FTP_HOST = ($config -split ":")[0]
$FTP_USER = ($config -split ":")[1]
$FTP_PASS = ($config -split ":")[2]

或者将数据预先拆分成一个数组,然后对数组元素进行赋值:

$config = Get-Content config.cfg
$carry = $config -split ":"
$FTP_HOST = $carry[0]
#etc...

PowerShell 借鉴了 Perl 和 Python,因此您可以这样做:

$FTP_HOST, $FTP_USER, $FTP_PASS = (Get-Content .\config.cfg) -split ':'