【问题标题】:Check whether IIS is installed or not检查是否安装了IIS
【发布时间】:2017-12-06 12:06:19
【问题描述】:

我正在编写一个 PowerShell 脚本来在 IIS 中托管一个网站。

我在没有安装 IIS 的机器上尝试了这个脚本,但出现错误,所以我想检查是否安装了 IIS,然后我想在 ISS 中托管一个网站。

下面是我正在尝试但它不起作用的脚本:

$vm = "localhost";
$iis = Get-WmiObject Win32_Service -ComputerName $vm -Filter "name='IISADMIN'"

if ($iis.State -eq "Running") {
    Write-Host "IIS is running on $vm"
} 
else {
    Write-Host "IIS is not running on $vm"
}

请帮助我使用任何 PowerShell 脚本来检查是否安装了 IIS。

【问题讨论】:

  • Get-WindowsFeature Web-Server...检查安装状态属性

标签: powershell iis service wmi


【解决方案1】:
if ((Get-WindowsFeature Web-Server).InstallState -eq "Installed") {
    Write-Host "IIS is installed on $vm"
} 
else {
    Write-Host "IIS is not installed on $vm"
}

【讨论】:

  • Get-WindowsFeature 有时在 Windows 10 电脑中不存在。我认为 Get-WindowsOptionalFeature 可能是要走的路。
  • @Anthony 你可能需要运行Import-Module servermanager 来启用它。在 Windows 虚拟机(例如 Windows 服务器)上,默认安装服务器管理器,因此此处提供 Get-WindowsFeature。但在其他 Windows 10 电脑上并非如此。
【解决方案2】:

我今天需要为包含数百台服务器的列表执行此操作。我修改了之前的答案以使用 get-service w3svc 而不是 WMI 安装状态。到目前为止,这似乎对我有用。

$servers = get-content  c:\listofservers.txt
foreach($server in $servers){
$service = get-service -ComputerName $server w3svc -ErrorAction SilentlyContinue
if($service)
{
Write-Host "IIS installed on $server"
} 
else {
Write-Host "IIS is not installed on $server"
}}

【讨论】:

    【解决方案3】:

    在提升的 Powershell 窗口中,这对我有用:

    Windows Server 2012 上(在Windows Server 2008 上首先运行这个:Import-Module ServerManager

    if ((Get-WindowsFeature Web-Server).Installed) {
        Write-Host "IIS installed"
    } 
    

    开启Windows 10

    if ((Get-WindowsOptionalFeature -Online -FeatureName "IIS-WebServerRole").State -eq "Enabled") {
        Write-Host "IIS installed"
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-12
      • 2021-11-23
      • 2017-04-13
      • 2012-03-28
      • 1970-01-01
      • 2013-03-23
      • 2010-11-06
      • 2020-10-18
      相关资源
      最近更新 更多