概述
我试图编写一个查询MySQL数据库的PowerShell脚本,存储结果,然后为每一行执行一个命令。在这种情况下,它最终会通过电子邮件发送报告,但在我到达那里之前出现了这个问题。
表似乎存储正常,并且一个非常简单的ForEach-Object循环返回我所期望的,但是当我尝试使循环更加复杂时,第一行是空的。虽然我可以在这个特定的案例中解决它,但我试图理解它为什么会发生并且短缺。
这是构建查询的函数(取自https://vwiki.co.uk/MySQL_and_PowerShell):
function Execute-MySQLQuery([string]$query) {
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn) # Create SQL command
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd) # Create data adapter from query command
$dataSet = New-Object System.Data.DataSet # Create dataset
$dataAdapter.Fill($dataSet, "data") # Fill dataset from data adapter, with name "data"
$cmd.Dispose()
return $dataSet.Tables["data"] # Returns an array of results
}这在这里被称为:
# Connect to MySQL Database
$conn = Connect-MySQL $user $pass $MySQLHost $database $certfile $certpass
$query = "SELECT * FROM reports;"
$result = Execute-MySQLQuery $query
$result | Format-Table并完全返回这个:
PS C:Usersredacted> C:UsersredactedDesktoptmptestsql.ps1
5
rep_id email_add1 user sent_success
------ ---------- ---- ------------
1 Jimbo@example.com Jim Johnson 1
2 John@example.com John Doe 1
3 Stacy@example.com Stacy Something 0
4 bgates@microsoft.com Willy Gates 1
5 pallen@microsoft.com Paul Allen 0但是,当我尝试在ForEach-Object循环中仅使用这一列时,我得到一个空白行。出于测试目的,我尝试了一个非常基本
$result | ForEach-Object {$_.user}其中返回的预期:
PS C:Usersredacted> C:UsersredactedDesktoptmptestsql.ps1
Jim Johnson
John Doe
Stacy Something
Willy Gates
Paul Allen但只要我比这更复杂:
$result | ForEach-Object {"Howdy $($_.user)!"}我得到:
PS C:Usersredacted> C:UsersredactedDesktoptmptestsql.ps1
Howdy !
Howdy Jim Johnson!
Howdy John Doe!
Howdy Stacy Something!
Howdy Willy Gates!
Howdy Paul Allen!我错过了明显的东西吗?我(显然)仍然在学习,但我发现这个问题比其他人更难。也许我只是使用了错误的条款,但我真的很感谢任何能指引我朝着正确方向的人。谢谢。
最后
以上就是慈祥麦片为你收集整理的mysql用foreach遍历,ForEach-Object循环遍历MySql DataTable第一行空白的全部内容,希望文章能够帮你解决mysql用foreach遍历,ForEach-Object循环遍历MySql DataTable第一行空白所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复