#Requires -Module – am i understanding?

Welcome Forums General PowerShell Q&A #Requires -Module – am i understanding?

Viewing 3 reply threads
  • Author
    Posts
    • #216429
      Participant
      Topics: 17
      Replies: 24
      Points: 80
      Rank: Member

      Good day,

      I have a function that i would like to not load if WebAdministration module is not present as it relies on that being installed as part of IIS.

       

      At the top of the function I have added

      #Requires -Module WebAdministration

      However it appears to load and partially load before it hits a trap i have within the function then it exits.

      Am i wrong of shouldn’t the require statement perform a check at load time for the specified module, if not found close?  We are on PS 5.1 currently.

       

      Thank you for any clarification i may miss.

    • #216432
      Participant
      Topics: 4
      Replies: 2247
      Points: 5,484
      Helping Hand
      Rank: Community MVP

      As I understand it according to the help about_Requires it prevents a script not a function – from running if the requirement does not match the environment it is about to run in.

      Another way could be to include it in a module and use the RequiredModules” statement in the module manifest to prevent the module to load if the desired module isn’t available.

    • #216561
      Participant
      Topics: 17
      Replies: 24
      Points: 80
      Rank: Member

      I had thought along those same lines as well Olaf, however the following line in the article you linked states:

      Placing a #Requires statement inside a function does NOT limit its scope.

      Which led me to believe it could be used in a function.

      Also after further re-reading using -Module will attempt to install the module and throw a terminating error if it is unable. I had considered adding requires in my module manifest as well, however there were modules that did not require that module and i wanted them to function as normal.

      After further consideration I believe my best option is to try/catch import-module webadministration, if the error is file not found exit gracefully without throwing error but if anything else throw error.

       

      I really appreciate your quick reply and assistance.

       

      Have a wonderful day.

    • #216573
      Participant
      Topics: 4
      Replies: 2247
      Points: 5,484
      Helping Hand
      Rank: Community MVP

      After further consideration I believe my best option is to try/catch import-module webadministration, if the error is file not found exit gracefully without throwing error but if anything else throw error.

      Another option would be this:

      if(Get-Module -ListAvailable -Name WebAdministration){'cool'}else{'uncool'}
Viewing 3 reply threads
  • You must be logged in to reply to this topic.