Forum Discussion

SJamal85's avatar
SJamal85
Copper Contributor
Jul 07, 2022
Solved

Powershell script is not working using PSF

Hi Everyone,

 

I am trying to run a powershell script using the PSF binaries in a MSIX package. However, it is not working. The powershell script on its own is working as expected. Can someone look into the config.json file I am using.

The content of the config.json file is:

 

{
"applications": [
{
"id": "TRMANIFEST",
"executable": "VFS/ProgramFilesX86/Maersk Denizcilik A.S/TRManifest_Setup/TRManifest2009.exe",
"stopOnScriptError": false,
"startScript":
{
"scriptExecutionMode": "-ExecutionPolicy Unrestricted",
"scriptPath": "MapDrive.ps1",
"showWindow": true,
"runInVirtualEnvironment": false,
"waitForScriptToFinish": true,
"timeout":10
}
}
]
}

Let me know if there is something wrong in this file.

  • 1) The PsfScriptLauncher.ps1 file is missing from the root of the package. This file is part of the PSF. This file is required as it will be executed in PowerShell to then run your script.
    2) The timeout value in the Json is too low. The 10 represents 10ms which is generally not long enough for PowerShell to even start up. Increase to 10000 to get 10 seconds, for example.
    3) Add a sleep to the end of the powershell start-sleep 60 would give you time to see any error messages in the PowerShell window should they occur. If so, the timeout value will have to increase more.
    4) The Unrestricted option in the json will cause a problem if there is any GPO setting the PowerShell restriction policy. As is in your ps1 file, the Bypass option might be a better choice
    5) If you still have issues, use the Sysinternals DebugView tool which can display debugging information emitted by the PsfLauncher as it tries to start your script. Start that tool, then launch the shortcut.
  • Hi

    Can you share the package (via messages), the script and manifest file. It will help us debug it deeper.
    Thanks
  • First, it would help to know what version of the PSF (or what version of tooling you used) is involved. We have better support for scripting in the TimMangan branch on GitHub than in the original Microsoft branch.

    Second, there are no obvious errors in your json syntax, however, here are some things to consider:
    * The runInVirtualEnvironment setting is ignored. Microsoft removed support for this. In my fork, this script will always run inside the container. Out of container powershell is now possible starting in PSF v2022.06.08 but not through this scripting method. But if you are just mapping a drive it shouldn't matter if it runs inside or outside.
    * The timeout value is in MS, so if you intended 10 seconds multiply by 1000.
    * As specified, your ps1 file would need to be placed at the root folder of the package.
    * The PSF StartingScriptWrapper.ps1 file must also be placed there.
      • 1) The PsfScriptLauncher.ps1 file is missing from the root of the package. This file is part of the PSF. This file is required as it will be executed in PowerShell to then run your script.
        2) The timeout value in the Json is too low. The 10 represents 10ms which is generally not long enough for PowerShell to even start up. Increase to 10000 to get 10 seconds, for example.
        3) Add a sleep to the end of the powershell start-sleep 60 would give you time to see any error messages in the PowerShell window should they occur. If so, the timeout value will have to increase more.
        4) The Unrestricted option in the json will cause a problem if there is any GPO setting the PowerShell restriction policy. As is in your ps1 file, the Bypass option might be a better choice
        5) If you still have issues, use the Sysinternals DebugView tool which can display debugging information emitted by the PsfLauncher as it tries to start your script. Start that tool, then launch the shortcut.

Resources