July 2, 2009 at 8:53 am
I am attempting to learn/use PowerShell. The following script should be a simple insert of wmi computer system data into a table, but it fails with an error of:
Exception calling "ExecuteNonQuery" with "0" argument(s): "The parameter data type of UInt32 is invalid."
At :line:40 char:37
+ $RowsInserted = $cmd.ExecuteNonQuery <<<< ()
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended') | out-null
# . for the local computer
# If you want to connect to a remote machine, specify the machine name here.
$ComputerName = "."
$CompSys = get-wmiobject -class "Win32_ComputerSystem" -namespace "root\CIMV2" -computername $ComputerName
# Create SqlConnection object, define connection string, and open connection
$con = New-Object System.Data.SqlClient.SqlConnection
$con.ConnectionString = "Server=MySQLServer; Database=MyDatabase; Integrated Security=true"
$con.Open()
foreach ($property in $CompSys) {
# Create SqlCommand object, define command text, and set the connection
$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.CommandText = "INSERT INTO ComputerInformation(FullComputerName, ComputerDescription, ComputerSystemType, ComputerManufacturer, ComputerModel, NumberProcessors, TotalPhysicalMemory)
VALUES (@Name, @ComputerDescription, @ComputerSystemType, @ComputerManufacturer, @ComputerModel, @NumberProcessors, @TotalPhysicalMemory)"
$cmd.Connection = $con
# Add parameters to pass values to the INSERT statement
$cmd.Parameters.AddWithValue("@Name", $property.Name) | Out-Null
$cmd.Parameters.AddWithValue("@ComputerDescription", $property.Description) | Out-Null
$cmd.Parameters.AddWithValue("@ComputerSystemType", $property.SystemType) | Out-Null
$cmd.Parameters.AddWithValue("@ComputerManufacturer", $property.Manufacturer) | Out-Null
$cmd.Parameters.AddWithValue("@ComputerModel", $property.Model) | Out-Null
$cmd.Parameters.AddWithValue("@NumberProcessors", $property.NumberOfProcessors) | Out-Null
$cmd.Parameters.AddWithValue("@TotalPhysicalMemory", $property.TotalPhysicalMemory) | Out-Null
# Execute INSERT statement
$RowsInserted = $cmd.ExecuteNonQuery() <<<<**ERROR OCCURS HERE**
}
$con.Close()
Could someone point me in the correct direction please?
Thank you.
July 3, 2009 at 7:56 am
Thanks, but nevermind. I figured it out last night. I had to cast $property.NumberOfProcessors and $property.TotalPhysicalMemory into [Int32]$property.NumberOfProcessors and [Int64]$property.TotalPhysicalMemory. Silly datatypes anyway.
Thanks.
Viewing 2 posts - 1 through 1 (of 1 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy