PowerShell에서 IIS 웹 사이트의 활성화된 사전 로드(preloadEnabled) 값 가져오기
5710 단어 IISPowerShell
소개
이전에 "【ASP.NET】IIS Application Initialization에 의한 최초 액세스의 고속화"의 기사를 썼습니다.
이 경우 IIS 대상 웹 사이트의 고급 설정 대화 상자를 활성화 된 사전로드를 True로 변경합니다.
도입 설정했을 때에 IIS 설정이 올바르게 행해졌는지 체크하는 프로그램을 짜고 있었습니다만, 「유효화된 프리로드」의 값이 아무래도 취득할 수 없는, 넷으로 조사해도 프리로드를 설정 하는 방법을 찾는데 얻는 방법을 찾을 수 없습니다.
휴일이 되었으므로 집에서 조사해 보았습니다.
조사
Get-Item에서는 활성화된 프리로드(preloadEnabled)를 찾을 수 없습니다.
PS>Get-Item IIS:\Sites\test
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
test 2 Stopped C:\Inetpub\wwwroot\Test http *:80:
그물을 살펴보면 값을 설정하는 방법을 찾을 수 있습니다. 그렇다면 값을 세트 할 수 있다면 취득도 할 수 있지 않을까 생각하네요.
IIS7.5 PowerShell preloadEnabled - stackoverflow
PS>import-module webadministration
PS>set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True
확실히 값은 취득할 수 있었습니다만, 결과는 False
그러니까 다릅니다. applicationDefaults
가 되어 있으므로, 상속원의 값을 취득하고 있는 것 같다.
PS>import-module webadministration
PS>get-itemproperty IIS:\Sites\test -name applicationDefaults.preloadEnabled | Select Value
Value
-----
False
다른 답변을 시도했습니다. 이것도 설정이므로, 취득하는 방법으로 변경합니다.
"YOUR_SITE_NAME"은 대상 사이트명으로 변경한다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["YOUR_SITE_NAME"].Applications["/"].SetAttributeValue("preloadEnabled", $true)
PS>$serverManager.CommitChanges()
이 방법이라면 값을 얻을 수있었습니다. 또한 위의 방법으로 대상 사이트의 활성화된 프리로드(preloadEnabled)를 설정할 수도 있습니다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["test"].Applications["/"].GetAttributeValue("preloadEnabled")
True
이제 위의 방법을 찾기 전에 값을 얻을 수있는 방법이있었습니다.
IIS 설정은 "applicationHost.config"파일에 출력됩니다. XML 형식이므로 Get-Content를 사용하면 추적할 수 있습니다.
이 방법이라면 관리자 모드의 Powershell로 하지 않아도 얻을 수 있습니다.
PS>$xml = [XML](Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config)
PS>$xml.SelectNodes("//sites/site[`test`]/application").preloadEnabled
true
조사 검토
회사에서 의기양양하게 시험했더니 취득할 수 없었다(^-^;
대상의 웹 사이트는, Default Web Site의 부하의 어플리케이션 「test」이었기 때문에.
따라서, 어플리케이션 「test」까지 대상으로 하면 취득할 수 있었습니다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["Default Web Site"].Applications["/test"].GetAttributeValue("preloadEnabled")
True
Get-Content에서도, 어플리케이션 「test」까지 대상으로 하면 취득할 수 있었습니다.
PS>$xml = [XML](Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config)
PS>$xml.SelectNodes($xml.SelectNodes("//sites/site['Default Web Site']/application[@path='/test']").preloadEnabled
true
Get-WebConfiguration에서도 얻을 수있었습니다.
PS>Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']" | foreach { $_.attributes | select name, value }
Name Value
---- -----
path /test
applicationPool DefaultAppPool
enabledProtocols http
serviceAutoStartEnabled False
serviceAutoStartProvider
preloadEnabled True
preloadEnabled만을 대상으로 한다.
PS>(Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']").GetAttributeValue("preloadEnabled")
True
마지막으로
설정 화면에 「유효화된 프리로드」가 있으니까, Get-Item으로 처음부터 취득할 수 있게 되어 있으면, 고생하지 않아도 되지만.
PowerShell을 아직 잘 사용하지 않았습니다.
Reference
이 문제에 관하여(PowerShell에서 IIS 웹 사이트의 활성화된 사전 로드(preloadEnabled) 값 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yaju/items/1f958ff52c220e9d08eb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Get-Item에서는 활성화된 프리로드(preloadEnabled)를 찾을 수 없습니다.
PS>Get-Item IIS:\Sites\test
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
test 2 Stopped C:\Inetpub\wwwroot\Test http *:80:
그물을 살펴보면 값을 설정하는 방법을 찾을 수 있습니다. 그렇다면 값을 세트 할 수 있다면 취득도 할 수 있지 않을까 생각하네요.
IIS7.5 PowerShell preloadEnabled - stackoverflow
PS>import-module webadministration
PS>set-itemproperty IIS:\Sites\SiteName -name applicationDefaults.preloadEnabled -value True
확실히 값은 취득할 수 있었습니다만, 결과는
False
그러니까 다릅니다. applicationDefaults
가 되어 있으므로, 상속원의 값을 취득하고 있는 것 같다.PS>import-module webadministration
PS>get-itemproperty IIS:\Sites\test -name applicationDefaults.preloadEnabled | Select Value
Value
-----
False
다른 답변을 시도했습니다. 이것도 설정이므로, 취득하는 방법으로 변경합니다.
"YOUR_SITE_NAME"은 대상 사이트명으로 변경한다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["YOUR_SITE_NAME"].Applications["/"].SetAttributeValue("preloadEnabled", $true)
PS>$serverManager.CommitChanges()
이 방법이라면 값을 얻을 수있었습니다. 또한 위의 방법으로 대상 사이트의 활성화된 프리로드(preloadEnabled)를 설정할 수도 있습니다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["test"].Applications["/"].GetAttributeValue("preloadEnabled")
True
이제 위의 방법을 찾기 전에 값을 얻을 수있는 방법이있었습니다.
IIS 설정은 "applicationHost.config"파일에 출력됩니다. XML 형식이므로 Get-Content를 사용하면 추적할 수 있습니다.
이 방법이라면 관리자 모드의 Powershell로 하지 않아도 얻을 수 있습니다.
PS>$xml = [XML](Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config)
PS>$xml.SelectNodes("//sites/site[`test`]/application").preloadEnabled
true
조사 검토
회사에서 의기양양하게 시험했더니 취득할 수 없었다(^-^;
대상의 웹 사이트는, Default Web Site의 부하의 어플리케이션 「test」이었기 때문에.
따라서, 어플리케이션 「test」까지 대상으로 하면 취득할 수 있었습니다.
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["Default Web Site"].Applications["/test"].GetAttributeValue("preloadEnabled")
True
Get-Content에서도, 어플리케이션 「test」까지 대상으로 하면 취득할 수 있었습니다.
PS>$xml = [XML](Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config)
PS>$xml.SelectNodes($xml.SelectNodes("//sites/site['Default Web Site']/application[@path='/test']").preloadEnabled
true
Get-WebConfiguration에서도 얻을 수있었습니다.
PS>Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']" | foreach { $_.attributes | select name, value }
Name Value
---- -----
path /test
applicationPool DefaultAppPool
enabledProtocols http
serviceAutoStartEnabled False
serviceAutoStartProvider
preloadEnabled True
preloadEnabled만을 대상으로 한다.
PS>(Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']").GetAttributeValue("preloadEnabled")
True
마지막으로
설정 화면에 「유효화된 프리로드」가 있으니까, Get-Item으로 처음부터 취득할 수 있게 되어 있으면, 고생하지 않아도 되지만.
PowerShell을 아직 잘 사용하지 않았습니다.
Reference
이 문제에 관하여(PowerShell에서 IIS 웹 사이트의 활성화된 사전 로드(preloadEnabled) 값 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yaju/items/1f958ff52c220e9d08eb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PS>[System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll")
PS>$serverManager = (New-Object Microsoft.Web.Administration.ServerManager)
PS>$serverManager.Sites["Default Web Site"].Applications["/test"].GetAttributeValue("preloadEnabled")
True
PS>$xml = [XML](Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config)
PS>$xml.SelectNodes($xml.SelectNodes("//sites/site['Default Web Site']/application[@path='/test']").preloadEnabled
true
PS>Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']" | foreach { $_.attributes | select name, value }
Name Value
---- -----
path /test
applicationPool DefaultAppPool
enabledProtocols http
serviceAutoStartEnabled False
serviceAutoStartProvider
preloadEnabled True
PS>(Get-WebConfiguration "//sites/site['Default Web Site']/application[@path='/test']").GetAttributeValue("preloadEnabled")
True
설정 화면에 「유효화된 프리로드」가 있으니까, Get-Item으로 처음부터 취득할 수 있게 되어 있으면, 고생하지 않아도 되지만.
PowerShell을 아직 잘 사용하지 않았습니다.
Reference
이 문제에 관하여(PowerShell에서 IIS 웹 사이트의 활성화된 사전 로드(preloadEnabled) 값 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yaju/items/1f958ff52c220e9d08eb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)