EmmKay
-
Gesamte Inhalte
9 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von EmmKay
-
-
class Software { [string]$Datei [string]$Verzeichnis [string]$Computer [string]$Benutzer [DateTime]$StartZeit } @( New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC001';Benutzer='1234';StartZeit='07:15'} New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='08:40'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='10:20'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC002';Benutzer='5678';StartZeit='10:20'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:SystemDrive)\Project1\";Computer='PC003';Benutzer='9090';StartZeit='10:20'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC002';Benutzer='5678';StartZeit='11:20'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='11:25'} New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='12:30'} New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='14:25'} New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='18:30'} New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='19:00'} New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC001';Benutzer='1234';StartZeit='19:50'} ) | Sort-Object -Property Datei | Group-Object -Property Datei | Export-Csv -Path 'Stat_ProjectsFiles.csv' -NoTypeInformation # Gewünschte Ausgabe in der Csv-Datei # Datei | Informationen # -------------+--------------------------------- # Projekt1.exe | C:\Program Files\Project1\, 1234 # | C:\Program Files\Project1\, 5678 # | C:\Project1\, 9090 # Projekt2.exe | C:\Program Files\Project2\, 1234 # | C:\Program Files\Project2\, 5678
Gerade stehe ich auf dem Schlauch und bekomme die gewünschte Ausgabe nicht hin.
Über einen Anstoß in die richtige Richtung würde ich mich sehr freuen.
-
Am 15.3.2024 um 17:59 schrieb Sunny61:
Den Befehl könnt ihr im Computer Startup Skript hinterlegen oder als Geplanten Task über die Group Policy Preferences rausschicken.
Die Variante mit Startup Skript funktioniert wie oben beschrieben nicht. Die Varianten mit der Geplanten Aufgaben brachte endlich den erwünschten Erfolg.
- 1
-
vor 1 Stunde schrieb daabm:
# as an HRESULT: Severity: FAILURE (1), FACILITY_WIN32 (0x7), Code 0x522
# for hex 0x522 / decimal 1314
ERROR_PRIVILEGE_NOT_HELD winerror.h
# A required privilege is not held by the client.Gibt es dafür einen Workaround wie ich die Laufwerksverschlüsselung beim Rechnerstart aktiviere? Mit Sicherheit bin ich nicht der Einzige, der versucht, per Startup-Skript BitLocker zu aktivieren. Die Arbeit mich auf jedem Rechner remote zu verbinden, wollte ich mir ersparen?
Über Ideen und jede Art von Hilfe bin ich sehr dankbar.
M
-
vor 19 Stunden schrieb Sunny61:
Lt. Beschreibung ist e zwar nicht nötig, aber probieren kannst Du das Script trotzdem: https://learn.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/cc749026(v=ws.10)?redirectedfrom=MSDN
Das Skript Add-TPMSelfWriteACE.vbs habe ich ausgeführt.
Mein Skript habe ich leicht erfolgreich angepasst
<# #Requires -RunAsAdministrator #> $directory = '\\server\share' $filename = 'Transcript-{0}.txt' -F $env:COMPUTERNAME Start-Transcript -Path $(Join-Path -Path $directory -ChildPath $filename) if( (Get-Tpm).TpmPresent ) { $bl_volume = Get-BitLockerVolume -MountPoint $env:SystemDrive $bl_status = $bl_volume.VolumeStatus $bl_protection = $bl_volume.ProtectionStatus if (($bl_status -eq 'FullyDecrypted') -or ($bl_protection -eq 'Off')) { #TODO: Error handling Enable-BitLocker -MountPoint $env:SystemDrive -EncryptionMethod XtsAes256 -RecoveryPasswordProtector -SkipHardwareTest #TODO: Check status } else { "'$($env:SystemDrive)' wurde mit BitLocker verschlüsselt." } } Stop-Transcript
Leider kommt es immer noch zu diesem Fehler:
Add-TpmProtectorInternal : Dem Client fehlt ein erforderliches Recht. (Ausnahme von HRESULT: 0x80070522) In C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitLocker\BitLocker.psm1:2095 Zeichen:31 + ... $Result = Add-TpmProtectorInternal $BitLockerVolumeInternal.MountPo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Add-TpmProtectorInternal Add-TpmProtectorInternal : Dem Client fehlt ein erforderliches Recht. (Ausnahme von HRESULT: 0x80070522)
Zur Ausnahme von HRESULT 0x80070522 konnte ich noch nichts brauchbares finden. Vielleicht hat der Fehler auch nichts mit dem Speichern der Wiederherstellungsschlüssel im Verzeichnisdienst zu tun?
Vielen Dank für Eure Mithilfe.
M
-
-
Hallo Zusammen.
Per Startup-Skript möchte ich gerne die BitLocker-Laufwerksverschlüsselung aktivieren, da sich sämtliche Rechner außerhalb meines Standortes befinden.
#Requires -RunAsAdministrator $directory = '\\Server\Share$' $filename = 'Transcript-{0}.txt' -f $env:COMPUTERNAME Start-Transcript -Path $(Join-Path -Path $directory -ChildPath $filename) if( (Get-Tpm).TpmPresent ) { $volume = Get-BitLockerVolume -MountPoint $env:SystemDrive if ( $volume.ProtectionStatus -eq 'Off' ) { if ( ($volume.KeyProtector | Where-Object KeyProtectorType -eq 'RecoveryPassword').Length -eq 0 ) { Add-BitLockerKeyProtector -MountPoint $env:SystemDrive -RecoveryPasswordProtector } Enable-BitLocker -MountPoint $env:SystemDrive -EncryptionMethod XtsAes256 -TpmProtector } else { 'BitLocker ist aktiviert.' } } Stop-Transcript
Per Gruppenrichtlinie wird der Wiederherstellungsschlüssel in der Domäne gespeichert. Wird das Skript per Domänenadmin ausgeführt, wird die Laufwerksverschlüsselung aktiviert und der Wiederherstellungsschlüssel in der Domäne gespeichert. Sobald das Skript beim Starten der Rechners aufgeführt wird, kommt es zum Fehler: Dem Client fehlt ein erforderliches Recht. (Ausnahme von HRESULT: 0x80070522)
Hier ist das vollständige Transcript:
Welches Recht fehlt dem Rechner? Ich gehe davon aus, dass dem Computer Rechte im Active Directory fehlen. Diese habe ich auch schon (ohne Erfolg) angepasst.
In dieser Angelegenheit würdet Ihr mir sehr helfen.
M
-
Noch nicht perfekt ....
ZitatAdd-Type -AssemblyName System.Windows.Forms, System.Drawing $FormName = "Script" $MaxX = "300" #Am besten mit STRG+H alle Zahlen von "300" auf die gewünschte Größe ersetzen $MaxY = "450" #Am besten mit STRG+H alle Zahlen von "450" auf die gewünschte Größe ersetzen function Add-Button { param( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [System.String] $Name, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $PosX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $Posy, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $SizeX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $SizeY, [parameter(Mandatory=$true)] [ValidateSet($true, $false)] [System.Boolean] $Visible, [parameter(Mandatory=$true)] [ValidateSet("OK", "Cancel", "None")] [System.Windows.Forms.DialogResult] $Result, # [AllowEmptyString()] # [ValidateSet($true, $false)] # [System.Boolean] # $AddClickEventHandler, [AllowEmptyString()] [System.Management.Automation.ScriptBlock] $ClickEventHandler ) $newButton = New-Object System.Windows.Forms.Button $newButton.Name = "Button$Name" $newButton.Location = New-Object System.Drawing.Point($PosX, $PosY) $newButton.Size = New-Object System.Drawing.Size($SizeX, $SizeY) $newButton.Text = $Name $newButton.DialogResult = $Result $newButton.Visible = $Visible # if ($AddClickEventHandler) { $newButton.Add_Click($ClickEventHandler) # } $newButton } function Add-Label { param( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [System.String] $Name, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $PosX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $PosY, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $SizeX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $SizeY, [parameter(Mandatory=$true)] [ValidateSet($true, $false)] [System.Boolean] $Visible, [AllowEmptyString()] $Text ) $newLabel = New-Object System.Windows.Forms.Label $newLabel.Name = "Label$Name" $newLabel.Location = New-Object System.Drawing.Point($PosX, $PosY) $newLabel.Size = New-Object System.Drawing.Size($SizeX, $SizeY) $newLabel.Text = $Text $newLabel.Visible = $Visible $newLabel } function Add-Box{ param( [parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [System.String] $Name, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $PosX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $PosY, [parameter(Mandatory=$true)] [ValidateRange(0,300)] [System.Int32] $SizeX, [parameter(Mandatory=$true)] [ValidateRange(0,450)] [System.Int32] $SizeY, [parameter(Mandatory=$true)] [ValidateSet($true, $false)] [System.Boolean] $Visible, [parameter(Mandatory=$true)] [ValidateSet("List", "Text", "Search")] [System.String] $ControlType, [AllowEmptyString()] [System.String] $Entries, # $Input <- automatische PS-Variable [AllowEmptyString()] [System.String] $Text = "" ) if($ControlType -eq "List") { $newControl = New-Object System.Windows.Forms.ListBox $newControl.Name = "ListBox$Name" $newControl.SelectionMode = 'MultiExtended' $newControl.Height = $SizeY foreach($Entry in $Entries) { [void]$newControl.Items.Add($Entry) } } elseif ($ControlType -eq "Text") { $newControl = New-Object System.Windows.Forms.TextBox $newControl.Name = "TextBox$Name" $newControl.Text = $Text } $newControl.Location = New-Object System.Drawing.Point($PosX, $Posy) $newControl.Size = New-Object System.Drawing.Size($SizeX, $SizeY) $newControl.Visible = $Visible $newControl } $form = New-Object System.Windows.Forms.Form $form.Text = $FormName $form.Size = New-Object System.Drawing.Size($MaxX, $MaxY) $form.StartPosition = 'CenterScreen' $form.Topmost = $True $OKButton = Add-Button -Name "OK" -PosX 75 -PosY 385 -SizeX 75 -SizeY 23 -Visible $True -Result OK $CancelButton = Add-Button -Name "Cancel" -PosX 150 -PosY 385 -SizeX 75 -SizeY 23 -Visible $True -Result Cancel $NoPrtButton = Add-Button -Name "NoPrinter" -PosX 10 -PosY 305 -SizeX 260 -SizeY 23 -Visible $True -Result None -ClickEventHandler { $label2.Visible = $True } $label1 = Add-Label -Name "Text1" -PosX 10 -PosY 10 -SizeX 280 -SizeY 30 -Visible $True -Text 'Wähle die Drucker aus (Mit "STRG" können mehrere ausgewählt werden)' $label2 = Add-Label -Name "Text2" -PosX 10 -PosY 330 -SizeX 280 -SizeY 30 -Visible $False -Text 'Gib den vollständigen Druckernamen ein:' $text = Add-Box -Name "Text" -PosX 10 -PosY 350 -SizeX 260 -SizeY 20 -Visible $True -ControlType Text $form.Controls.Add($OKButton) $form.Controls.Add($CancelButton) $form.Controls.Add($NoPrtButton) $form.Controls.Add($label1) $form.Controls.Add($label2) $form.Controls.Add($text) $result = $form.ShowDialog()
-
Am 22.6.2022 um 11:12 schrieb Lukasb14:
Ich habe/möchte eine Powershell GUI mit functions erstellen, jedoch weiß ich nicht wie ich Beispielsweise ein Label ein/ausblenden kann (Siehe letzten 15 Zeilen im Code)
Alle Steuerelement erben von der [System.Windows.Forms.Control]-Klasse die Visible-Eigenschaft. Mit Hilfe dieser Eigenschaften lassen sich Deine Labels ein- und ausblenden. Control.Visible Eigenschaft
Ich würde das Steuerelement von der Funktionen zurückgeben lassen und einer Variable zuweisen. Alle Steuerelement würde ich auch grundsätzlich dem Formular hinzufügen Die Sichtbarkeit des Steuerelements steuerst Du ja über die Visible-Eigenschaft.
Damit das Click-Ereignis funktioniert, muss Du dem Ereignis ein Scriptblock übergeben.
Leicht angepasster Code
Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $Windowname = "Script" $xmax = "300" #Am besten mit STRG+H alle Zahlen von "300" auf die gewünschte Größe ersetzen $ymax = "450" #Am besten mit STRG+H alle Zahlen von "450" auf die gewünschte Größe ersetzen function Button{ param( [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name, [parameter(Mandatory=$true)][ValidateRange(0,300)] $PosX, [parameter(Mandatory=$true)][ValidateRange(0,450)] $PosY, [parameter(Mandatory=$true)][ValidateRange(0,300)] $SizeX, [parameter(Mandatory=$true)][ValidateRange(0,450)] $SizeY, [parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visible, [parameter(Mandatory=$true)][ValidateSet("OK", "Cancel", "None")]$Result, [AllowEmptyString()][ValidateSet($true, $false)]$AddClick, [AllowEmptyString()]$Click ) $ButtonName = "Button" + $Name $ButtonName = New-Object System.Windows.Forms.Button $ButtonName.Location = New-Object System.Drawing.Point($posx,$posy) $ButtonName.Size = New-Object System.Drawing.Size($Sizex,$Sizey) $ButtonName.Text = $Name $ButtonName.DialogResult = $Result if($AddClick -eq $true){ $ButtonName.add_click( $Click ) } $ButtonName.Visible = $Visible $ButtonName } $form = New-Object System.Windows.Forms.Form $form.Text = $Windowname $form.Size = New-Object System.Drawing.Size($xmax,$ymax) $form.StartPosition = 'CenterScreen' $OKButton = Button -Name "OK" -PosX 75 -PosY 385 -SizeX 75 -SizeY 23 -Visible $True -Result OK $CancelButton = Button -Name "Cancel" -PosX 150 -PosY 385 -SizeX 75 -SizeY 23 -Visible $True -Result Cancel $NoPrtButton = Button -Name "NoPrinter" -PosX 10 -PosY 305 -SizeX 260 -SizeY 23 -Visible $True -Result None -AddClick True -Click {[System.Windows.Forms.Messagebox]::Show("Hello")} $form.Controls.Add($OKButton) $form.Controls.Add($CancelButton) $form.Controls.Add($NoPrtButton) $result = $form.ShowDialog()
PowerShell - Frage zu Group-Object
in Windows Forum — Scripting
Geschrieben
Die gewünschte Ausgabe habe ich oben sehr unglücklich dargestellt. Die Daten, die in der Spalte Informationen sind, sollen pro Programm in einer Zelle gespeichert werden. Dabei ist das Trennzeichnen der einzelnen Informationen völlig egal.
Die Lösung liegt auf der Hand. Einfach ein HashTable benutzen .