opsi-client-install script -Password Eingabe Sternchen
Verfasst: 13 Aug 2025, 09:08
Hallo,
ab und zu nutze ich ein Batch um den opsi client von Hand zu installieren.
Da mich bei einem Batch nervte das die Passworteingabe im Klartext erscheint, habe ich mich an ein PS script gemacht.
leider ließen sich die Argumente bei der oca-installation-helper.exe nicht übergeben, so das dieser Aufruf dann von dem PS script über eine externes Batch erfolgt, aber die passworteingabe zum Verbinden mit dem depot wird nun durch Sternchen ersetzt.
Powershell script:
# PS script für ospi Client Installation
# Ersteller: Thiede
# das PS script elevated ausführen
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
$CommandLine = "-NoExit -c cd '$pwd'; & `"" + $MyInvocation.MyCommand.Path + "`""
Start-Process powershell -Verb runas -ArgumentList $CommandLine
Exit
}
}
# Function um später die Variable $Password -AsSecureString wieder als lesbarer Text wandeln.
function pwEncrypt($password) {
return $([System.Runtime.InteropServices.Marshal]::PtrToStringAuto($([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))))
}
$Username = Read-Host -Prompt "Username:"
$Password = Read-Host -Prompt "Passwort:" -AsSecureString # AsSecureString verschlüsselt das PW
# über die obige Funktion das decrypte Passwort in eine andere Variable schreiben
$pw = $(pwEncrypt($Password))
# Netzlaufwerkverbindung - Passwort aus der Variablen $pw nehmen
net use K: \\141.71.xxx.xxx\opsi_depot /USER:$Username $pw /PERSISTENT:NO
# oca-installation-helper.exe über die bat aufrufen
& .\Client-Agent-Install-start.bat
# netzlaufwerk wieder löschen
net use K: /DELETE /yes
_______________________________
Batch file: Client-Agent-install-start.bat:
K:\opsi-client-agent\oca-installation-helper.exe --service-address https://141.71.xxx.xxx:4447 --service-username AdminName --service-password {crypt}xxxxxxxxxxxx123456789= --non-interactive
Gruß
Thomas
ab und zu nutze ich ein Batch um den opsi client von Hand zu installieren.
Da mich bei einem Batch nervte das die Passworteingabe im Klartext erscheint, habe ich mich an ein PS script gemacht.
leider ließen sich die Argumente bei der oca-installation-helper.exe nicht übergeben, so das dieser Aufruf dann von dem PS script über eine externes Batch erfolgt, aber die passworteingabe zum Verbinden mit dem depot wird nun durch Sternchen ersetzt.
Powershell script:
# PS script für ospi Client Installation
# Ersteller: Thiede
# das PS script elevated ausführen
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
$CommandLine = "-NoExit -c cd '$pwd'; & `"" + $MyInvocation.MyCommand.Path + "`""
Start-Process powershell -Verb runas -ArgumentList $CommandLine
Exit
}
}
# Function um später die Variable $Password -AsSecureString wieder als lesbarer Text wandeln.
function pwEncrypt($password) {
return $([System.Runtime.InteropServices.Marshal]::PtrToStringAuto($([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))))
}
$Username = Read-Host -Prompt "Username:"
$Password = Read-Host -Prompt "Passwort:" -AsSecureString # AsSecureString verschlüsselt das PW
# über die obige Funktion das decrypte Passwort in eine andere Variable schreiben
$pw = $(pwEncrypt($Password))
# Netzlaufwerkverbindung - Passwort aus der Variablen $pw nehmen
net use K: \\141.71.xxx.xxx\opsi_depot /USER:$Username $pw /PERSISTENT:NO
# oca-installation-helper.exe über die bat aufrufen
& .\Client-Agent-Install-start.bat
# netzlaufwerk wieder löschen
net use K: /DELETE /yes
_______________________________
Batch file: Client-Agent-install-start.bat:
K:\opsi-client-agent\oca-installation-helper.exe --service-address https://141.71.xxx.xxx:4447 --service-username AdminName --service-password {crypt}xxxxxxxxxxxx123456789= --non-interactive
Gruß
Thomas