1

我想使用 powershell 脚本代码启动/停止 iis 和 mssql 意味着当我运行 ps 脚本时我想启动/停止 iis 和 mssql

我在网上搜索它,我找到了一些代码,但它没有按照我的要求工作

代码:

$iis = get-wmiobject Win32_Service -ComputerName "xyz" -Filter "name='IISADMIN'"
$iis.State=4

if($iis.State -ne "Running")
{
Write-Host "IIS Stop successfuly"
}

上面的代码向我显示了输出 IIS 停止成功,但在代码执行后 iis 仍在运行是使用 powershell 脚本停止 iis 的正确代码还是缺少的东西请也建议我使用 iis 和 mssql

先谢谢了...

4

2 回答 2

3

您可以通过运行以下命令获取所有依赖 IISAdmin 服务的服务:

$query = "ASSOCIATORS OF {Win32_Service.Name='IISAdmin'} WHERE ResultRole=Dependent"
Get-WmiObject -Query $query | Select Name

您可以通过运行以下命令获取IISAdmin 服务所依赖的所有服务:

$query = "ASSOCIATORS OF {Win32_Service.Name='IISAdmin'} WHERE ResultRole=Antecedent"
Get-WmiObject -Query $query | Select Name

现在,一旦你知道了依赖和需要的服务,就很容易停下来。

例如,停止所有依赖 IISAdmin 的服务

$query = "ASSOCIATORS OF {Win32_Service.Name='IISAdmin'} WHERE ResultRole=Dependent"
Get-WmiObject -Query $query
$services | Foreach-Object { "Stopping $($_.Name)";$_.StopService() }
于 2012-08-22T14:31:14.483 回答
0

您需要调用 StopService 方法并检查 ReturnValue。要获取支持的方法列表,请使用管道 $iis 到Get-Member

if($iis.State -eq 'Running')
{
    $rv = $iis.StopService()

    if($rv.ReturnValue -eq 0)
    {
        Write-Host "IIS Stopped successfuly"
    }
    else
    {
        Write-Host "IIS did not stop successfuly. Return value is $($rv.ReturnValue)"
    }
}
于 2012-08-22T07:31:31.710 回答