-
Notifications
You must be signed in to change notification settings - Fork 66
Description
Bug Report
Describe the Bug
- 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:
- The CREATE function Errors:
Debug: STDOUT: New-Item : A parameter cannot be found that matches parameter name 'Application'.
- 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 propertyapplication
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
- 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',
}
- 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 = []
tocmd = ["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 = []
tocmd = ["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 = []
tocmd = ["Import-Module WebAdministration;","Start-Sleep -Seconds 5;"]
to fix bug 1