Toolsmith said:
It appears to me that your quotes are a bit mismatched, but other than that, this should work for you:

$files = get-childitem -filter *.img
foreach ($file in $files)
   &'C:\Program Files\DAEMON Tools\daemon.exe' -mount 0,$file.FullName

Hope that helps.


I'm replying to this old post because it helped me to find a way to dynamically call / run program requiring arguments like :

C:\Program files\Program\program.exe /verysilent /norestart /LoadInf=".\conf.ini"

This work if I write directly the full command in powershell like :

& C:\Program files\Program\program.exe /verysilent /norestart /LoadInf=".\conf.ini"

But I have no idea of the command in advance... Heck!
So I tried several things like :

& $fullCommandString
& $commandString $argsString
. $commandString $argsString
. $quotedCommandString $quotedArgsString
powershell -command "& {" $quotedCommandString $quotedArgsString "}"
invoke-item $commandString $argsString

but I still had errors caused by space in "Program files" or slash of arguments etc...

The way I found is to pass a string for the command and an array of string for arguments :
(here I directly wrote the command in the code by in reality, $command is feeded from and XML file)

$command = "C:\Program files\Program\program.exe /verysilent /norestart /LoadInf='.\conf.ini'"
if($command -match "(?<appPath>.*\.[A-Za-z]+\s)(?<appArgs>.*)"){
   $args = [regex]::Split($Matches.appArgs.trim(), "\s" )
   & $Matches.appPath.trim() $args

Hope thats helps.

Marc Magnin,
Pourquoi faire simple quand on peut faire compliqué ?!