我是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模块。
由于
答案 0 :(得分:0)
您不必重新启动。您所要做的就是重新加载$env:PSModulePath
变量。刷新此变量的值后,您将能够加载新添加的模块。我使用这个技巧进行无人参与的SQL安装,我曾经遇到过同样的问题。