Jump to content

Powershell Befehl 2x täglich Script.ps1


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo!

Im Zusammenhang mit der Exchange-Katastrophe forscht man ja tiefer.

Dabei fiel mir in der Ereignisanzeige auf, dass hin und wieder Powershell gestartet wurde.

EventLog:

Der Anbieter "Registry" ist Started. 

Details: 
	ProviderName=Registry
	NewProviderState=Started

	SequenceNumber=1

	HostName=ConsoleHost
	HostVersion=5.1.14393.3866
	HostId=76d14a53-5841-4ccd-a07a-df1836051da0
	HostApplication=C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -NoLogo -File C:\Windows\TEMP\xfow3wj4.55h\script.ps1
	EngineVersion=
	RunspaceId=
	PipelineId=
	CommandName=
	CommandType=
	ScriptName=
	CommandPath=
	CommandLine=

Da sind mehrere Einträge. Erst Anbieter Registry, dann Alias, dann Invironment, dann FileSystem, dann Function, dann Variable und dann "Der Modulzustand wurde von None in Available geändert."

Natürlich war die nicht mehr zu finden, so dass ich den Ordner überwachen lassen habe und sämtliche Dateien bei Erstellung in einen Ordner kopiert werden.

 

In der script.ps1 steht dann:

$ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; @(@(Get-MailboxDatabase | ?{$_.Server.ToString() -eq 'DC'}) | %{Get-Mailbox -Database $_ -ResultSize Unlimited -RecipientTypeDetails UserMailbox,LinkedMailbox,SharedMailbox,RoomMailbox,EquipmentMailbox}).Count

ein anderes mal stand in einer anderen script.ps1:

$ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Set-StrictMode -Version Latest

if ($args.Length -ne 2)
{
	throw "Output file paths expected as a script arguments."
}

$outputFilePath = $args[0]
$skippedFoldersFilePath = $args[1]

$DeleteAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::DeleteAllItems
$EditAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::EditAllItems
$ReadAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::ReadItems
$FolderVisibleRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::FolderVisible

$RequiredRights = $DeleteAllRight -bor $EditAllRight -bor $ReadAllRight -bor $FolderVisibleRight

# Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… паблик фолдеров вызов FindItems иногда приводит к иÑключению:
# "The specified object was not found in the store".
# Причем, например, еÑли положить в такой фолдер поÑÑ‚ и удалить его, то ошибка иÑчезает.
# Иногда (но не вÑегда) Ñ‚Ð°ÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° возникает Ð´Ð»Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ фолдера IPM_SUBTREE.

# ЕдинÑтвенное предположение, что EWS в завиÑимоÑти от каких-то уÑловий Ð´Ð»Ñ Ð¿ÑƒÑтого фолдера 
# в ответ на FindItems может вернуть либо пуÑтую коллекцию Ñлементов, либо приведенную выше ошибку.
# ПоÑтому иÑключаем из ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑƒÑтые каталоги.
function IsNotEmpty($publicFolder)
{
	$anyPublicFolderItemsExist = $(Get-PublicFolderStatistics $publicFolder).ItemCount -ne 0
	if (! $anyPublicFolderItemsExist)
	{
		AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "No items")
	}

	return $anyPublicFolderItemsExist
}

function HasValidUser($publicFolderPermission)
{
	$publicFolderUserTypeName = $publicFolderPermission.User.GetType().Name
	if ($publicFolderUserTypeName -ne "MailboxFolderUserId")
	{
		Write-Host "WARNING: unexpected publicFolderUserTypeName: $publicFolderUserTypeName"
		return $false
	}

	return ($publicFolderPermission.User -ne $null) -and ($publicFolderPermission.User.ADRecipient -ne $null)
}

function ContainsRequiredRights($accessRights)
{
	[int]$effectiveRights = 0
	foreach ($right in $accessRights)
	{
		$effectiveRights = $effectiveRights -bor [int]$right
	}

	return ($effectiveRights -band $RequiredRights) -eq $RequiredRights
}

function GetUserWithRequiredRights($publicFolder)
{
	$permission = Get-PublicFolderClientPermission $publicFolder | ? { $(HasValidUser $_) -and $(ContainsRequiredRights $_.AccessRights) } | Select -First 1
	if($permission -eq $null)
	{
		AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "Wrong permissions")
	}

	return $permission 
}

function FormatSkippedEntry($publicFolder, $skipReason)
{
	$fullPath = $publicFolder.FolderPath.ToString()

	$publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString()
	$mailboxName = $publicFolderMailbox.PrimarySmtpAddress
	$storeName = $publicFolderMailbox.Database

	return "$fullPath`n$mailboxName`n$storeName`n$skipReason"
}

function GetEntry($publicFolderPermission)
{
	$ownerSid = $publicFolderPermission.User.ADRecipient.Sid

	$publicFolder = Get-PublicFolder $publicFolderPermission.Identity
	$entryId = $publicFolder.EntryId
	$fullPath = $publicFolder.FolderPath.ToString()

	$publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString()
	$mailboxName = $publicFolderMailbox.PrimarySmtpAddress
	$storeName = $publicFolderMailbox.Database
	
	return "$entryId`n$ownerSid`n$fullPath`n$mailboxName`n$storeName"
}

function AppendEntryToFile($outputFilePath, $entry)
{
	[System.IO.File]::AppendAllText($outputFilePath, "$entry`n`n", [System.Text.Encoding]::Unicode)
}

New-Item -Force -ItemType file $outputFilePath

$publicFolders = $null
try
{
	$publicFolders = Get-PublicFolder -Recurse
}
catch
{
	if ($_.CategoryInfo.Reason -eq 'ObjectNotFoundException')
	{
		Write-Host "There are no public folder mailboxes."
		return
	}

	throw
}

$publicFolders | ? { IsNotEmpty $_ } | %{ GetUserWithRequiredRights $_ } | ? { $_ -ne $null } | %{ AppendEntryToFile $outputFilePath $(GetEntry $_) }

Die merkwürdigen Kommentarzeilen machen mich stutzig. Sehen so CHINESISCH aus...

Ich hab es bei google übersetzen lassen:

Zitat

# 脨 鈥 澝 惵 幻 懧? 脨 Lu 脨 潞 潞 潞 潞 焨 舥 毭 惵 戋 戋 偓 毭? €?潵 罵罵 焵 潵 焵 無 焨 樵 焵 焨 焨 焨 潵 焨 焨 焨 焨 潵 焨 焨 焨 惵 惵 惵 惵 惵 惵 惵 愨 愨 惵 惵 愨 惵 脨 脨 脨 脨 脨lu So finden Sie heraus, was zu tun ist? FindItems So suchen Sie lange? FindItems So suchen Sie lange? FindItems Bestechungsreparaturen # "Das angegebene Objekt wurde nicht im Store gefunden". # 脨 鄨 修 钪  惵 惵 惵 € : 惵 得 惵?脨 得 惵? Stimmt es, dass Sie es reparieren können? Sie können es für eine lange Zeit reparieren? Sie können es für eine lange Zeit reparieren? Es ist eine lange Zeit, um es zu reparieren. Es ist zu schwierig, den Esel zu reparieren. Wie man es repariert das Bestechungsgeld und reparieren es? Sie können es reparieren, und es ist eine Schande, dass Sie es reparieren können? Es ist eine Schande, dass Sie es reparieren können. Es ist eine Schande. €? # Ji Yun Ji Lu Ji töten Ji Lu Ji Lu Ji Gefangener (Ji Lu Ji töten Ji Lu Ji Lu Ji Krupp Reparatur Biji Lu Ji Lu Ji Lu Ji Gefangener) Reparatur Holmium Nuodie Bedauern Krawatte Gut Sterben Bedauern Nuo? Cu Schlachtreparatur Xiecu Bestechung Was ist der Unterschied zwischen dem Schlachten und dem Schlachten? Das Schlachten des Schlachtens und das Schlachten des Schlachtens und das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachten, das Schlachten des Schlachtens, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, Das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, die Schrägreparatur für eine lange Zeit, die Illusion und die Fehler führen zu IPM_SUBTREE. # Ji holmium ⒚ Diecidiegai Die Jiaonuonijian € Nuodiecaidie Detiejiaodie Jiaodiejiudie? Culvxiukang  Die war Tiecidieke Tiejiutiehuan Diejiudiedu Tiedetiejiao Was sollten Sie tun? Kouxiubixiu holmium Nuotie Jiutiechentie? Holmium Chidiejiutie reparieren Illusion und Frustration # 脨 脨 脨 reparieren 鈥 毭 惵 惵 惵 惵 鈥? 鈥? 脨 Lu 脨 FindItems erfassen Ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Mann, ich ' Ich bin kein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Sechseckiger Lack Lack Lack Lack Reparatur Moos. Was soll ich tun? Der Esel repariert die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Schaufeln, die Reparaturen in Gefangenschaft, die Sorgen, die Sorgen und das Chaos für eine lange Zeit?

 

Hat jemand eine Idee dazu? Kaspersky Endpoint, MSERT und Testproxylogon haben nichts auf dem System gefunden...

script.ps1.txt

Link zu diesem Kommentar
vor 3 Minuten schrieb rt1970:

@NilsK

Die Idee klingt plausibel - aber... Hoffnung stirbt zuletzt, das System nicht neu zu installieren.

 

Kann man raus bekommen, welcher Prozess/Datei die Datei erstellt?

Oder gibt es einen Befehl, der ALLE Task´s ausliest?

Was macht die script.ps1?

Hey,

ganz ehrlich, selbst wenn Du Teile bereinigt bekommst, wirst Du bei jedem Fehler der demnächst auftritt MIsstrauisch sein und das schlimmste befürchten müssen.

Tu Dir und deinen GF's den Gefallen einer /recoverserver Installation und gut ist.

 

Es ist unverantwortlich so ein System noch länger bei Euch im Netz laufen zu lassen.

 

Gruß mikro

Link zu diesem Kommentar

Naja.... Soooo eindeutig ist das ja nicht (wie ich finde).

 

Die Übersetzung kam ja NUR zustande, weil ich die .ps1 in Word geöffnet hatte und mit einer Sprache, die wie Chinesisch aus sah... Dann ab zum Google-Übersetzer.

Ob der Kommentar in der .ps1 tatsächlich korrekt übersetzt ist weiß keiner. Ich finde auch keine weiteren Anomalien. Auch keine unklaren Aufgaben.

Link zu diesem Kommentar
vor 7 Stunden schrieb rt1970:

Soll ich jetzt ein Auto verschrotten, nur weil eventuell ein Nagel im Reifen steckt?

Das Problem ist nicht der Nagel. Das Problem ist das, was Du möglicherweise nicht siehst. Der Vergleich ist eher: Terrorist war eine Stunde unbemerkt an meinem Auto. Auf Anhieb finde ich keine Bombe. Fahre ich mit dem Auto?

 

Wenn Malware mit SYSTEM-Rechten ausgeführt wird, kann sie sich so verstecken, damit Du sie als Admin nicht siehst.

Link zu diesem Kommentar

Zusätzlich wäre anzumerken, dass, sofern der Server nicht Teil einer DAG ist, eine Recovery-Installation eher mit dem Ölwechsel zu vergleichen ist als mit dem Verschrotten. Oder, falls noch Thrid Party-Zeug auf dem Server läuft, vielleicht mit einem Auspufftausch.

Klar hat man Respekt davor, wenn man es noch nie gemacht hat. Aber tatsächlich ist bei einem Standalone-Server nix großes dabei.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...