in reply to Re: diskpart.exe and perl (s/and/in/)
in thread diskpart.exe and perl

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"; } } }