Loops 用于安装打印机的嵌套foreach循环

Loops 用于安装打印机的嵌套foreach循环,loops,powershell,foreach,scripting,break,Loops,Powershell,Foreach,Scripting,Break,我需要在多台服务器上安装多台打印机,并希望编写脚本,以便只需配置一次 我正在使用PowerShell查询2个CSV文件;1获取要安装打印机的计算机列表,另一个获取所需打印机的名称、IP、驱动程序和位置列表。我正在使用2个foreach循环来完成此操作,并使用break来尝试使其正确循环 目前,它是第一台安装了所有打印机的电脑。如果我将其移动到foreach($printer in$printers)循环中,它将只在所有计算机上安装第一台打印机 感谢您提供的任何帮助 $computerfile =

我需要在多台服务器上安装多台打印机,并希望编写脚本,以便只需配置一次

我正在使用PowerShell查询2个CSV文件;1获取要安装打印机的计算机列表,另一个获取所需打印机的名称、IP、驱动程序和位置列表。我正在使用2个
foreach
循环来完成此操作,并使用
break
来尝试使其正确循环

目前,它是第一台安装了所有打印机的电脑。如果我将其移动到
foreach($printer in$printers)
循环中,它将只在所有计算机上安装第一台打印机

感谢您提供的任何帮助

$computerfile = Import-Csv C:\computerlist.csv
$printers = Import-Csv C:\printers2.csv 

foreach ($computer in $computerfile) {
    "computer: $computer"
    :outer
    foreach ($printer in $printers) {
        Add-PrinterPort -ComputerName $computer.Name -Name $printer.IP -PrinterHostAddress $printer.IP
        Add-Printer -ComputerName $computer.Name -Name $printer.Name -DriverName $printer.Driver -PortName $printer.IP -ShareName $printer.Name -Location $printer.Location
        Set-printer -ComputerName $computer.Name -Name $printer.Name -Shared $false -Published $true
    }
    break :outer
}

请从代码中删除break:outer


发生的情况是,第一个循环开始运行,并且只进入第二个循环一次因为中断而跳转到下一台计算机。

为什么使用中断:外部?
break
语句您可以使用该语句立即退出
Foreach
For
While
Do
Switch
语句。完全忽略它。除了可能做一些错误处理,这可能是一个好主意,以防出现远程处理或权限问题……这里没有理由过早地中断循环。对于每台服务器,安装每台打印机。移除标签和中断。你有错误吗?我不确定这里的问题是什么;I don’我不认为2个foreach循环会循环通过所有PC而不分离循环,但你是对的;通过删除“:outer”和“break:outer”行,代码可以正常工作。谢谢。这是我的荣幸:)