ZTechnical

joined 1 week ago
[–] ZTechnical 1 points 1 week ago
[–] ZTechnical 1 points 1 week ago (2 children)

Thanks for the reply.

I think your first option can give a false positive if the file is started to exist but hasn’t been completely written to. (Except if Out-File already implies that it’s done being written, so the next part isn’t really needed.)

The second one is good, but I don’t need console output. Just logging.

I’m looking for confirmation that both Out-Null and Out-File have the same (side) effect of making sure the file is done being copied before continuing to the next line of the script. If so, I’ll stick with Out-File

 

I have a script where I copy a file using this code:

Copy-Item "$SourceRoot\$SourceFolder\$SourceFile" -Destination "$DestinationRoot\$DestinationFolder" -Verbose *>&1 | Out-File -FilePath "$LogFile" -Append

I want to make sure the file being copied is done being copied, and I have seen that one way to do this is to use Out-Null. I'm wondering if Out-File can be used instead. That would be helpful since that's what I'm already using. I seem to be seeing that this is true, but I would like assurance that this is indeed true.

Secondary question: Does redirecting all streams make any difference?

Here are some pages referring to using Out-Null to make sure the command has completed:

https://theitbros.com/wait-for-a-command-powershell/
This page seems to indicate that Out-File should have the same effect: "The Out-Null cmdlet is used when you don’t care about the output of an external command. To redirect the command output, you can use Out-File or Out-Host instead."

https://www.sharepointdiary.com/2022/03/powershell-wait-for-command-to-finish.html#h-piping-to-out-null-to-wait-for-the-operation-to-complete

https://www.reddit.com/r/PowerShell/comments/5c1jpn/waiting_for_a_cmdlet_to_finish_before_moving_on/

https://www.delftstack.com/howto/powershell/wait-for-each-command-to-finish-in-powershell/#using-the-out-commands-to-wait-for-each-command-to-finish-in-powershell
"Other examples of Out commands that we can use are the following: … Out-File …"

https://stackoverflow.com/questions/12211131/want-to-wait-till-copy-complete-using-powershell-copy-item
references:
https://www.itprotoday.com/powershell/forcing-powershell-to-wait-for-a-process-to-complete