-
Gesamte Inhalte
2.083 -
Registriert seit
-
Letzter Besuch
Alle erstellten Inhalte von BOfH_666
-
PowerShell - nach Datei typ suchen
BOfH_666 antwortete auf ein Thema von =o-n-e= in: Windows Forum — Scripting
hmmmm ... wie könnte man sowas nur rausbekommen?? ... ich habe ne verrückte Idee - probier es doch einfach mal! :p ;) :D Powershell nimmt Dir eine Menge Arbeit ab ... Du kannst einfach die Größe angeben, dann den Teiler angeben für die Einheit die Du haben willst und voilá - Powershell rechnet es für Dich um .... so hier z.B. 5242880 / 1MB Du kannst in Variablen packen was auch immer Du gerne möchtest. Was willst Du denn eigentlich damit anfangen? Vielleicht gibt es ja eine ganz andere Lösung für Deine Aufgabe .... -
PowerShell - nach Datei typ suchen
BOfH_666 antwortete auf ein Thema von =o-n-e= in: Windows Forum — Scripting
Oooops ... ja lustig ... auf die Powershell-Zeile hatte ich gar nicht geachtet .... so sollte es eigentlich funktionieren: Get-ChildItem -Path Y:\* -Recurse -Include *.jpg, *.neg | Where-Object {$_.length -gt 100mb -and $_.Directory -notmatch 'folder1|folder2'} | Sort-Object -Property length | Format-Table fullname, length -AutoSize -
PowerShell - nach Datei typ suchen
BOfH_666 antwortete auf ein Thema von =o-n-e= in: Windows Forum — Scripting
Dann kannst Du jetzt natürlich immernoch robocopy anweisen den Header und die Zusammenfassung wegzulassen, die Liste per Powershell einlesen und weiterparsen .... :-D Also so dann .... robocopy Y:\ c:\temp *.jpg *.nef /L /S /XD Folder1 Folder2 /MIN 104857600 /FP /NJH /NJS /NDL /XX -
PowerShell - nach Datei typ suchen
BOfH_666 antwortete auf ein Thema von =o-n-e= in: Windows Forum — Scripting
Ich weiß, es klingt ein bissl "von hinten durch die Brust ins Auge", aber wenn es Dir nur ums Auflisten geht (Du hast ja schließlich ein "ft" am Ende, kannst Du dafür prima robocopy benutzen. Mit der Option /L werden die gefundenen Dateien nur aufgelistet - nicht kopiert. Mit der Option /XD schließt Du Verzeichnisse aus und mit /MIN beschränkst Du die Suche auf Dateien einer bestimmten Mindesgröße .... und schneller dürfte robocopy vermutlich auch noch sein. robocopy Y:\ c:\temp *.jpg *.nef /L /S /XD Folder1 Folder2 /MIN 104857600 /FP ... also so sollte es eigentlich gehen ... und es lässt sich auch noch erweitern wenn Du magst. ;-) -
User in einer OU, die Mitglied einer bestimmten Gruppe sind, finden
BOfH_666 antwortete auf ein Thema von Michael Müller in: Windows Forum — Scripting
Was heißt "Es funktioniert nicht"? Bekommst Du einen Fehler, oder bekommst Du nicht die Ausgabe, die Du erwartest? Probier ma so: $SearchBase = 'OU=OU_Name,DC=domain,DC=com' Get-ADUser -Filter * -SearchBase $SearchBase -Properties MemberOf | Where-Object {$_.MemberOf -contains 'hier muss der DistinguishedName deiner Security Gruppe rein'} | Sort-Object -Property Name | Select-Object -Property Name -
Powershell Dateien zwischen 2 Daten Löschen
BOfH_666 antwortete auf ein Thema von Saufi666 in: Windows Forum — Scripting
Warum kannst Du das Alter dieser Dateien denn nicht bestimmen? Das funktioniert doch genau so wie bei den PDF-Dateien. -
Powershell Dateien zwischen 2 Daten Löschen
BOfH_666 antwortete auf ein Thema von Saufi666 in: Windows Forum — Scripting
... naja .... und wo ist da jetzt das Problem? -
Powershell Dateien zwischen 2 Daten Löschen
BOfH_666 antwortete auf ein Thema von Saufi666 in: Windows Forum — Scripting
Wenn ich das jetzt richtig verstanden habe, sind die Text-Dateien dann also jeweils genauso alt wie die PDF-Dateien. Dann brauchst Du doch nur Deinen "Suchfilter" von "nur PDF" auf "PDF und TXT" erweitern und bist am Ziel!? Oder hab ich's doch noch nicht richtig verstanden? -
Exchaneg public folder - ParentPath
BOfH_666 antwortete auf ein Thema von rakli in: Windows Forum — Scripting
Was heißt: "Warum funktioniert .... nicht?" Was funktioniert denn nicht? "fl" ist der Alias für Format-List und mit "pa*" schränkst Du die Ausgabe auf alle Eigenschaften ein, die mit "pa" beginnen. Das ergibt bei mir z.B. "ParentFolder" und "ParentPath". Bei mir funktioniert das. Dafür funktioniert in meiner Umgebung der erste Befehl so nicht. (Exchange 2013 auf Windows Server 2012R2). -
Powershell Array-Ausgabe verändern, sortieren, korrigieren
BOfH_666 antwortete auf ein Thema von Pikus1234 in: Windows Forum — Scripting
Du machst Dir's gern selbst ein bissl schwer, oder? ;) # *** THIS SCRIPT IS PROVIDED WITHOUT WARRANTY, USE AT YOUR OWN RISK *** $testcomputers = "PCHostName1", "PCHostname2" #oder Get-Content -Path 'C:\computers.txt' $exportLocation = 'C:\pcInventoryPC.csv' # PC Connection Test bevor die PC´s ihre Inventur bekommen (Wenn online = speichern in live-PCs.txt Start Inventory, wenn offline = Gespeichert in dead.pcs.txt = keine Aktion) foreach ($computer in $testcomputers) { if (Test-Connection -ComputerName $computer -Quiet -count 1){ Add-Content -value $computer -path C:\livePCs.txt }else{ Add-Content -value $computer -path C:\deadPCs.txt } } # Nun wissen wir welche PC online sind # Prozedur mit der Inventory $computers = Get-Content -Path 'C\livePCs.txt' $Inventory = foreach ($computer in $computers) { $Bios = Get-WmiObject win32_bios -Computername $computer $Hardware = Get-WmiObject Win32_computerSystem -Computername $computer $Sysbuild = Get-WmiObject Win32_WmiSetting -Computername $computer $OS = Get-WmiObject Win32_OperatingSystem -Computername $computer $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $computer | Where-Object {$_.IPEnabled} $driveSpace = Get-WmiObject win32_volume -computername $Computer -Filter 'drivetype = 3' | Select-Object PScomputerName, driveletter, label, @{LABEL='GBfreespace';EXPRESSION={'{0:N2}' -f($_.freespace/1GB)} } | Where-Object { $_.driveletter -match 'C:' } $cpu = Get-WmiObject Win32_Processor -computername $computer $username = Get-ChildItem "\\$computer\c$\Users" | Sort-Object LastWriteTime -Descending | Select-Object Name, LastWriteTime -first 1 [ARRAY]$MonitorList = Get-WmiObject -Class WMIMonitorID -Namespace root\wmi -ComputerName $computer [PSCustomObject]@{ ComputerName = $Computer.ToUpper() Manufacturer = $Hardware.Manufacturer Model = $Hardware.Model Processor_Type = $cpu.Name System_Type = $Hardware.SystemType Operating_System = $OS.Caption Operating_System_Version = $OS.version Operating_System_BuildVersion = $SysBuild.BuildVersion Serial_Number = $Bios.serialnumber IP_Address = $Networks.IpAddress[0] MAC_Address = $Networks.MACAddress Last_User = $username.Name User_Last_Login = $username.LastWriteTime 'C:_FreeSpace_GB' = $driveSpace.GBfreespace Total_Memory_GB = [math]::round($Hardware.TotalPhysicalMemory/1024/1024/1024, 2) Last_ReBoot = $OS.ConvertToDateTime($OS.LastBootUpTime) Monitor1Hersteller = If($MonitorList[0]){($MonitorList[0].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Typ = If($MonitorList[0]){($MonitorList[0].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1Seriennummer = If($MonitorList[0]){($MonitorList[0].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Hersteller = If($MonitorList[1]){($MonitorList[1].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Typ = If($MonitorList[1]){($MonitorList[1].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Seriennummer = If($MonitorList[1]){($MonitorList[1].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Hersteller = If($MonitorList[2]){($MonitorList[2].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Typ = If($MonitorList[2]){($MonitorList[2].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Seriennummer = If($MonitorList[2]){($MonitorList[2].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} } ### End PSCustomObject } ### End Foreach Computer $Inventory $Inventory | Export-Csv $exportLocation -NoTypeInformation -Force ... den Rest darfst Du gern selbst noch ein bissl verbessern. -
Powershell Array-Ausgabe verändern, sortieren, korrigieren
BOfH_666 antwortete auf ein Thema von Pikus1234 in: Windows Forum — Scripting
na das klingt doch supi .... dann denke ich, würde es sich für Dich bestimmt lohnen, Dir die Basics von Powershell mal "geordnet, strukturiert und didaktisch vernünftig aufbereitet" überzuhelfen. ;-) Hier sind ein paar Ressourcen verlinkt, die Dir einen guten Einstieg ermöglichen sollten. Besonders die beiden "Jump Starts", die in Jeffrey's Post verlinkt sind, sind sehr zu empfehlen. https://powershell.org/forums/topic/using-csv-files/ -
hmmm .... ich hätte es ja jetzt noch interessant gefunden, zu erfahren, für welche Lösung Du Dich entschieden hast .... ;)
-
Powershell Array-Ausgabe verändern, sortieren, korrigieren
BOfH_666 antwortete auf ein Thema von Pikus1234 in: Windows Forum — Scripting
.... outsch .. das kommt davon wenn man aus 3 Scripten eins machen will ... Danke für's "Debuggen" .... aber dann hat ja Pikus jetzt quasi gleich noch ein bissl Verbesserungspotential .... na ma kukn, ob er sich nochmal meldet. -
Powershell Array-Ausgabe verändern, sortieren, korrigieren
BOfH_666 antwortete auf ein Thema von Pikus1234 in: Windows Forum — Scripting
Hmmm ... ok ... bestimmt nicht der eleganteste oder effizienteste Code, aber als Inspirationsquelle sollte es genügen, hoffe ich. $ComputerList = Get-Content -Path 'C:\livePCs.txt' $Inventory = foreach ($ComputerName in $ComputerList) { $SessionOption = New-CimSessionOption -Protocol Dcom $CIMSession = New-CimSession -ComputerName $ComputerName $Bios = Get-CimInstance -ClassName win32_bios -CimSession $CIMSession $Hardware = Get-CimInstance -ClassName Win32_computerSystem -CimSession $CIMSession [ARRAY]$MonitorList = Get-WmiObject -Class WMIMonitorID -Namespace root\wmi -ComputerName $ComputerName [PSCustomObject]@{ ComputerName = $ComputerName.ToUppper() SystemBios = $Bios.serialnumber Monitor1Manufacturer = If($MonitorList[0]){($MonitorList[0].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1UserFriendlyName = If($MonitorList[0]){($MonitorList[0].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor1SerialNumberID = If($MonitorList[0]){($MonitorList[0].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2Manufacturer = If($MonitorList[1]){($MonitorList[1].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2UserFriendlyName = If($MonitorList[1]){($MonitorList[1].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor2SerialNumberID = If($MonitorList[1]){($MonitorList[1].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3Manufacturer = If($MonitorList[2]){($MonitorList[2].ManufacturerName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3UserFriendlyName = If($MonitorList[2]){($MonitorList[2].UserFriendlyName -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} Monitor3SerialNumberID = If($MonitorList[2]){($MonitorList[2].SerialNumberID -notmatch '^0$' | ForEach-Object {[CHAR]$_}) -join ''}Else{'N/A'} } } $Inventory ... das lässt sich natürlich noch beliebig erweitern oder verbessern. ... na probier erst mal ;) Achso ... Du brauchst Powershell 3.0 wenn ich mich nicht irre ... -
Powershell Array-Ausgabe verändern, sortieren, korrigieren
BOfH_666 antwortete auf ein Thema von Pikus1234 in: Windows Forum — Scripting
Pikus, es wäre einfacher und schneller, wenn Du beide Abfragen, also PC und Monitore, in einer Schleife erledigst. Du musst Dir dabei nur überlegen, wie Du damit umgehst, wenn ein PC mehr als einen Monitor angeschlossen hast. Wieviele Monitore kann ein PC in Deiner Infrastruktur denn maximal haben? -
Wozu startest Du denn aus einem Befehlsinterpreter (Powershell-Konsole) einen weiteren Befehlsinterpreter (CMD-Konsole)? Die Powershell-Konsole kann ganz wunderbar andere Tools starten ... da brauchst Du keine CMD mehr. Wenn Du die Powershell dann mit erhöhten Rechten startest, läuft auch das darin gestartete Tool mit Adminrechten. Meines Wissens gibt es aber keine einfache und trotzdem sichere Methode, einem PoweshellSkript oder einer Batch-Datei die nötigen Credentials für eine Rechteerhöhung mitzugeben.
-
Powershell Editor - ISE Features
BOfH_666 antwortete auf ein Thema von Alith Anar in: Windows Forum — Scripting
Du kannst für einen kleinen Obulus die ISE erweitern ... mit den ISE-Steroids. Es gibt auch noch das Powershell Studio von Sapien (auch kostenpflichtig aber bestimmt das Geld wert) oder das kostenlose Visual Studio Code. Von MS aber Open Source und erweiterbar -
Erkennen ob Befehle remote ausgeführt werden
BOfH_666 antwortete auf ein Thema von bouncer86 in: Windows Forum — Scripting
... "geht nicht" gibt's nicht ... ;) :cool: :p -
Powershell - Group Policy Dienste deaktivieren
BOfH_666 antwortete auf ein Thema von bouncer86 in: Windows Forum — Scripting
Hmmm ... die Anfrage ist etwas wage ... für Services gibt's ganz normale cmdlets Get-Command -Noun service so kannst Du Dir die in der Konsole oder in der ISE anzeigen lassen. Dann gibt's auch noch Group Policy cmdlets in Powershell Wenn das nicht reicht, brauchen wir mehr Informationen. Was willst Du denn genau erreichen? -
Erkennen ob Befehle remote ausgeführt werden
BOfH_666 antwortete auf ein Thema von bouncer86 in: Windows Forum — Scripting
... nur 'ne Idee: Vielleicht baust Du den Wrapper so, dass es egal ist, ob das Script remote oder lokal ausgeführt wird. ;) -
PS: Eventlog zur Serversicherung auslesen
BOfH_666 antwortete auf ein Thema von Kuddel071089 in: Windows Forum — Scripting
Wow ... auf die geilsten Lösungen kommt man einfach manchmal nicht, wenn man nicht ständig damit arbeitet. :thumb1: :jau: -
PS: Eventlog zur Serversicherung auslesen
BOfH_666 antwortete auf ein Thema von Kuddel071089 in: Windows Forum — Scripting
Get-Eventog ist veraltet und sollte für neue Scripte nicht mehr verwendet werden. Schau Dir einfach mal die Hilfe für Get-WinEvent an .... inclusive der Beispiele ... -
PowerShell: Test-Path
BOfH_666 antwortete auf ein Thema von %_Darwin_% in: Windows Forum — Scripting
Indem Du die die CSV-Datei einliest und dann mit einer Schleife über die einzelnen Elemente "iterierst". z.B. mit einem Foreach oder mit Pipeline und Foreach-Object. -
PowerShell: Test-Path
BOfH_666 antwortete auf ein Thema von %_Darwin_% in: Windows Forum — Scripting
Ja - das ist möglich. :) ;) :thumb1: -
Powershell Script Benutzer Verschieben
BOfH_666 antwortete auf ein Thema von Ray_Jay in: Windows Forum — Scripting
Is jebont ;) ... kommt mit in meine Sammlung ... falls ich's doch mal brauchen kann ... :thumb1: