如何更改启动类型和任务以从CSV文件启动/停止服务?

时间:2018-10-30 19:22:13

标签: powershell csv

我有以下csv文件:

Server,Service,Startup Type,Task
server1,SQL Server Analysis Services (MSSQLSERVER),automatic,start
server2,"SQL Server Analysis Services (MSSQLSERVER), SQL Server Analysis Services (MSSQLSERVER) CEIP",Manual,stop

我有以下脚本,但是现在它使用内置的Stop-ServiceStart-Service

我想允许灵活地定义csv文件中的所有参数,并根据csv文件的内容来启动/停止服务,以及将startup type设置为其他startup type如果它与csv文件和服务器上的当前状态已更改/不同。

$csvFile = Import-CSV .\SSAS_services.csv

ForEach ($Server in $csvFile)
{   Invoke-Command -ScriptBlock { Stop-Service $args[0] } -ComputerName $Server.Server -ArgumentList $Server.Service.Split(",")
}
Start-Sleep -Seconds 60

ForEach ($service in (($csvFile.Count - 1)..0))
{   Invoke-Command -ScriptBlock { Stop-Service $args[0] } -ComputerName $csvFile[$service].Server -ArgumentList $csvFile[$service].Service.Split(",")  
}

1 个答案:

答案 0 :(得分:1)

您可以使用$using在远程会话中读取局部变量,请参见about_remote_variables部分。

我假设您要在远程Macine上执行以下操作:

  • 停止服务
  • 适应启动类型
  • 启动服务

因此,代码应适当。看起来像:

$rows = Import-CSV .\SSAS_services.csv

ForEach ($row in $rows)
{   
    # Stop the service on the remote machine
    Invoke-Command -ScriptBlock { Stop-Service $using:row.Service } -ComputerName    $row.Server -ArgumentList $row
    Start-Sleep 60
    Invoke-Command -ScriptBlock { 
         # Set the startup type on the remote machine
         Set-Service $using:row.Service -StartupType $using:row."Startup Type"
         Start-Service $using:row.Service 
    } -ComputerName    $row.Server -ArgumentList $row   
}

希望有帮助。