itallrounder
Goto Top

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.

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

Content-ID: 1069562812

Url: https://administrator.de/forum/ps-computername-als-dateiname-1069562812.html

Ausgedruckt am: 22.12.2024 um 13:12 Uhr

Doskias
Doskias 21.07.2021 um 14:52:55 Uhr
Goto Top
Moin,

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"  
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
ITAllrounder
ITAllrounder 21.07.2021 um 15:32:27 Uhr
Goto Top
Zeile 48 habe ich die Variable angepasst.
War noch vom testen ein fixer Pfad.

TJa bei mir macht er es weder mit dem Copy Item noch bei dem erstellen der Datei, dass die Variable $hostname im Dateienamen steht.
Habe es auch erst probiert, beim erstellen direkt auf dem Share aber auch hier scheitert es an der Variablen im Namen
Doskias
Doskias 21.07.2021 um 15:37:38 Uhr
Goto Top
Versuch es mal mit einem Wechsel von:
$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.