thank you... but that script only sees drives already connected to the operating system... it doesn't rescan the scsi bus as you're creating additional physicaldrives... which is what i'm doing.
i finally figured out how to send commands to microsoft diskpart and capture the response so i thought i'd post the final script for future reference. please keep in mind i'm a novice... so try not to laugh too hard at my syntax.
i'd be very interested if anyone wants to critique my code and provide feedback.
#!c:/Perl/bin/perl.exe -w
use strict ;
use warnings ;
use English ;
&send_diskpart_command ("rescan");
&send_diskpart_command ("list disk");
sub send_diskpart_command
{
my $debug = 0;
my ($diskpart_command) = @_;
if ($diskpart_command eq "")
{
print "\n***No command passed to the send_diskpart_comman
+d subroutine***\n" ;
return ;
}
# diskpart.exe requires a textfile input
# deleting the textfile if it already exists then creating a new textf
+ile with the diskpart_command
my $file = "diskpart_cmd.txt";
if ($debug)
{
print "\nSearching for an existing copy of the text file
+$file.";
if (unlink($file) == 1)
{
print "\nThe file '$file' was found and deleted.";
}
else {
print "\nThe file '$file' was not detected.";
}
}
open (DPART, ">>$file") || die ("Could not open file. $!");
print DPART ($diskpart_command);
if ( $debug ) { print "\nCreated file '$file'." ; }
close (DPART);
if ( $debug ) { print "\n\nSending $diskpart_command." ; }
open ( FH , "diskpart /s diskpart_cmd.txt|" ) || die ("Could not
+ open file. $!");
print "\nCommand '$diskpart_command' sent to the host.\n";
if ( $debug ) { print "\n"; }
my @inFile = <FH> ; # read all at once into array
foreach (@inFile)
{
if ( $debug ) { print $_."\t"; }
}
close (FH);
if ($debug) # delete the textfile
{
if (unlink($file) == 1)
{
print "\n\nThe file '$file' was deleted successfully.\
+n";
}
else {
print "\n\nThe file '$file' was not deleted.\n";
}
}
}
|