TechTalkz.com Logo

Go Back   TechTalkz.com Technology & Computer Troubleshooting Forums > Tech Support Archives > Microsoft > Microsoft Windows Powershell

Notices

Reply
 
Thread Tools Display Modes
Old 26-06-2008, 04:30 PM   #1
Wilson
Guest
 
Posts: n/a
Multiple ExecuteReaders in same Script

Hello

I made a script, which gets me driver informations from different servers.
Now i have the problem that I have multiple SQL-DataReaders with
ExecuteReader().

This gives me these Errors:

********************************************
HP ProLiant Advanced System Management Controller
5.37.0.0
-------------------------------------
Exception calling "ExecuteReader" with "0" argument(s): "Diesem Befehl ist
bereits ein ge枚ffneter DataReader zugeordnet
, der zuerst geschlossen werden muss."
At line:21 char:55
--> in english something like: There is already an open DataReader
associated with this command which first has to be closed

+ $DataReader2 = $cmd2.ExecuteReader <<<< ()
You cannot call a method on a null-valued expression.
At line:22 char:41
+ if($DataReader2.Read <<<< () -eq "True"){


I read on the internet that there is only one open query per connection
allowed...
So how could i rebuild my script, does anyone have any ideas?

thanks for help!
greetings

---------------------------------------------------------------
Here the script:

$sqlconn = new-object
system.data.SqlClient.SQLConnection("Server=xxxxx; Database=Driver_DB;Integrated Security=True");
$sqlconn.open()
$kitdrivers = "test1","test2","test3"

$cmd = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
tbl_Nodes",$sqlconn)
$cmd.CommandTimeout = 0
$rs = $cmd.ExecuteReader()
$pingnok = ""
while($rs.read() -eq "True"){
$nodename = $rs.Item("NodeName_Name")
$pinge03 = Get-WmiObject Win32_PingStatus -filter "Address='$nodename-e03'"
| select protocoladdress, statuscode
$pings03 = Get-WmiObject Win32_PingStatus -filter "Address='$nodename-s03'"
| select protocoladdress, statuscode
$pingx64 = Get-WmiObject Win32_PingStatus -filter "Address='$nodename-x64'"
| select protocoladdress, statuscode
if($pinge03.statuscode -eq "0"){
$nodename = $nodename+"-e03"
$PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
write-host "********************************************"
Foreach ($driver in $PnP){
$devicename = $driver.Devicename
$deviceversion = $driver.DriverVersion
if(!$devicename){continue}
foreach($drivername in $kitdrivers){
if($devicename.Startswith($drivername)){
write-host $devicename
$driver.DriverVersion
write-host "-------------------------------------"
$cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
tbl_Server_Objects WHERE NodeName_Name='$server' AND
Object_Name='$devicename'",$sqlconn)
$cmd2.CommandTimeout = 0
$DataReader2 = $cmd2.ExecuteReader()
if($DataReader2.Read() -eq "True"){
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
Object_Name='$devicename'"
$sqlcmd.ExecuteNonQuery()
}else{
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
('$server','$devicename','$deviceversion')"
$sqlcmd.ExecuteNonQuery()
}
}
}
}
}elseif($pings03.statuscode -eq "0"){
$nodename = $nodename+"-s03"
$PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
write-host "********************************************"
Foreach ($driver in $PnP){
$devicename = $driver.Devicename
$deviceversion = $driver.DriverVersion
if(!$devicename){continue}
foreach($drivername in $kitdrivers){
if($devicename.Startswith($drivername)){
write-host $devicename
$driver.DriverVersion
write-host "-------------------------------------"
$cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
tbl_Server_Objects WHERE NodeName_Name='$server' AND
Object_Name='$devicename'",$sqlconn)
$cmd2.CommandTimeout = 0
$DataReader2 = $cmd2.ExecuteReader()
if($DataReader2.Read() -eq "True"){
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
Object_Name='$devicename'"
$sqlcmd.ExecuteNonQuery()
}else{
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
('$server','$devicename','$deviceversion')"
$sqlcmd.ExecuteNonQuery()
}
}
}
}
}elseif($pingx64.statuscode -eq "0"){
$nodename = $nodename+"-x64"
$PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
write-host "********************************************"
Foreach ($driver in $PnP){
$devicename = $driver.Devicename
$deviceversion = $driver.DriverVersion
if(!$devicename){continue}
foreach($drivername in $kitdrivers){
if($devicename.Startswith($drivername)){
write-host $devicename
$driver.DriverVersion
write-host "-------------------------------------"
$cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
tbl_Server_Objects WHERE NodeName_Name='$server' AND
Object_Name='$devicename'",$sqlconn)
$cmd2.CommandTimeout = 0
$DataReader2 = $cmd2.ExecuteReader()
if($DataReader2.Read() -eq "True"){
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
Object_Name='$devicename'"
$sqlcmd.ExecuteNonQuery()
}else{
$DataReader2.Close()
$sqlcmd = $sqlconn.CreateCommand()
$Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
('$server','$devicename','$deviceversion')"
$sqlcmd.ExecuteNonQuery()
}
}
}
}
}else{
write-host "********************************************"
write-host "ping NOK $nodename"
write-host "********************************************"
$pingnok = $pingnok+$nodename+","
}
}

$rs.close()
$sqlconn.close()

  Reply With Quote
Old 26-06-2008, 04:31 PM   #2
/\\/\\o\\/\\/
Guest
 
Posts: n/a
Re: Multiple ExecuteReaders in same Script

you can set a property in the connection string to allow more connectioins
on one datareader
add this to your coonectionstring :

MultipleActiveResultSets=True

Enjoy,
Greetings /\/\o\/\/
http://thePowerShellGuy.com

"Wilson" <Wilson@discussions.microsoft.com> wrote in message
news:5CC0A655-F21B-43A8-80B9-A1D01C059343@microsoft.com...
> Hello
>
> I made a script, which gets me driver informations from different servers.
> Now i have the problem that I have multiple SQL-DataReaders with
> ExecuteReader().
>
> This gives me these Errors:
>
> ********************************************
> HP ProLiant Advanced System Management Controller
> 5.37.0.0
> -------------------------------------
> Exception calling "ExecuteReader" with "0" argument(s): "Diesem Befehl ist
> bereits ein ge枚ffneter DataReader zugeordnet
> , der zuerst geschlossen werden muss."
> At line:21 char:55
> --> in english something like: There is already an open DataReader
> associated with this command which first has to be closed
>
> + $DataReader2 = $cmd2.ExecuteReader <<<< ()
> You cannot call a method on a null-valued expression.
> At line:22 char:41
> + if($DataReader2.Read <<<< () -eq "True"){
>
>
> I read on the internet that there is only one open query per connection
> allowed...
> So how could i rebuild my script, does anyone have any ideas?
>
> thanks for help!
> greetings
>
> ---------------------------------------------------------------
> Here the script:
>
> $sqlconn = new-object
> system.data.SqlClient.SQLConnection("Server=xxxxx; Database=Driver_DB;Integrated
> Security=True");
> $sqlconn.open()
> $kitdrivers = "test1","test2","test3"
>
> $cmd = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Nodes",$sqlconn)
> $cmd.CommandTimeout = 0
> $rs = $cmd.ExecuteReader()
> $pingnok = ""
> while($rs.read() -eq "True"){
> $nodename = $rs.Item("NodeName_Name")
> $pinge03 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-e03'"
> | select protocoladdress, statuscode
> $pings03 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-s03'"
> | select protocoladdress, statuscode
> $pingx64 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-x64'"
> | select protocoladdress, statuscode
> if($pinge03.statuscode -eq "0"){
> $nodename = $nodename+"-e03"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }elseif($pings03.statuscode -eq "0"){
> $nodename = $nodename+"-s03"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }elseif($pingx64.statuscode -eq "0"){
> $nodename = $nodename+"-x64"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }else{
> write-host "********************************************"
> write-host "ping NOK $nodename"
> write-host "********************************************"
> $pingnok = $pingnok+$nodename+","
> }
> }
>
> $rs.close()
> $sqlconn.close()
>


  Reply With Quote
Old 26-06-2008, 04:31 PM   #3
Wilson
Guest
 
Posts: n/a
Re: Multiple ExecuteReaders in same Script

But i need to have multiple datareaders on one(or multiple) connection string
:-S
Is this somehow also possible?


"/\\/\\o\\/\\/" wrote:

> you can set a property in the connection string to allow more connectioins
> on one datareader
> add this to your coonectionstring :
>
> MultipleActiveResultSets=True
>
> Enjoy,
> Greetings /\/\o\/\/
> http://thePowerShellGuy.com
>
> "Wilson" <Wilson@discussions.microsoft.com> wrote in message
> news:5CC0A655-F21B-43A8-80B9-A1D01C059343@microsoft.com...
> > Hello
> >
> > I made a script, which gets me driver informations from different servers.
> > Now i have the problem that I have multiple SQL-DataReaders with
> > ExecuteReader().
> >
> > This gives me these Errors:
> >
> > ********************************************
> > HP ProLiant Advanced System Management Controller
> > 5.37.0.0
> > -------------------------------------
> > Exception calling "ExecuteReader" with "0" argument(s): "Diesem Befehl ist
> > bereits ein ge枚ffneter DataReader zugeordnet
> > , der zuerst geschlossen werden muss."
> > At line:21 char:55
> > --> in english something like: There is already an open DataReader
> > associated with this command which first has to be closed
> >
> > + $DataReader2 = $cmd2.ExecuteReader <<<< ()
> > You cannot call a method on a null-valued expression.
> > At line:22 char:41
> > + if($DataReader2.Read <<<< () -eq "True"){
> >
> >
> > I read on the internet that there is only one open query per connection
> > allowed...
> > So how could i rebuild my script, does anyone have any ideas?
> >
> > thanks for help!
> > greetings
> >
> > ---------------------------------------------------------------
> > Here the script:
> >
> > $sqlconn = new-object
> > system.data.SqlClient.SQLConnection("Server=xxxxx; Database=Driver_DB;Integrated
> > Security=True");
> > $sqlconn.open()
> > $kitdrivers = "test1","test2","test3"
> >
> > $cmd = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> > tbl_Nodes",$sqlconn)
> > $cmd.CommandTimeout = 0
> > $rs = $cmd.ExecuteReader()
> > $pingnok = ""
> > while($rs.read() -eq "True"){
> > $nodename = $rs.Item("NodeName_Name")
> > $pinge03 = Get-WmiObject Win32_PingStatus -filter
> > "Address='$nodename-e03'"
> > | select protocoladdress, statuscode
> > $pings03 = Get-WmiObject Win32_PingStatus -filter
> > "Address='$nodename-s03'"
> > | select protocoladdress, statuscode
> > $pingx64 = Get-WmiObject Win32_PingStatus -filter
> > "Address='$nodename-x64'"
> > | select protocoladdress, statuscode
> > if($pinge03.statuscode -eq "0"){
> > $nodename = $nodename+"-e03"
> > $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> > write-host "********************************************"
> > Foreach ($driver in $PnP){
> > $devicename = $driver.Devicename
> > $deviceversion = $driver.DriverVersion
> > if(!$devicename){continue}
> > foreach($drivername in $kitdrivers){
> > if($devicename.Startswith($drivername)){
> > write-host $devicename
> > $driver.DriverVersion
> > write-host "-------------------------------------"
> > $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> > tbl_Server_Objects WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'",$sqlconn)
> > $cmd2.CommandTimeout = 0
> > $DataReader2 = $cmd2.ExecuteReader()
> > if($DataReader2.Read() -eq "True"){
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> > Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'"
> > $sqlcmd.ExecuteNonQuery()
> > }else{
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> > ('$server','$devicename','$deviceversion')"
> > $sqlcmd.ExecuteNonQuery()
> > }
> > }
> > }
> > }
> > }elseif($pings03.statuscode -eq "0"){
> > $nodename = $nodename+"-s03"
> > $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> > write-host "********************************************"
> > Foreach ($driver in $PnP){
> > $devicename = $driver.Devicename
> > $deviceversion = $driver.DriverVersion
> > if(!$devicename){continue}
> > foreach($drivername in $kitdrivers){
> > if($devicename.Startswith($drivername)){
> > write-host $devicename
> > $driver.DriverVersion
> > write-host "-------------------------------------"
> > $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> > tbl_Server_Objects WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'",$sqlconn)
> > $cmd2.CommandTimeout = 0
> > $DataReader2 = $cmd2.ExecuteReader()
> > if($DataReader2.Read() -eq "True"){
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> > Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'"
> > $sqlcmd.ExecuteNonQuery()
> > }else{
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> > ('$server','$devicename','$deviceversion')"
> > $sqlcmd.ExecuteNonQuery()
> > }
> > }
> > }
> > }
> > }elseif($pingx64.statuscode -eq "0"){
> > $nodename = $nodename+"-x64"
> > $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> > write-host "********************************************"
> > Foreach ($driver in $PnP){
> > $devicename = $driver.Devicename
> > $deviceversion = $driver.DriverVersion
> > if(!$devicename){continue}
> > foreach($drivername in $kitdrivers){
> > if($devicename.Startswith($drivername)){
> > write-host $devicename
> > $driver.DriverVersion
> > write-host "-------------------------------------"
> > $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> > tbl_Server_Objects WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'",$sqlconn)
> > $cmd2.CommandTimeout = 0
> > $DataReader2 = $cmd2.ExecuteReader()
> > if($DataReader2.Read() -eq "True"){
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> > Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> > Object_Name='$devicename'"
> > $sqlcmd.ExecuteNonQuery()
> > }else{
> > $DataReader2.Close()
> > $sqlcmd = $sqlconn.CreateCommand()
> > $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> > ('$server','$devicename','$deviceversion')"
> > $sqlcmd.ExecuteNonQuery()
> > }
> > }
> > }
> > }
> > }else{
> > write-host "********************************************"
> > write-host "ping NOK $nodename"
> > write-host "********************************************"
> > $pingnok = $pingnok+$nodename+","
> > }
> > }
> >
> > $rs.close()
> > $sqlconn.close()
> >

>
>

  Reply With Quote
Old 26-06-2008, 04:31 PM   #4
Tao Ma
Guest
 
Posts: n/a
Re: Multiple ExecuteReaders in same Script

Hi Wilson,

MSDN describes:
While the SqlDataReader is being used, the associated SqlConnection is busy
serving the SqlDataReader, and no
other operations can be performed on the SqlConnection other than closing
it. This is the case until the Close
method of the SqlDataReader is called. For example, you cannot retrieve
output parameters until after you call Close.

You can create another sqlconnection object and pass it to the cmd2. Or call
SqlDataAdapter and fill a DataSet contained tbl_Nodes infomations.

Tao Ma

"Wilson" <Wilson@discussions.microsoft.com> 写入消息新闻:5CC0A655-F21B-43A8-80B9-A1D01C059343@microsoft.com...
> Hello
>
> I made a script, which gets me driver informations from different servers.
> Now i have the problem that I have multiple SQL-DataReaders with
> ExecuteReader().
>
> This gives me these Errors:
>
> ********************************************
> HP ProLiant Advanced System Management Controller
> 5.37.0.0
> -------------------------------------
> Exception calling "ExecuteReader" with "0" argument(s): "Diesem Befehl ist
> bereits ein ge?ffneter DataReader zugeordnet
> , der zuerst geschlossen werden muss."
> At line:21 char:55
> --> in english something like: There is already an open DataReader
> associated with this command which first has to be closed
>
> + $DataReader2 = $cmd2.ExecuteReader <<<< ()
> You cannot call a method on a null-valued expression.
> At line:22 char:41
> + if($DataReader2.Read <<<< () -eq "True"){
>
>
> I read on the internet that there is only one open query per connection
> allowed...
> So how could i rebuild my script, does anyone have any ideas?
>
> thanks for help!
> greetings
>
> ---------------------------------------------------------------
> Here the script:
>
> $sqlconn = new-object
> system.data.SqlClient.SQLConnection("Server=xxxxx; Database=Driver_DB;Integrated
> Security=True");
> $sqlconn.open()
> $kitdrivers = "test1","test2","test3"
>
> $cmd = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Nodes",$sqlconn)
> $cmd.CommandTimeout = 0
> $rs = $cmd.ExecuteReader()
> $pingnok = ""
> while($rs.read() -eq "True"){
> $nodename = $rs.Item("NodeName_Name")
> $pinge03 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-e03'"
> | select protocoladdress, statuscode
> $pings03 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-s03'"
> | select protocoladdress, statuscode
> $pingx64 = Get-WmiObject Win32_PingStatus -filter
> "Address='$nodename-x64'"
> | select protocoladdress, statuscode
> if($pinge03.statuscode -eq "0"){
> $nodename = $nodename+"-e03"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }elseif($pings03.statuscode -eq "0"){
> $nodename = $nodename+"-s03"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }elseif($pingx64.statuscode -eq "0"){
> $nodename = $nodename+"-x64"
> $PnP = Get-WMIObject Win32_PnPSignedDriver -computer $nodename
> write-host "********************************************"
> Foreach ($driver in $PnP){
> $devicename = $driver.Devicename
> $deviceversion = $driver.DriverVersion
> if(!$devicename){continue}
> foreach($drivername in $kitdrivers){
> if($devicename.Startswith($drivername)){
> write-host $devicename
> $driver.DriverVersion
> write-host "-------------------------------------"
> $cmd2 = new-object "System.Data.SqlClient.SqlCommand"("SELECT * FROM
> tbl_Server_Objects WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'",$sqlconn)
> $cmd2.CommandTimeout = 0
> $DataReader2 = $cmd2.ExecuteReader()
> if($DataReader2.Read() -eq "True"){
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "UPDATE tbl_Server_Objects SET
> Object_Version='$deviceversion' WHERE NodeName_Name='$server' AND
> Object_Name='$devicename'"
> $sqlcmd.ExecuteNonQuery()
> }else{
> $DataReader2.Close()
> $sqlcmd = $sqlconn.CreateCommand()
> $Sqlcmd.CommandText = "INSERT tbl_Server_Objects VALUES
> ('$server','$devicename','$deviceversion')"
> $sqlcmd.ExecuteNonQuery()
> }
> }
> }
> }
> }else{
> write-host "********************************************"
> write-host "ping NOK $nodename"
> write-host "********************************************"
> $pingnok = $pingnok+$nodename+","
> }
> }
>
> $rs.close()
> $sqlconn.close()
>



  Reply With Quote
Reply

Thread Tools
Display Modes


Google
 


All times are GMT +5.5. The time now is 02:46 AM.


vBulletin, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO
Copyright © 2005-2008, TechTalkz.com. All Rights Reserved - Privacy Policy
Valid XHTML 1.0 Transitional