我想寫查詢MySQL數據庫,存儲結果,然後PowerShell腳本的foreach循環對象執行的每一行命令。在這種情況下,它最終會通過電子郵件發送報告,但在我到達那裏之前出現了這個問題。在一個MySQL數據表的第一行空白
表似乎罰款存儲,以及一個極其簡單的foreach循環對象返回我的期望,但是當我試圖使循環更加複雜的第一行是空的。雖然我可以在這個特定的案例中解決它,但我試圖理解它爲什麼會發生並且短缺。
下面是建立查詢(從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:\Users\redacted> C:\Users\redacted\Desktop\tmp\testsql.ps1
5
rep_id email_add1 user sent_success
------ ---------- ---- ------------
1 [email protected] Jim Johnson 1
2 [email protected] John Doe 1
3 [email protected] Stacy Something 0
4 [email protected] Willy Gates 1
5 [email protected] Paul Allen 0
然而當我嘗試在ForEach-Object循環中僅使用這一列時,我得到一個空白l國家統計局。出於測試目的,我嘗試了很基本的:
$result | ForEach-Object {$_.user}
哪個返回預期:
PS C:\Users\redacted> C:\Users\redacted\Desktop\tmp\testsql.ps1
Jim Johnson
John Doe
Stacy Something
Willy Gates
Paul Allen
但只要我變得更加複雜比:
$result | ForEach-Object {"Howdy $($_.user)!"}
我得到:
PS C:\Users\redacted> C:\Users\redacted\Desktop\tmp\testsql.ps1
Howdy !
Howdy Jim Johnson!
Howdy John Doe!
Howdy Stacy Something!
Howdy Willy Gates!
Howdy Paul Allen!
我失去了舒美特興奮明顯?我(顯然)仍然在學習,但我發現這個問題比其他人更難。也許我只是使用了錯誤的條款,但我真的很感謝任何能指引我朝着正確方向的人。謝謝。
'[空] $ DataAdapter.Fill方法($數據集 「數據」)' – PetSerAl