Skip to content

Question about Invoke-Plaster and -Passthru #234

@LaurentDardenne

Description

@LaurentDardenne

I use the latest build, and i test the passthru parameter of Invoke-Plaster :

$Result=invoke-plaster "C:\Program Files\WindowsPowerShell\Modules\plaster\1.0.2\Templates\NewPowerShellScriptModule\" -DestinationPath C:\temp\TestManifest -PassThru
$Result

The result is correct :

Destination path: C:\temp\TestManifest


TemplatePath    : C:\Program Files\WindowsPowerShell\Modules\plaster\1.0.2\Templates\NewPowerShellScriptModule\
DestinationPath : C:\temp\TestManifest
Success         : True
TemplateType    : Project
CreatedFiles    : {C:\temp\TestManifest\test.psd1, C:\temp\TestManifest\test.psm1}
UpdatedFiles    : {}
MissingModules  : {}
OpenFiles       : {C:\temp\TestManifest\test.psd1, C:\temp\TestManifest\test.psm1}

Now i lock the test.psm1 file and call Invoke-Plaster again :

Function Lock-File{
  param([string] $Path)

  New-Object System.IO.FileStream($Path, 
                                  [System.IO.FileMode]::Open, 
                                  [System.IO.FileAccess]::ReadWrite, 
                                  [System.IO.FileShare]::None)
} #Lock-File

Remove-Variable Result
.{
 try {
    $Filename="C:\temp\TestManifest\test.psm1"
    $TestLockFile= Lock-File $FileName
    $Result=invoke-plaster "C:\Program Files\WindowsPowerShell\Modules\plaster\1.0.2\Templates\NewPowerShellScriptModule\" -DestinationPath C:\temp\TestManifest -PassThru
  } finally {
   $TestLockFile.Close()
  }
}

#... same informations
Scaffolding your PowerShell Module...

Identical test.psd1
Get-FileHash : The file 'C:\temp\TestManifest\test.psm1' cannot be read: Le processus ne peut pas accéder au fichier
'C:\temp\TestManifest\test.psm1', car il est en cours d'utilisation par un autre processus.
At C:\Program Files\WindowsPowerShell\Modules\plaster\1.0.2\InvokePlaster.ps1:873 char:23
+ ...      $hash2 = (Get-FileHash -LiteralPath $path2 -Algorithm SHA1).Hash
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ReadError: (C:\temp\TestManifest\test.psm1:PSObject) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : FileReadError,Get-FileHash

 Conflict test.psm1

Plaster file conflict
Overwrite C:\temp\TestManifest\test.psm1
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
Copy-Item : Le processus ne peut pas accéder au fichier 'C:\temp\TestManifest\test.psm1', car il est en cours
d'utilisation par un autre processus.
At C:\Program Files\WindowsPowerShell\Modules\plaster\1.0.2\InvokePlaster.ps1:1002 char:21
+ ...             Copy-Item -LiteralPath $DstPath -Destination $backupFilen ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

The Result variable is not created.

Is the correct behavior in this case or all exceptions must trapped when -Passtrhu is set ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions