Похоже, вы почти достигли цели. Просто используйте несколько конвейеров и foreach l oop или два.
Это попытается удалить всех пользователей в списке со всех компьютеров в списке:
# define function that takes user list from pipeline
function Remove-User {
[cmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true,Mandatory=$true)]
[string]
$user,
[Parameter(Mandatory=$true)]
[string]
$computer
)
process {
# copied from question
Invoke-Command -ComputerName $computer -ScriptBlock {
Get-WmiObject -Class Win32_UserProfile |
Where-Object { $_.LocalPath -eq "c:\users\${$user}" } |
Remove-WmiObject
} -ArgumentList $user
}
}
# get your lists whatever way makes sense
$userList = Import-Csv -Path "users.csv" -Delimiter ','
$computerList = Import-Csv -Path "computers.csv" -Delimiter ','
# call function to remove all users for each computer
$computerList | ForEach-Object {
$userList | Remove-User -computer $_
}
Я не уверен, откуда вы получаете свой список, но я использовал csv только потому, что.
* примечание: это исходит из предположения, что часть кода Invoke-Command
из nextOf Windows делает то, что говорит