【问题标题】:Power Shell Script for loop?用于循环的Powershell脚本?
【发布时间】:2019-08-09 14:29:23
【问题描述】:

我正在尝试在 PowerShell 中创建一个脚本来运行具有一些默认参数的实用程序。我们需要将多个 IP 地址导入到 CSV 文件中。然后循环运行每个导入的 IP 地址的实用程序。

Set-Location 'C:\Program Files\Utility
$printerlist = Get-Content ".\Printer.csv"
$pass = Read-Host "Enter your Password"

.\Utility.exe -USERNAME="ADMIN" -PASSWORD="$pass"-ADDRESS="$printerlist" -PP-INSTALL="192.168.33.21" -JA-INSTALL="192.168.33.21" -IPA-INSTALL="192.168.33.21" -QUOTA-DELETE 

Foreach($printer in $printerlist){
   echo $line

}

【问题讨论】:

  • 为什么不将.\Utility.exe 行移到foreach 循环中并设置-ADDRESS=$printer

标签: powershell powershell-3.0


【解决方案1】:

正如评论所指出的,您需要遍历这些 IP 地址。您可以使用称为 splatting 的功能来应用一组默认参数:

Set-Location -Path $Env:ProgramFiles\Utility

$pass = Read-Host -Prompt 'Enter your Password'
$utilArgs = @(
    '-USERNAME="ADMIN"'
    "-PASSWORD=""$pass"""
    '-PP-INSTALL="192.168.33.21"'
    '-JA-INSTALL="192.168.33.21"'
    '-IPA-INSTALL="192.168.33.21"'
    '-QUOTA-DELETE'
)

foreach ($printer in Get-Content -Path Printer.csv) {
    .\Utility.exe "-ADDRESS=""$printer""" @utilArgs
}

文档

about_Splatting

【讨论】:

  • 感谢您的回复。我运行了您提供的脚本,但它读取的是多个 IP 地址,而不是单个 $printer 地址,后者会产生“无法访问 IP 地址”消息。
  • 如果不了解文件中的内容,我无法帮助您解决这些问题。如果有标题,请在您的问题中添加示例。
猜你喜欢
  • 2021-11-22
  • 2017-04-17
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2022-10-17
  • 2017-10-05
  • 2014-04-18
相关资源
最近更新 更多