0

我是 Desired State Configuration 的初学者,但我在做一些基本的事情时遇到了一些麻烦。

我的配置本质上是安装 IIS(包括 Web 管理和其他一些部分),运行一些安装程序然后停止默认网站。

我选择不使用 xWebAdministration 模块,因为停止默认网站似乎有点矫枉过正。因此,我编写了以下脚本来完成此任务:

Script StopDefaultWebsite {
        SetScript = {
            # Check if WebAdministration module is present for IIS cmdlets
            if(!(Get-Module -ListAvailable -Name WebAdministration))
            {
                Throw "Please ensure that WebAdministration module is installed."
            }
            Stop-Website "Default Web Site"
        }
        TestScript = {
            $w = Get-Website | where {$_.name -eq "Default Web Site"}
            return $w.state -eq "Stopped"
        }
        GetScript = {
            $installStatus = Get-Website | where {$_.name -eq "Default Web Site"}
            @{
                SetScript = $SetScript
                TestScript = $TestScript
                Result = [String]$installStatus;
            } 
        }
    }

(我从 xWebAdministration 复制了 SetScript 的第一部分)我遇到的问题是,当我开始配置时,Windows 功能“web-mgmt-service”安装得很好,我可以检查它是否已安装,但是当这个脚本运行时我得到以下错误:

PowerShell provider MSFT_ScriptResource  failed to execute Test-TargetResource functionality with error message:
    Could not load file or assembly 'Microsoft.IIS.PowerShell.Framework' or one of its dependencies. The system cannot find the file specified.
        + CategoryInfo          : InvalidOperation: (:) [], CimException
        + FullyQualifiedErrorId : ProviderOperationExecutionFailure

我猜这是因为机器需要重新启动,或者至少 Powershell 需要重新启动,然后才能加载 IIS powershell 模块。当我尝试再次启动完全相同的配置并且它会成功时,可以看到这一点。

我已经尝试重新启动机器,这会导致更多问题。有什么办法可以重新启动 Powershell?或者我可以做一些更基本的事情来加载 IIS Powershell 模块。

谢谢

4

1 回答 1

0

您不必重新启动。您所要做的就是重新加载$env:PSModulePath变量。刷新此变量的值后,您将能够加载新添加的模块。我将这个技巧用于无人参与的 SQL 安装,我曾经遇到过同样的问题。

http://www.powershellmagazine.com/2013/06/06/pstip-refresh-the-psmodulepath-environment-variable-without-re-opening-console/

于 2014-06-10T04:58:47.520 回答