Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

Log schneller auswerten, Daten in Variable oder Array schreiben und darin suchen

$
0
0

hallo zusammen,

ich überlegen div. Variante um Exchange Logdateien schneller auszuwerten.

get-messagetrackinglog ist ok solange man nur 1 User auswertet, da bei 30 Logfile jedes File nur 1x gelesen wird. Hat man jedoch 100 User werden für jeden User 30x die Logs gelesen. Ich denke das ginge besser und schneller zb mit Import-csv oder get-content wenn man ohnehin alle Benutzer auswerten möchte, da ich dann gleiche jede Zeile lesen muss.

gibt es eine Möglichkeit, dass ich während des Imports wenn ich eine Zeile auswerte diesen User und TotalByte in eine Variable/tabellen/array (was man am besten so in Powershell machen würde) schreiben und wenn der gleiche User in weiteren Logs wieder vorkommt möchte ich die zusätzlichen Totalbyte bei ihm in der Variabler/Tabelle/ oder Array hinzufügen.

man muss es sich wie bei einer Datenbank vorstellen. Dort würde man in einer zweite Tabelle die User ablegen und mit Index versehen und braucht dann in dieser zweiten Tabelle nur mehr 100 User durchsuchen. Das ist viel effizienter. Ich kenne es selbst von SQL oder MS-Access so. 

die zweite Tabelle könnte ich auch in Powershell (wie in einer Datenbank bereits vorbelegen um es noch schneller zu machen), da es ohnehin nur Domain User sind.

würde mich über Ideen und Anregungen freuen. Vielleicht ist auch Powershell das falsche Werkzeug.


Chris


Check ob User Get-ADQuery nutzen darf

$
0
0

Hallo,

ich habe ein Script geschrieben welches überprüft ob AD Benutzer vorhanden sind oder Deaktiviert wurden. Sollte ein User nicht vorhanden bzw. deaktiviert worden sein. So wird sein Home Verzeichnis automatisch gelöscht.

Nun habe ich aber mit dem Gedanken gespielt, was wohl passiert wenn der User, der dieses Script ausführt, kein Recht hat die AD abzufragen. Nach diesem Schema würde das Script davon ausgehen, das es den Benutzer nicht gibt und den Ordner löschen.

Meine "Idee" wäre nun einen vorgeschalteten Check hinzuzufügen, welcher überprüft ob der User in der Lage ist die AD abzufragen. Diesen Check wollte ich aber so allgemein wie möglich halten. Sprich ich wollte nicht einfach einen mir bekannten Benutzer abfragen. So welche Konstanten können Sich ja immer Ändern und würden in der Zukunft zu Problemen führen.

Gibt es hier irgendetwas?

MfG

PowerShell Usergroup Stuttgart: Februar Treffen - Script Review

$
0
0

Am 23. Februar treffen wir uns zu einem informellen Treffen für einen gemeinsamen Script Review. Zu Gast sind wir hierfür bei der Reddoxx GmbH in Kirchheim-Teck, verkehrsnah zur A8, B10 und auch mit der S-Bahn erreichbar.

Gemeinsam gehen wir hier über Skripte, lösen Probleme, diskutieren Verbesserungsvorschläge und tauschen Tips und Tricks aus. Jeder ist herzlich eingeladen seine eigenen Werke oder PowerShell-Probleme mitzubringen.

Die formlose Anmeldung über Meetup würde uns freuen.

Wir freuen uns schon darauf euch zu treffen, 
Mit freundlichen Grüßen, 
Friedrich & Peter

PS: Für Rückfragen vor dem Treffen wendet euch gerne an: 
([convert]::FromBase64String("e9PBubfTwbW/S525wcvJscvLb8/N3bnT1b+5x8dJ1dfZ19e9sdPXS7e5") | %{ [char](($_ + 17) / 2) }) -join ""


There's no place like 127.0.0.1

Script erstellt nicht eine Aufgabe wie vorausgesetzt

$
0
0

Hallo zusammen

Ich habe hier ein Script, mit dem man eigentlich eine Aufgabe erstellen kann.
Script 

 $taskName = Read-Host "Name"
    $user = "username"
    $password = "username"
    $action = New-ScheduledTaskAction -Execute "%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-command path-to-powershell-script"

    $trigger = {
    if ($time -contains "daily") {
    New-ScheduledTaskTrigger -Daily  -AT $clock -DaysOfWeek $day
    $settings = New-ScheduledTaskSettingsSet
    $inputObject = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
    Register-ScheduledTask -TaskName $taskName -InputObject $inputObject -User $user -Password $password }

    elseif ($time -contains "weekly") {
    New-ScheduledTaskTrigger -Weekly  -AT $clock -DaysOfWeek $day
    $settings = New-ScheduledTaskSettingsSet
    $inputObject = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
    Register-ScheduledTask -TaskName $taskName -InputObject $inputObject -User $user -Password $password }

    elseif ($time -contains "monthly") {
    New-ScheduledTaskTrigger -Monthly  -AT $clock -DaysOfWeek $day
    $settings = New-ScheduledTaskSettingsSet
    $inputObject = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
    Register-ScheduledTask -TaskName $taskName -InputObject $inputObject -User $user -Password $password
    }
    }

Doch unglücklicherweise geht es nicht. Weiss jemand wieso?



Formularname mit Servername vergleichen

$
0
0

Hallo liebe Gemeinschaft,

ich hab mal wieder einen Anwendungsfall und ich bin einfach zu doof es auf die Reihe zu bekommen. Ich erläutere erst einmal was ich vor hab und was ich bereits habe.

Anwendungsfall:

es gibt formulare die heißen: Serverbeantragung_Servername.pdf

weiterhin habe ich in vmware Server mit Servernamen

ich will jetzt in dem Ordner in dem die Formulare liegen vergleichen ob für jeden Server in vmware ein Formular verfügbar ist.

Hiermit hole ich mir die Formularnamen:

$files = dir "K:\Formulare\Server-Beantragung"
foreach($file in $files){
$newname = ($file.Basename.replace("Serverbeantragung_","").replace('.pdf',''))

}

VM Namen erhalte ich mit folgendem Code:

Connect-VIServer XXXXXXXXX
$vms = Get-VM 


Vergleichen will ich hiermit

Compare-Object $vms $newname > C:\temp\diff5.csv

Aber leider funktioniert es nicht. Ich denke mein Fehler liegt an der Variablen $newname weil wenn ich mir diese anzeigen lasse steht nur ein wert drin und nicht mehrer bzw. die ganzen Werte der Formulare die im Ordner sind.

Für Tipps wäre ich sehr dankbar. Weiterhin wäre eine schönere Ausgabe des Vergleichs top.

Vielleicht sowas wie ne Datei oder Ausgabe wo drin steht für diesen "Server liegt kein Formular vor"

Für Hilfe wäre ich sehr dankbar.

Verzeichnisname auslesen und bestimmte AD-Gruppe zuweisen

$
0
0

Hallo zusammen,

ich arbeite in einem IT-Unternehmen und bin u.a. für die Softwareverteilung zuständig. Leider bin ich noch ein Powershell Neuling. Zu meinem Anliegen wir haben das Startmenü unter Windows7 auf einem Filer ausgelagert und die entsprechenden AD-Gruppen für die Software auf das Verzeichnis (mit Lese- und Schreibrechten) gelegt. Leider bekommen meine Kollegen das gerne mal hin das Startmenü Prod ausversehen zu löschen und das für Test  (ohne Berechtigungsgruppen) wieder rüber zu kopieren.

Meine Frage wäre besteht die Möglichkeit das ganze zu automatisieren?
Ideal wäre, wenn man per Skript die Startmenü-Verzeichnisse auslesen kann und die Gruppe Domain Users entfernt und die richtige Gruppe drauf setzt beispielsweise sieht das so aus.

Verezichnisname - Gruppe im AD

Mindjet Manager -> Mindjet_Manager

SAP Systeme -> SAP_Systeme

Falls nicht, wenn ich manuell die Gruppen wieder auf die Ordner zuweise. Kann ich per Powershell meine manuellen Schritte aufnehmen? Damit man beim nächhsten Mal die Berechtigungsstruktur schnell wiederherstellen kann.

Für Tipps und Lösungsansätze bin ich gerne offen.

Vielen Dank schonmal!

Import-CSV, Komma im Text

$
0
0

moin,

gibt es dafür eine Lösung seitens Import-CSV?

leider sind immer wieder in CSV Komma bei Texten. Diese sind unter Hochkomma.

zb.

feld1,feld2,feld3,,"[Forums] Import-CSV, Komma im Text",feld5

und so verrutscht dann die Object Zuordnung des Imports?


Chris

Skriptanpassung

$
0
0
Hallo,
ich habe folgendes Skript gefunden um VMWare Storage zu prüfen....funktioniert auch.
Ich würde nur gerne mehrere Datastores in dem einen Skript abfragen, bekomme es aber nicht hin.
Kann da evtl. jemand helfen?

Vielen Dank und Gruß
Dennis

# Check available size on datastores on VMWare ESX
#
# Revision History
# 2014-03-10    Willion van Es - Netdata [w.vanes@netdata.nl]    1.0 code initial created
# 2014-03-10    Robin Smit - Netdata [ r.smit@netdata.nl / info@robinsmit.nl ]
# To execute from within NSClient++
#
#[NRPE Handlers]
#check_vmfs_datastore=cmd /c echo C:\Scripts\Nagios_check_vmfs_datastore.ps1 | PowerShell.exe -Command -
#
# On the check_nrpe command include the -t 20, since it takes some time to load
# the vSphere cmdlet's.

if ( (Get-PSSnapin -Name VMware.VimAutomation.Core -ErrorAction:SilentlyContinue) -eq $null)
{
    add-pssnapin VMware.VimAutomation.Core
}
$connect = connect-viserver IP -user administrator@vsphere.local -password 'xxxx'  -WarningAction SilentlyContinue
$NagiosStatus = "0"
$NagiosDescription = ""
$datastorecheck = "vmware_data_01 (VMs)"


$datastores = get-datastore $datastorecheck | select-object Name,FreespaceGB | Sort Name

 ForEach ($datastore in $datastores)
{
    $datastorename = $datastore | select-object -ExpandProperty Name
    $datastoresize = $datastore | Select-Object  -ExpandProperty FreespaceGB
    $comment = "GB available"
    
    if ($NagiosDescription -ne "")
        {
            # Format the output for Nagios
            $NagiosDescription = ""
        }
    if ($datastoresize -lt 300)
        {
            if ($datastoresize -lt 200)
                {
                    #minder als 200GB vrij
                    $NagiosDescription = $NagiosDescription + $datastorename + " = " + $datastoresize + $comment
                    # Set the status to Critical.
                    $NagiosStatus = "2"
                    #echo     $datastorename $datastoresize " lt 200"
                }
            else
                {
    
                    $NagiosDescription = $NagiosDescription + $datastorename + " = " + $datastoresize + $comment
                           # Set the status to Warning.
                    $NagiosStatus = "1"
                    #echo     $datastorename $datastoresize " lt 300"
                }
        }
    if ($datastoresize -gt 300)
        {
                #meer als 300GB vrij
                $NagiosDescription = $NagiosDescription + $datastorename + " = " + $datastoresize + $comment
                # Set the status to failed.
                $NagiosStatus = "0"
                #echo     $datastorename $datastoresize " bg 300"
        }    

if ($NagiosStatus -eq "2")
{
    Write-Host "CRITICAL:" $NagiosDescription
    #$NagiosStatus = "0"
    #$NagiosDescription = ""

}     
if ($NagiosStatus -eq "1")
{
    Write-Host "Warning:" $NagiosDescription
    #$NagiosStatus = "0"
    #$NagiosDescription = ""

}
if ($NagiosStatus -eq "0")
{    
Write-Host "OK:" Datastore $datastorename has enough space available

}
        

exit $NagiosStatus        



        
        
        
} #end foreach


Cleanmanager Skript funktioniert nicht auf Server 2008 R2

$
0
0

Hallo zusammen,

ich versuche ein Cleanmanager Skript für verschiedene Server-Versionen zu erstellen. Leider ist auf dem Server 2008 R2 ja noch die Powershell Version 1.0 installiert und ich vermute, dass er damit Probleme hat. Leider setzt das Skript bei dem Server 2008 R2 die Registry-Einträge nicht, sodass der Cleanmanager mit den vordefinierten Parametern läuft.

Die "PathExist" Variable stellt nur fest, ob die .EXE und MUI in den Systemordnern enthalten sind.

Hier ist der Code von den Registry-Einträgen:

function doCleanup() { if ($global:PathExist = "true"){ Set-Location 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\' foreach ($item in $(Get-ChildItem).PSPath) { if (-not (Get-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue)) { New-ItemProperty -Path $item -Name 'StateFlags0011' -PropertyType DWord -Value 2 -ErrorAction SilentlyContinue -Force if ($global:CleanupWithoutProtocols -eq 1) { if (($item -like "*Memory Dump Files") -or ($item -like "*Setup Log Files") -or ($item -like "*System error memory dump files") -or ($item -like "*System error minidump files") -or ($item -like "*Windows Error Reporting Archive Files") -or ($item -like "*Windows Error Reporting Queue Files") -or ($item -like "*Windows Error Reporting System Archive Files") -or ($item -like "*Windows Error Reporting System Queue Files") -or ($item -like "*Windows Upgrade Log Files") -or ($item -like "*Windows Error Reporting Temp Files")) { Remove-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue -Force } } } else { if ($global:CleanupWithoutProtocols -eq 1) { if (($item -like "*Memory Dump Files") -or ($item -like "*Setup Log Files") -or ($item -like "*System error memory dump files") -or ($item -like "*System error minidump files") -or ($item -like "*Windows Error Reporting Archive Files") -or ($item -like "*Windows Error Reporting Queue Files") -or ($item -like "*Windows Error Reporting System Archive Files") -or ($item -like "*Windows Error Reporting System Queue Files") -or ($item -like "*Windows Upgrade Log Files") -or ($item -like "*Windows Error Reporting Temp Files")) { Remove-ItemProperty -Path $item -Name 'StateFlags0011' -ErrorAction SilentlyContinue -Force } } } } }

Write-Host 'Starte CleanMgr.exe...'
Start-Process -FilePath "cleanmgr" -ArgumentList '/sagerun:11', '/VERYLOWDISK' -Verb runAs -WindowStyle Hidden -Wait -ErrorAction SilentlyContinue

Write-Host 'Warte auf beenden des Cleanmanager und DismHost Prozesses'
Get-Process -Name cleanmgr,dismhost -ErrorAction SilentlyContinue | Wait-Process

Write-Host "Vorgang abgeschlossen. Gerät gereinigt."

}


Er zeigt mir in der Konsole dann zwar an, dass er die Set-Location übernommen hat, allerdings setzt er die Einträge nicht und Cleanmanager läuft mit den Standardparametern.

Hat jemand einen Tipp, wie man die Registry-Einträge zum laufen bekommt unter Version 1.0?

Vielen Dank im Voraus.

Mit freundlichen Grüßen

Matthias Roth



Bestimmte Werte aus einem String ausgeben

$
0
0

Hallo und schönen guten Tag,

wäre ja echt genial, wenn mir über diesem Weg jemand weiterhelfen kann. :)

Ich möchte mit der Powershell folgendes tun:

- Ich habe eine Textdatei, die von einem System exportiert wurde

- Der Inhalt ist eine Tabelle, bei der die Spalten mit Tabs getrennt sind.

- Mit Select-String springe ich nun in die richtige Zeile, da ich dort den Namen angebe.

-Jetzt möchte ich nun aus dieser Zeile, aus der die Powershell ja einen String macht, einen ganz bestimmten Inhalt wiederum als String ausgegeben bekommen.

Mit Split geht es nicht, da wohl nicht alle Reihen gleich sind.

Wie kann ich mir nun den Inhalt aus einer bestimmten Spalte aus der Textdatei rausfiltern?

Ht da jemand eine Idee?

Besten Dank!

get Content-Length from url

$
0
0

Hallo,

ich möchte gerne vor dem Download einer Datei dessen Größe wissen.

Nach etwas suche hatte ich das hier gefunden:

$webClient = New-Object System.Net.WebClient
$webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Open_Kitkat_Ger_D01_140307.pdf")
[Int64]$fileSize = $webClient.ResponseHeaders["Content-Length"]
Write-Host $fileSize


Das liefert mir auch die gewünschte Größe, jedoch funktioniert die Abfrage nur 2x, wenn ich das Script zum 3x starte, auch mit einer anderen url scheitert es mit folgendem Fehler:

+ $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Op ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

Wenn ich eine neue Console öffne funktioniert es wieder 2x.

Das hilft leider auch nicht:

Remove-Variable fileSize
Remove-Variable webClient

Kann mir jemand helfen?

Danke schon mal für die Hilfe.


Rückgabewert kann nicht verarbeitet werden.

$
0
0

Hallo liebe Leute,

Nachdem ich einen Import-csv mache, möchte ich gerne eine bestimmte Spalte in einer bestimmten Reihe auslesen. Das funktioniert auch. Das sieht ungefähr so aus:

$user = $table1 | Where-Object { $_.Name -like "$user*" }
$zutritt = $user | Select-Object "Zutritt"
$x = $zutritt | Format-wide

Das Problem bei der ganzen Sache ist, dass er mit $x nichts anfangen kann, obwohl die Variable einen Wert enthält. Wenn ich die Variable einzeln ausführe, gibt er mir einen Wert. Sobald ich aber z. B. (write-host) davorschreibe, kann er damit nichts mehr anfangen. Gibt es dafür einen Trick.

Danke euch für eine Lösung !

Beste Grüße


Regular Expressions einbindung eines - in einer Prüfstring

$
0
0

Hallo Kollegen,

ich versuche gerade ein eine Prüfung mittels Regex optional einen - abprüfen zu lassen.

Bislang sieht der String so aus:

$RegexTestString = '^([0-3][0-9]).([0-1][0-9]).20([1-9][0-9]);([A-Za-z]{3,})$'

im hinteren Teil nach dem ; möchte isch gerne noch ein "-" als erlaubtes Zeichen.

Könnt ihr mir hier helfen?

Viele Grüße

Tim

Angemeldete Benutzer am Server

$
0
0

Hallo,

ich habe mich gerade erschrocken, dass es so richtig kein CMD'let gibt um angemeldete User an einem Server zu finden und abzumelden.

Es gibt zwar etwas  für Remotedesktop Benutzer aber jedoch nicht für lokal angemeldete Benutzer.

Habt ihr einen Tipp für mich?

Ich wollte gerne, im Zusammenhang mit einem anderen Script, die lokalen angemeldeten User abmelden.Hier habe ich aber nur quser.exe gefunden.

Das Ergebnis von quser.exe ist aber nicht so einfach durch eine Pipe zu schicken.

Kann mir jemand helfen?

Ich danke euch!


Toni


Powershell-Ausgabe in ein Excel/CSV-Dokument schreiben

$
0
0

Hallo,

ich benötige beim Erstellen eines Scriptes Unterstützung. Und zwar möchte ich ein Script in Powershell erstellen, welches die Serienummer und die MAC-Adresse des eigenen PCs in eine Exel/CSV-Datei schreibt. Sollte das Script auf einem anderen PC ausgeführt werden, sollte deren Serienummer/MAC in die nächste Zeile des Excel/CSV-Dokumentes geschrieben werden.Ist das möglich?

Vielen Dank im Voraus!



Export AD nach Excel für weitergehende Bearbeitung

$
0
0

Guten Morgen zusammen,

aktuell hänge ich mit Powershell etwas fest.

Ich möchte gerne AD-Benutzer nach Excel exportieren.

Generell funktioniert der Export - allerdings habe ich " in der Ausgabedatei. Diese würde ich gerne vermeiden da ich die Datei anschließend gerne weiterbearbeiten möchte. Hat jemand einen Tipp für mich? :-)

$path = Split-Path -parent "C:\Testpfad\*.*"
$LogDate = get-date -f yyyyMMddhhmm
$csvfile = $path + "\Export_$logDate.csv"
Import-Module ActiveDirectory

$SearchBase = "OU=Test,DC=testDC,DC=testDC"
$GetAdminact = Get-Credential

$ADServer = 'Test-Server'

Select-Object @{Label = "First Name";Expression = {$_.GivenName}},
@{Label = "Last Name";Expression = {$_.Surname}},
@{Label = "Display Name";Expression = {$_.DisplayName}},
@{Label = "Logon Name";Expression = {$_.sAMAccountName}},
@{Label = "Job Title";Expression = {$_.Title}},
@{Label = "Full address";Expression = {$_.StreetAddress}},
@{Label = "Post Code";Expression = {$_.PostalCode}},
@{Label = "State";Expression = {$_.st}},
@{Label = "City";Expression = {$_.City}},
@{Label = "Country/Region";Expression = {if (($_.Country -eq 'GB')  ) {'United Kingdom'} Else {''}}},
@{Label = "Company";Expression = {$_.Company}},
@{Label = "Description";Expression = {$_.Description}},
@{Label = "Department";Expression = {$_.Department}},
@{Label = "Office";Expression = {$_.OfficeName}},
@{Label = "Raum";Expression = {$_.Office}},
@{Label = "Telefon Buero";Expression = {$_.OfficePhone}},
@{Label = "Telefon Mobil";Expression = {$_.MobilePhone}},
@{Label = "Fax";Expression = {$_.Fax}},
@{Label = "Info";Expression = {$_.Info}},
@{Label = "Email";Expression = {$_.Mail}},
@{Label = "Manager";Expression = {%{(Get-AdUser $_.Manager -server $ADServer -Properties DisplayName).DisplayName}}}| 

Export-Csv -Path $csvfile -NoTypeInformation

Ad Groupen von einem Computer zu einem anderen Computer übernehmen

$
0
0

moin,

ich wollte diesen funktionierend  Code jetzt mit einem Einzeiler lösen

$x = Get-adcomputer 'PCA' -properties Memberof
foreach($y in $x.memberof){
ADD-ADGroupMember -id $y -members 'PCB$'
}

Wie wäre die richtige Schreibweise bei der Variable

Get-adcomputer 'PCA' -properties Memberof  | foreach{ADD-ADGroupMember -id $_.memberOf -members 'PCB$' }


Chris

Änderungsdatum eines Registry Wertes ausgeben lassen

$
0
0

Hallo,

könnte mir jemand vielleicht sagen, wie der Syntax lautet, wenn ich mir mit Powershell das letzte Änderungsdatum, eines bestimmten Registry Wertes ausgeben lassen möchte?

Es gibt wohl Registry Scanner die sowas können. Da muss es ja irgendwie auch mit Powershell gehen...

Buttons in Formular automatisch erzeugen

$
0
0

Hallo Leute,

ich habe ein Problem: Ich möchte ein Formular erzeugen, das beim Aufruf die Namen der Hyper-V Hosts aus der Datenbank des SCVMM liest und abhängig von der Anzahl der gefundenen Server die Größe des Formulars festlegt. Dann sollen dort für jeden Server eine Schaltfläche, mit dem Namen des Servers in fünf Spalten und soviel Zeilen, wie benötigt eingefügt werden. Bei Betätigung einer Schaltfläche soll dann später eine Funktion ausgeführt werden, die den Namen des Servers übergeben bekommt. Zur Zeit habe ich ein "Write-Host" eingesetzt. Es wird immer nur der Name der letzten Schaltfläche ausgegeben.

Wie bekomme ich es hin, dass die Schaltflächen die eigenen Namen ausgeben/ich die Objekte in der Schleife indizieren und hochzählen kann? In C#, VB und VBA geht es doch auch. Ich habe bisher einiges versucht, was aber keinen Erfolg brachte:
- $OKButton[$i]
- $OKButton+$i.ToString()
...

Mein Code:

# Schleife
$Zeile = 1
$Spalte = 1
for ($i = 0; $i -lt $Anzahl; $i++) {
    $j = [Math]::Truncate($i/5)    
    $k = $i % 5
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(($k*100+6),($j*25+6))
    $OKButton.Size = New-Object System.Drawing.Size(100,25)
    $OKButton.Text = $HVs[$i]
    $OKButton.Name = "Button$i"
    $OKButton.BackColor = "Green"
    $OKButton.ForeColor = "White"
    $OKButton.DialogResult = "OK"
    $OKButton.Add_Click({ Write-Host $OKButton.Name})
    $objForm.Controls.Add($OKButton)
}

Grüße,

Thomas

Mit Powershell in Excel den Filter Erneut anwenden

$
0
0

Moin liebe Forumsuser,

ich habe bis jetzt noch nichts zum Thema gefunden, aber vielleicht habe ich auch was übersehn. Ich will eigentlich was ganz einfaches, ich habe eine Excel-Datei die hat festgelegte Filter. Ich füge über Powershell dann Daten hinzu, leider sortieren sich die neuen Daten dann nicht. Wenn ich die Excel öffne sehe ich dann die die neuen Einträge total unsortiert. Wenn ich jetzt auf Filter Erneut anwenden drücke, werden die Daten sortiert. Aber dieses drücken auf Filter Erneut anwenden könnte ich doch sicher auch mit Powershell machen oder?

Die Datei will ich sortieren

$ExcelApp = New-Object -ComObject Excel.Application
$ExcelApp.Visible = $TRUE
$Workbook = $ExcelApp.WorkBooks.Open("D:\Powershell\Testdaten\TEST.xlsx")
$Worksheet = $ExcelApp.WorkSheets.item(1)
$Worksheet.AutoFilter
$ExcelApp.Application.DisplayAlerts = $False
$Workbook.SaveAs("D:\Powershell\Testdaten\TEST.xlsx")
$ExcelApp.Application.DisplayAlerts = $True
$ExcelApp.Quit()
$ExcelProcesses = Get-Process Excel
$ExcelProcesses | ForEach {Stop-Process ($_.Id)}

Das ist das was ich bis jetzt habe.

Ich hoffe mir kann jemanden helfen.

Grüße hRoICE

Viewing all 2314 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>