PowerShell使用for each循环更改字符串的两个部分

时间:2018-01-26 01:17:20

标签: powershell foreach

我有两个变量:$Computers$Users

我想使用每个对象中包含的对象为每个

创建一个路径

所以:

c:\users\username\appdata becomes \\computername\users\jblogs\appdata

有很多次因为有用户和计算机。

输出应如下所示:

  

\ computername01 \用户\ jblogs \应用程序数据

     

\ computername02 \用户\ mclogs \应用程序数据

     

\ computername03 \用户\ bfrogs \应用程序数据

     

\ computername04 \用户\ klogs \应用程序数据

我尝试使用Foreach循环,但我只能更改计算机名称或更改字符串中的用户名,而不是两者都更改。

有什么建议吗?

我尝试了一种嵌套方法,但这会为所有用户重复每个计算机名称:

ForEach ($Computer in $computers)
{
    ForEach ($User in $Users)
    {
        $path = "\\$Computer\c$\Users\$User\Appdata"
        Write-Host $path
    }
}

我想我只需要逻辑帮助。

2 个答案:

答案 0 :(得分:0)

缺少双引号,不是原因吗?

ForEach ($computer in $computers)
{
    Foreach ($User in $Users)
    {
        $path = "\\$Computer\c$\Users\$user\Appdata"
        Write-Host $path
    }
}

答案 1 :(得分:0)

据我了解,您拥有相同数量的计算机和用户。

你正在寻找:

$computers = "Comp1","Comp2"
$users = "User1","User2"

for ($i=0 ; $i-lt$computers.Length ; $i++)
{
  $path = "\\$($Computers[$i])\c$\Users\$($users[$i])\Appdata"
  Write-Host $path  
}