1

-を使用してマシン上でいくつかのIIS管理スクリプトを実行しようとしています。

OS - Windows 2003(with SP2)
IIS - V6.0
Powershell - V2

ただし、次のコマンドを実行すると、エラーが発生します-

-インポートモジュールWebAdministration

  **Error**:  
    Import-Module : The specified module 'WebAdministration' was not loaded because no valid module file was found in any module directory.
    At line:1 char:14 + Import-Module <<<<  WebAdministration
        + CategoryInfo          : ResourceUnavailable: (WebAdministration:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

-追加-PSSnapInWebAdministration

  **Error:**  
      Add-PSSnapin : No snap-ins have been registered for Windows PowerShell version 2.
        At line:1 char:13 + Add-PSSnapIn <<<<  WebAdministration
        + CategoryInfo          : InvalidArgument: (WebAdministration:String) [Add-PSSnapin], PSArgumentException
        + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

どのモジュール/スナップインが利用可能かを確認しました-結果は次のとおりです-

Get-Module -ListAvailable

Result:
    BitsTransfer

Get-PSSnapIn

Result:
  Microsoft.PowerShell.Diagnostics
  Microsoft.WSMan.Management  
  Microsoft.PowerShell.Core
  Microsoft.PowerShell.Utility
  Microsoft.PowerShell.Host
  Microsoft.PowerShell.Management
  Microsoft.PowerShell.Security

IIS管理スクリプトを実行するために何をすべきかをガイドしてください。

4

3 に答える 3

0

Windows 2k3 プラットフォーム上の IIS6 では、PowerShell からアクセスできる古い WMI プロバイダー ("Microsoftiisv2") または ADSI プロバイダーを介して IIS にアクセスすることをお勧めします。

IIS 6.0 ではスナップインも WebAdministration モジュールも使用できないため、いずれかを使用して PowerShell から IIS6 メタベースにアクセスできます。

IIS7.0 では、「WebAdministration」モジュールをインポートできます。

たとえば、IIS6 の仮想ディレクトリの物理パスを設定する必要があったため、c:/Windows/System32 で IIS6 に付属する vbs スクリプト iisvdir を使用しました。

コード スニペットのコピー

Function resetSiteLocation ($newPath)
{     

Write-Host "List of Virtual directories for the site Test123 before reset :"

C:\WINDOWS\system32\iisvdir /query Test/Test123

Write-Host "About to reset site location"

C:\WINDOWS\system32\iisvdir /delete Test/Test123/Test1

C:\WINDOWS\system32\iisvdir /create Test/Test123 Test1 C:\projects\Test\Test123\Test1

C:\WINDOWS\system32\iisvdir /delete Test/Test123/Test2

C:\WINDOWS\system32\iisvdir /create Test/Test123 Test2 C:\projects\Test\Test123\Test2

Write-Host "Finished to reset site location"

Write-Host "List of Virtual directories for the site Test123 after reset :"

C:\WINDOWS\system32\iisvdir /query Test/Test123

}

より高いバージョンの IIS に切り替えることになるため、IIS のバージョンを判別し、適切なアクションを実行するために、コードにスイッチを入れることができます。

これは私がしました:

Write-Host "Checking Installed IIS version:"

$iisVersion = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\InetStp";

Write-host IIS major version : $iisVersion.MajorVersion

Write-host IIS minor version : $iisVersion.MinorVersion

Write-Host "Finished the check."
## IIS inclusion module
## Neither snapins nor WebAdministration module is available for IIS 6.0, so we can access IIS6 metabase 
## from PowerShell using either old WMI provider ("Microsoftiisv2") or ADSI provider as both are accessible from the PowerShell.
## For IIS7.0, we can import WebAdministration module

if (($iisVersion.MajorVersion -eq 7 ) -or ($iisVersion.MajorVersion -ge 7 ))
{
Write-host Detected IIS Major Version : $iisVersion.MajorVersion and Minor version : $iisVersion.MinorVersion. Hence importing WebAdministration module.
Import-Module WebAdministration;


Write-Host "About to reset app pool"
Restart-WebAppPool("Application")
Write-Host "Finished resetting app pool" 
resetSiteLocation

Write-Host "About to reset site"
Restart-WebItem("IIS:\Sites\My application")
Write-Host "Finished to reset site"

}
elseif ($iisVersion.MajorVersion -eq 6) 
{
Write-host IIS version 6 detected. Hence accessing IIS metabase using old WMI provider 

##2. Reset App Pool
Write-Host "About to reset app pool"

Write-Host "Finished resetting app pool" 

##3. Reset site location
resetSiteLocation

##4.Reset site
Write-Host "About to reset site"

Write-Host "Finished to reset site"    
}
else
{
     Write-host Detected IIS $iisVersion.MajorVersion         
}

それがあなたを助けるかどうか私に知らせてください。

于 2014-02-26T03:51:55.550 に答える