Verschiedene nützliche Powershell Funktionen
Liste aller Outlook und Word Addins
Outlook, bzw. Word muss gestartet sein. Funktioniert für Outlook nur nur, wenn der Benutzer auch ein Outlook Konto hat, in dessen Kontext der Befehl ausgeführt wird.
(New-Object -Com Outlook.Application).COMAddins | select Description,ProgId
(New-Object -Com Word.Application).COMAddins | select Description,ProgId
Registry auf vorhandenen Eintrag prüfen
function Test-RegistryValue { param ( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()]$Path, [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()]$Value ) if (-not (test-path $path)) { return $false } try { Get-ItemProperty -Path $Path | Select-Object -ExpandProperty $Value -ErrorAction Stop | Out-Null return $true } catch { return $false } }
Anmeldestatus von Benutzern auf einem Terminal Server als Objekt
function get-QUserObj($hostname) { $benutzer = (quser /server:$hostname | ? { ($_ -notmatch "BENUTZERNAME") -and ($_ -notmatch "admin*") }) $objUser = @() if ($benutzer) { $benutzer | foreach { $tmp = ($_ -split ' +') $obj = New-Object -TypeName PSObject Add-Member -InputObject $obj -MemberType NoteProperty -Name UserName -Value $tmp[1] Add-Member -InputObject $obj -MemberType NoteProperty -Name SessionName -Value $tmp[2] Add-Member -InputObject $obj -MemberType NoteProperty -Name ID -Value $tmp[3] Add-Member -InputObject $obj -MemberType NoteProperty -Name State -Value $tmp[4] Add-Member -InputObject $obj -MemberType NoteProperty -Name IdleTime -Value $tmp[5] Add-Member -InputObject $obj -MemberType NoteProperty -Name LogonTime -Value $tmp[6] $objUser += $obj } } return $objUser }
Mit folgendem Befehl kann ein Benutzer zum Beispiel abgemeldet werden:
$users = get-QUserObj($hostname)
logoff $users[0].SessionName /SERVER:$hostname
Logdatei schreiben
function Write-Log($msg, $logfile) {
$logdate = Get-Date -Format "dd.MM.yyyy HH:mm:ss: "
"$($logdate)$($msg)" | Out-File -Append -FilePath $logfile
}
Auf vorhandenes Windows Update prüfen
function Is-WindowsUpdateInstalled {
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]$kbid
)
$kb = get-wmiobject -class win32_quickfixengineering | where {$_.HotFixID -eq "KB$($kbid)"}
if (!$kb) {
return $false
}
return $true
}
Inhalt von Klammern aus einem String entfernen
function Remove-ParenthesesContent { [CmdletBinding()] param ( [Parameter(Mandatory=$true, ValueFromPipeline=$true)] [string]$InputString, [Parameter(Mandatory=$true)] [ValidateSet("Round", "Curly", "Square")] [string]$Type ) process { switch ($Type) { "Round" { $regex = "\s*\(([^()]*)\)\s*"; $replacement = ' ' } "Curly" { $regex = "\s*\{([^{}]*)\}\s*"; $replacement = ' ' } "Square" { $regex = "\s*\[([^\[\]]*)\]\s*"; $replacement = ' ' } } $OutputString = $InputString -replace $regex, $replacement Write-Output $OutputString } }