Skip to content

Virtual Directories  #356

@flkdnt

Description

@flkdnt

Bug Report

Describe the Bug

  1. Powershell cannot run the IIS Specific Commands without importing the WebAdministration module if IIS Commands havn't already been run in the current powershell session/puppet run.

When Creating or Updating a Virtual Directory

  • Where the PhysicalPath is a UNC path AND
  • Where the Application Parameter is Specified:
  1. The CREATE function Errors: 

Debug: STDOUT: New-Item : A parameter cannot be found that matches parameter name 'Application'.

  1. The UPDATE Function Errors: 

Debug: STDOUT: Set-ItemProperty : Property application is not found on <PATH>

The reason for these errors is:

  • New-Item does not have the parameter -Application
  • Set-ItemProperty cannot use the property application when the Virtual Directory was created with New-Item because that property doesn't get created by New-Item

Expected Behavior

The Virtual Directory gets created in IIS

Steps to Reproduce

  1. Add a virtual directory from a folder from a network share, with the application parameter set:
iis_virtual_directory { 'NAME':
    ensure       => 'present',
    name         => 'NAME',
    sitename     => 'SITE',
    application  => 'APPLICATION,
    physicalpath => 'Z:\\FOLDER\\PATH',
}
  1. run puppet, i.e. puppet agent -t

Environment

  • Version: N/A
  • Platform: Windows

Additional Context

The following is how I fixed the file webadministration.rb in my local environment:

Change function

Line 34:

  • Change cmd = [] to cmd = ["Import-Module WebAdministration;","Start-Sleep -Seconds 5;"] to fix bug 1

Line 42:

  • Add logic in case @resource[:application] exists to build the Path as @resource[:sitename]\\@resource[:application] to avoid repeat corrective runs:
if @resource[:application]
  cmd << "New-Item -Type VirtualDirectory -Name 'IIS:\\Sites\\#{@resource[:sitename]}\\#{@resource[:application]}\\#{@resource[:name]}' "
else
  cmd << "New-Item -Type VirtualDirectory -Name 'IIS:\\Sites\\#{@resource[:sitename]}\\#{@resource[:name]}' "
end
  • Add the '-Name' Parameter in New-Item

Line 44:

  • Move cmd << "-Application \"#{@resource[:application]}\" " if @resource[:application] Between Line 38 and Line 39

Line 67:

  • Change cmd = [] to cmd = ["Import-Module WebAdministration;","Start-Sleep -Seconds 5;"] to fix bug 1

Update function

Line 70:

Suggestion - To handle or eliminate the error that occurs when "application" isn't in the Item Property of the Virtual Directory and application is specified: Adding -ErrorAction SilentlyContinue to the current command is a workaround. A more permanent solution would be to filter on the attribute 'application' from the Item-property, like this: Import-Module WebAdministration;Start-Sleep -Seconds 5;Get-ItemProperty -Path PATH | Get-Member -MemberType NoteProperty and only run the command if it exists.

Line 87:

  • Change cmd = [] to cmd = ["Import-Module WebAdministration;","Start-Sleep -Seconds 5;"] to fix bug 1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions