Я пытаюсь создать свой собственный скрипт сравнения сервисов.Я вижу некоторые онлайн, но хочу сделать это сам.Я только получил до сих пор.Я все время путаюсь.
Требуемый вывод в следующем формате.Это даже не должно показать, что отличается.Я просто хочу увидеть, что предыдущее состояние сравнивалось с текущим состоянием.Я сделал объект сравнения, и он не дал мне желаемый формат.Затем я подумал, что, может быть, мне следует просто сделать два вложенных цикла и создать новый объект с нужными ему состояниями.Это не сработало правильно, он возвращает массив.Тогда я подумал, может быть, цикл for в цикле foreach ... Я запутываюсь, и это так близко.
Вы должны предоставить csv некоторые службы для сравнения, чтобы сделать эту работу частью своих параметров.
Использование
Inspect-ServiceSnapshot -SnapshotPath "C:\YourPath"
Желаемый выход
Имя CurrentState ПредыдущееСостояние приложения1 Выполняется Остановлено
Код пока что
function Inspect-ServiceSnapshot {
[CmdletBinding()]
param (
#Snapshot
[Parameter(Mandatory=$true)]
[ValidatePattern("C:")]
[string]
$SnapshotPath,
# timer
[Parameter(Mandatory=$false)]
[int]
$TimeToWait
)
if($TimeToWait -ne $null) {
Start-Sleep -Seconds $TimeToWait
$list = @()
$old = Import-Csv -Path $SnapshotPath
foreach($entry in (get-service)) {
foreach($oldItem in $old) {
$object = New-Object -TypeName psobject -Property @{
Name = $entry.Name
CurrentStatus = $entry.status
DisplayName = $entry.displayname
PreviousStatus = $oldItem.status
}
$list += $object
}
}
$list
} else {
$list = @()
$old = Import-Csv -Path $SnapshotPath
foreach($entry in (get-service)) {
foreach($oldItem in $old) {
$object = New-Object -TypeName psobject -Property @{
Name = $entry.Name
CurrentStatus = $entry.status
DisplayName = $entry.displayname
PreviousStatus = $oldItem.status
}
$list += $object
}
}
$list
}
}