Powershell 如何将启动类型和任务更改为从csv文件启动/停止服务?
我有以下csv文件:Powershell 如何将启动类型和任务更改为从csv文件启动/停止服务?,powershell,csv,Powershell,Csv,我有以下csv文件: 服务器、服务、启动类型、任务 服务器1,SQL Server分析服务(MSSQLSERVER),自动,启动 server2,“SQL Server分析服务(MSSQLSERVER),SQL Server分析服务(MSSQLSERVER)CEIP”,手动,停止 我有以下脚本,但它现在使用内置的停止服务或启动服务 我希望能够灵活地定义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
}