powershell - 使用带有 CSV 的普通 For 循环 (Import-CSV)
问题描述
我正在编写一个 PowerShell 脚本,该脚本将使用 Import_Csv cmdlet 导入包含服务器信息(包括服务器名称、实例、状态和数据库名称)的 CSV 文件。导入文件后,脚本将遍历文件,连接到每个服务器/实例,并为每个数据库添加一个用户。
我想弄清楚的是如何能够在脚本中使用普通的 FOR 循环而不是 FOREACH 循环。我想通过遍历服务器/数据库列表来限制我必须连接到每个服务器的次数。我要检查的是当前服务器/实例是否与文件中的下一个服务器/实例相同,保持连接打开。例如,如果我在文件中有以下数据:
server1,instance1,online,database1
server1,instance1,online,database2
server2,instance1,online,database1
server2,instance1,online,database2
当我查看第一行的数据时,在关闭与 server1\instance1 的连接之前,我想检查第二行是否有相同的数据,这样我就不必关闭当前连接然后重新连接到稍后同一服务器。
我的问题是,有没有办法在 FOREACH 循环中访问 PowerShell 中 CSV 文件的下一个元素,还是应该使用 FOR 循环?如果我改用 FOR 循环,访问每个字段的最佳方法是什么?
这是我目前在 foreach 循环中对我想要发生的事情的评论:
Param(
[Parameter(Mandatory=$true,position=0)]
[string]$serverListFilePath = $( Read-Host "Server List File Path: " )
)
Write-Host "File path: $serverListFilePath"
$serverListArray = Import-Csv -Path $serverListFilePath # Import the server list CSV file and store it into a CSV object
#$serverListArray
foreach ($item in $serverListArray) # Basically all the substance/work of this script is going to be done in this loop since it needs to go through each server in the file one-by-one
{
Try
{
$serverNameCSV = $item.server_Name
$serverInstanceCSV = $item.Server_Instance
$serverStatusCSV = $item.Server_Status
$databaseNameCSV = $item.Database_Name
# If no connection to server
# Create connection to server/instance
# Run SQL queries
# If (<current server\instance> -ne <next server\instance>)
# Close connection to server/instance
# continue
# else
# continue
} # End Try
# Catch
任何关于如何解决这个问题的想法都将不胜感激。
解决方案
如何使用循环遍历 CSV 的示例For
:
$serverListArray = Import-Csv -Path $serverListFilePath
#will loop until $x is no longer less than 10
for ($x=0;$x -lt 10; $x++)
{
#call property by index
$serverListArray[$x].Server_name
$serverListArray[$x].Server_instance
#etc...
}
推荐阅读
- javascript - 将复选框的值作为空对象获取
- c# - C#方法将一行刮入一个数组 - 返回时不传递数组
- ruby-on-rails - 电报 webhook 路由未初始化
- python - 如何计算特定数据集的相关性
- r - 在 R 中使用 Matrxmodels 包时出错:CHOLMOD 分解不成功
- crystal-reports - Crystal Reports 子报表性能
- aem - AEM:如何扩展虚 URL?
- sql-server - 如何有效地支持 LIKE %Query%
- php - 与 PayPal 连接:获取状态 400(错误请求)
- office-js - 插件因检测缺失功能而被拒绝