我使用C/C++,Java,C#等多種語言進行黑客攻擊。 Powershell只是一個新名單。所以有時我會因爲簡單的事情而失明......我得到了類型轉換的錯誤,並且看不出原因......我嘗試強制輸入ps腳本,但是我做錯了什麼。這兩個功能我已經寫:使用函數進行類型轉換
function Get-DBConnection
{
[CmdletBinding()]
[OutputType([Npgsql.NpgsqlConnection])]
param
(
[Parameter(Mandatory = $true,
Position = 1)]
[String]$DBServer,
[Parameter(Mandatory = $true,
Position = 2)]
[int]$DBPort,
[Parameter(Mandatory = $true,
Position = 3)]
[string]$DatabaseName,
[Parameter(Mandatory = $true,
Position = 4)]
[string]$UserName,
[Parameter(Mandatory = $true,
Position = 5)]
[string]$Password
)
$DBConnectionString = "server=$MyDBServer;port=$MyDBPort;user id=$MyUid;password=$MyPwd;database=$MyDatabase;pooling=false"
$DBConn = New-Object -TypeName Npgsql.NpgsqlConnection;
$DBConn.ConnectionString = $DBConnectionString
$DBConn.Open
return $DBConn
}
function execute-Query
{
[CmdletBinding()]
[OutputType([System.Data.DataSet])]
param
(
[Parameter(Mandatory = $true)]
[Npgsql.NpgsqlConnection]$DBConnection,
[Parameter(Mandatory = $true)]
[string]$Query
)
$DBCmd = $DBConnection.CreateCommand()
$DBCmd.CommandText = $Query
$adapter = New-Object -TypeName Npgsql.NpgsqlDataAdapter $DBCmd
$dataset = New-Object -TypeName System.Data.DataSet
$adapter.Fill($dataset)
return $dataset
}
現在,在我的劇本我試着打電話給他們如下:
$MyDBConnection = New-Object -TypeName Npgsql.NpgsqlConnection
$MyResultset = New-Object -TypeName System.Data.DataSet
$query = "SELECT * FROM test_table1;"
$MyDBConnection = Get-DBConnection "servername" 5432 "dbname" "username" "pass"
當通過與調試器,可變$ MyDBConnection類型的腳本步進更改爲對象[]調用Get-DBConnection後! 我做不是瞭解這裏發生了什麼。
爲A(邏輯)後果調用
$MyResultset = execute-Query $MyDBConnection $query
時說,放慢參數DBConnection的(在該函數的名字......)不能從System.Object的[轉換我得到一個類型轉換錯誤]至Npgsql.NpgsqlConnection。
任何幫助和解釋這裏有什麼問題是非常感謝。
'$ DBConn.Open' - >'$ DBConn.Open()' – PetSerAl
不能,它返回:使用0參數調用open時的異常。該幫助沒有顯示出我的觀點。此方法來自.NET postgres數據提供程序驅動程序.... – ThommyB
然後,您必須閱讀該異常消息,瞭解它並消除異常的原因。但是你必須調用'Open'方法,否則連接就無法使用。 – PetSerAl