Powershell 如何将启动类型和任务更改为从csv文件启动/停止服务?

Powershell 如何将启动类型和任务更改为从csv文件启动/停止服务?,powershell,csv,Powershell,Csv,我有以下csv文件: 服务器、服务、启动类型、任务 服务器1,SQL Server分析服务(MSSQLSERVER),自动,启动 server2,“SQL Server分析服务(MSSQLSERVER),SQL Server分析服务(MSSQLSERVER)CEIP”,手动,停止 我有以下脚本,但它现在使用内置的停止服务或启动服务 我希望能够灵活地定义csv文件中的所有参数,并根据csv文件的内容启动/停止服务,以及将启动类型设置为不同的启动类型,如果其更改/不同于csv文件和服务器上的当前状

我有以下csv文件:

服务器、服务、启动类型、任务
服务器1,SQL Server分析服务(MSSQLSERVER),自动,启动
server2,“SQL Server分析服务(MSSQLSERVER),SQL Server分析服务(MSSQLSERVER)CEIP”,手动,停止
我有以下脚本,但它现在使用内置的
停止服务
启动服务

我希望能够灵活地定义csv文件中的所有参数,并根据csv文件的内容启动/停止服务,以及将
启动类型
设置为不同的
启动类型
,如果其更改/不同于csv文件和服务器上的当前状态


您可以使用
$using
在远程会话中读取本地变量,请参阅部分

我假设您希望在远程macines上执行以下操作:

  • 停止服务
  • 调整启动类型
  • 启动服务
所以代码应该是正确的。看起来像:

$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   
}

希望这能有所帮助。

您的代码与我要查找的代码非常接近:)。我不想遵循停止>适应>开始的顺序。我只想执行csv文件中定义的任何操作:)。所以应该有一些if/switch语句。例如,在我的csv文件中,server1被设置为作为任务启动。如果服务已经启动,那么它不会影响它,或者可能只是返回到该服务器已经启动的日志文件。类似地,对于启动类型,如果服务已经是手动的,并且csv表示手动,那么可以附加到日志文件中,表示服务已经是手动的,例如,脚本应该仅基于csv文件中设置的内容影响服务。如果server2被定义为停止服务,那么脚本应该停止它。如果它说重新启动,那么脚本应该重新启动。etc…脚本中没有硬编码序列:)。
$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   
}