PowerShell使用for each循环更改字符串的两部分
我有两个变量:PowerShell使用for each循环更改字符串的两部分,powershell,foreach,Powershell,Foreach,我有两个变量:$Computers和$Users 我想使用每个文件中包含的对象为每个文件创建一个路径 因此: 用户和计算机的数量是多少 输出应如下所示: \computername01\users\jblogs\appdata \computername02\users\mclogs\appdata \computername03\users\bfrogs\appdata \computername04\users\klogs\appdata 我曾尝试使用Foreach循环,但我只能更改字符串中
$Computers
和$Users
我想使用每个文件中包含的对象为每个文件创建一个路径
因此:
用户和计算机的数量是多少
输出应如下所示:
\computername01\users\jblogs\appdata
\computername02\users\mclogs\appdata
\computername03\users\bfrogs\appdata
\computername04\users\klogs\appdata
我曾尝试使用Foreach
循环,但我只能更改字符串中的计算机名或用户名,而不能同时更改两者
有什么建议吗
我尝试过嵌套方法,但这会为尽可能多的用户重复每台计算机的名称:
ForEach ($Computer in $computers)
{
ForEach ($User in $Users)
{
$path = "\\$Computer\c$\Users\$User\Appdata"
Write-Host $path
}
}
我想我需要的只是逻辑方面的帮助。双引号缺失,这不是原因吗
ForEach ($computer in $computers)
{
Foreach ($User in $Users)
{
$path = "\\$Computer\c$\Users\$user\Appdata"
Write-Host $path
}
}
据我所知,你们拥有同样数量的计算机和用户 您是否正在寻找:
$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
}
什么是
$c
?@derloopkat,我想你是在问c$
,那就是用UNC路径表示远程计算机上的c:drive。嗨,亨东,那只是一个打字错误。我在脚本中对路径使用了双引号。嗨,JPBlanc,是的,总是有与计算机相同数量的用户。我按原样测试了您的脚本,不幸的是返回:\\Comp1\c$\Users\\Appdata无法索引到空数组中。在第6行,char:43+$path=“\\$($Computers[$i])\c$\Users\$($user[$i])\Appdata”+~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(:)[],RuntimeException+FullyQualifiedErrorId:NullArray。我想它可能会与我将尝试的一些操作一起工作。谢谢你到目前为止的帮助。嗨,JPBlanc-它现在可以工作了!我刚刚在第6行中将$user变量更改为$users。非常感谢你!没错,错了,现在没问题了。你可以把问题放在回答的地方。
$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
}