PS - Computername als Dateiname
Hallo,
heute habe ich es mit meinen Skripts.
Ich bräuchte bitte noch einmal Unterstützung:
Hier einmal mein Powershell Skirpt um die Sophos Endpoint Protection zu deinstallieren.
Ziel der Aufgabe:
- Sophos Manipulationsschutz im Central für alle PC's deaktivieren
- Sophos ZAP auf dem Client ausführen
- Client benötigt neustart
- SophosZap muss erneut ausgeführt werden
- Erstellung eines Logfiles auf dem Fileserver
Im Grund steht mein Skript soweit, auch wenn es vielleicht nicht das beste ist.
Vielleicht hat ja jemand Verbesserungsvorschläge.... ;)
Ich suche noch danach, wie ich das mit dem Neustart automatisiert bekommen.
Wichtig wäre mir, dass bei der Erstellung des Logs der Computerhostname in den Dateinamen geschrieben wird.
Aktuell lautet der Dateiname dann "$hostname.log" also gibt die Powershell die Variable wohl nicht in den Dateinamen.
heute habe ich es mit meinen Skripts.
Ich bräuchte bitte noch einmal Unterstützung:
Hier einmal mein Powershell Skirpt um die Sophos Endpoint Protection zu deinstallieren.
Ziel der Aufgabe:
- Sophos Manipulationsschutz im Central für alle PC's deaktivieren
- Sophos ZAP auf dem Client ausführen
- Client benötigt neustart
- SophosZap muss erneut ausgeführt werden
- Erstellung eines Logfiles auf dem Fileserver
Im Grund steht mein Skript soweit, auch wenn es vielleicht nicht das beste ist.
Vielleicht hat ja jemand Verbesserungsvorschläge.... ;)
Ich suche noch danach, wie ich das mit dem Neustart automatisiert bekommen.
Wichtig wäre mir, dass bei der Erstellung des Logs der Computerhostname in den Dateinamen geschrieben wird.
Aktuell lautet der Dateiname dann "$hostname.log" also gibt die Powershell die Variable wohl nicht in den Dateinamen.
$hostname = $env:computername
Copy-Item -Path "$workpath\uninstallation.log" -Destination "\\m42\script-log\deployment\log\$hostname.log"
################################
## Uninstall Sophos Endpoint ##
## ##
################################
# Create Variables
$workpath = 'C:\rollout'
if (!(Test-Path $workpath))
{
New-Item -itemType Directory -Path C:\ -Name "rollout"
}
else
{
write-host "Folder already exists"
}
# Navigate to worker Path
cd C:\rollout\
$zaplog = "$workpath\SophosZAP.log"
if (Test-Path $zaplog -PathType leaf) {
.\SophosZap.exe --confirm | Out-File $workpath\SophosZAP_finishing.log -ErrorAction Stop
}
Else {
#$ServiceStatus = Get-Process 'SAVService' -ErrorAction SilentlyContinue
#If (!($ServiceStatus-eq $null)) {
#Write-Host "The process SAVService is running" }
# Copy Removal Tool to the Client
copy \\m42\scripting\Sophos-Removal\SophosZap.exe $workpath\SophosZap.exe
Sleep 10
.\SophosZap.exe --confirm | Out-File $workpath\SophosZAP.log
}
$zaplogfinal = "$workpath\SophosZAP_finishing.log"
if (Test-Path $zaplogfinal -PathType leaf) {
Write-Output "Sophos Endpoint Uninstalled Completly on $env:computername" >> $workpath\uninstallation.log
}
$hostname = $env:computername
Copy-Item -Path "$workpath\uninstallation.log" -Destination "\\m42\script-log\deployment\log\$hostname.log"
$complete = "\\fs02\deploy\deployment\log\$hostname.log"
if (Test-Path $complete -PathType leaf) {
Remove-Item -Recurse -Force $workpath
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1069562812
Url: https://administrator.de/contentid/1069562812
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
3 Kommentare
Neuester Kommentar
Moin,
ich will dir ja nicht den Spass verderben, aber bei mir funktioniert:
genau so wie von dir beschrieben. Wird kopiert und dabei umbenannt.
Ich verstehe aber dein Ende am Skript ehrlich gesagt nicht.
Ab Zeile 40: Wenn Fertig, dann Ausgabe in uninstallation.log.
Zeile 43/44 Computernamen ermitteln und uninstallation.log auf Server schieben
Zeile 48 Verezichnis Rollout leeren, was ja dein Workpath ist.
Fragen:
1. Wieso in Zeile 48 auf einmal ein fester Pfad und keine Variable mehr? Irritiert mich.
2. Wieso erstellst du in Zeile 40 die Log nicht direkt da wo du sie im Anschluss hin kopierst? Schreib sie doch gleich auf den Server.
Gruß
Doskias
ich will dir ja nicht den Spass verderben, aber bei mir funktioniert:
$hostname = $env:computername
Copy-Item -Path "$workpath\irgendeine.log" -Destination "\\Fileserverablage\$hostname.log"
Ich verstehe aber dein Ende am Skript ehrlich gesagt nicht.
Ab Zeile 40: Wenn Fertig, dann Ausgabe in uninstallation.log.
Zeile 43/44 Computernamen ermitteln und uninstallation.log auf Server schieben
Zeile 48 Verezichnis Rollout leeren, was ja dein Workpath ist.
Fragen:
1. Wieso in Zeile 48 auf einmal ein fester Pfad und keine Variable mehr? Irritiert mich.
2. Wieso erstellst du in Zeile 40 die Log nicht direkt da wo du sie im Anschluss hin kopierst? Schreib sie doch gleich auf den Server.
Gruß
Doskias
Versuch es mal mit einem Wechsel von:
In:
In $Zielpfad sollte dann schon der richtige Name sein. ist zwar nicht schön, müsste aber funktionieren.
$hostname = $env:computername
Copy-Item -Path "$workpath\uninstallation.log" -Destination "\\m42\script-log\deployment\log\$hostname.log"
In:
$hostname = $env:computername
$Zielpfad ="\\m42\script-log\deployment\log\" + $hostname + ".log"
Copy-Item -Path "$workpath\uninstallation.log" -Destination $Zielpfad
In $Zielpfad sollte dann schon der richtige Name sein. ist zwar nicht schön, müsste aber funktionieren.