Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst In der Powershell das Archivbit nutzen

Mitglied: rana-mp

rana-mp (Level 1) - Jetzt verbinden

27.07.2010 um 15:01 Uhr, 6384 Aufrufe, 7 Kommentare

Hallo zusammen,

ich habe ein (hoffentlich) kleines Problem mit der Windows Powershell.
Und zwar moechte ich ueber die Powershell das Archivbit von Dateien auslesen.

Bis jetzt habe ich folgenden Code:

01.
$fileItem = Get-Item C:\temp\testdatei.txt 
02.
$fileitem.attributes 
03.
if ($fileItem.Attributes -eq [System.IO.FileAttributes]::Archive) 
04.
05.
    echo "Archivbit gesetzt" 
06.
07.
else 
08.
09.
    echo "Archivbit nicht gesetzt" 
10.
    } 
Das funktioniert so allerdings nur, wenn nur das Archivbit gesetzt ist. Ist zusaetzlich eins der anderen Attribute (zB. ReadOnly) gesetzt funktioniert es nicht und gibt immer raus das kein Archivbit gesetzt ist.
Ich habs auch schon mit -contains in der Abfrage getestet, aber das bringt das gleiche Ergebnis.

Wahrscheinlich hab ich nen falschen Ansatz in der if-Abfrage, aber im Moment komm ich leider nicht weiter.


Gruss,

rana-mp
Mitglied: LotPings
27.07.2010 um 16:23 Uhr
Hallo rana-mp,

ersetze das if statement mal durch
## String Vergleich 
if ($fileItem.Attributes -contains [System.IO.FileAttributes]::Archive) 
## einfacher wäre 
if ($fileItem.Attributes -contains "Archive") 
## binärer Vergleich des Attributes 
if ($fileItem.Attributes -band [System.IO.FileAttributes]::Archive)
oder
if ($fileItem.Mode -like "?a*")
Gruß
LotPings
Bitte warten ..
Mitglied: filippg
27.07.2010 um 20:17 Uhr
Hallo,

die Attribute sind als Bitmaske abgelegt (daher auch Archiv_bit_). Und für jedes gesetzte Attribut wird das entsprechende Bit auf 1 gesetzt.
Somit ist nur "Archivieren" z.B. 0010, während "Archivieren" & "ReadOnly" 0110 ist, und "Archivieren" & Hidden z.B. 1010.
Damit ist auch klar, warum der Vergleich auf -eq fehlschlägt wenn mehrere gesetzt sind. Auch -contains funktioniert höchstens weil MS hier eine Krücke eingebaut hat.

Korrekter & effizienter Weg ist das bitweise UND: $fileItem.Attributes -band [System.IO.FileAttributes]::Archive.

Gruß

Filipp
Bitte warten ..
Mitglied: LotPings
27.07.2010 um 23:24 Uhr
Zitat von filippg:
Korrekter & effizienter Weg ist das bitweise UND: $fileItem.Attributes -band [System.IO.FileAttributes]::Archive.
Alle meine obigen Beispiele sind Korrekt, das einige nur funktionieren weil MS das in .Net oder PoSh so vorgesehen hat, tut dem keimen Abbruch. Einie Steigerung von Korrekt gibt es nicht.

Bei der Effizienz kann man geteilter Meinung, in einem Script dürfte es irrelevant sein, wenn schon dann ist
if ($fileItem.Attributes -band 32)
am effizientesten
Das Archiv-Bit ist hier das 6. nicht das 2. , kann man leicht nachprüfen mit :
(Get-Item C:\temp\testdatei.txt).Atrributes.value__
(Die 2 Unterstriche hinter Value gehören da hin !)

Gruß
LotPings
Bitte warten ..
Mitglied: 5t8d1e
28.07.2010 um 08:50 Uhr
Hallo,

das contains durch match ersetzen und schon läuft es.
BeispielCode:
01.
$fileItem = Get-Item testfile.txt 
02.
$fileItem | fl * 
03.
if ($fileItem.Attributes -match "Archive")  
04.
    {  
05.
    echo "Archivbit gesetzt"  
06.
    }  
07.
else  
08.
    {  
09.
    echo "Archivbit nicht gesetzt"  
10.
    }  
11.
     
12.
$fileItem2 = Get-ItemProperty testfile.txt 
13.
$fileItem2 | fl * 
14.
if ($fileItem2.Attributes -match "Archive")  
15.
    {  
16.
    echo "Archivbit gesetzt"  
17.
    }  
18.
else  
19.
    {  
20.
    echo "Archivbit nicht gesetzt"  
21.
    } 
Grüße Torsten

Post Scriptum: wenn mir jetzt noch wer den unterschied zwischen Get-Item und Get-ItemProperty erklären kann, wäre ich fast glücklich
Bitte warten ..
Mitglied: LotPings
28.07.2010 um 10:19 Uhr
Hallo Torsten,

der -match nutzt natürlich auch den von PoSh entgegen kommender Weise automatisch erzeugten String zum Vergleich,
ob -contains oder -match funktionieren tun sie beide.

Der Unterschied von Get-Item und Get-ItemProperty ist gering, sieh die einfach mal die jeweilige Hilfe an.
Die Optionen bei Get-Item enthalten ein -force das Get-ItemProperty fehlt und
nur bei Get-ItemProperty gibt es eine -name Option für die gewünschte Eigeneschaft.

Gruß
LotPings
Bitte warten ..
Mitglied: rana-mp
28.07.2010 um 10:30 Uhr
Hallo, und danke fuer eure Hilfe

01.
if ($fileItem.Attributes -band [System.IO.FileAttributes]::Archive)
bzw.
01.
if ($fileItem.Attributes -band 32)
funktionieren, so wie ich es haben moechte
Nur der neugierde halber, kann man sagen, wie gross der Geschwindigkeitsunterschied zwischen diesen Varianten ist?


Gruss,

rana-mp
Bitte warten ..
Mitglied: LotPings
28.07.2010 um 10:36 Uhr
Zitat von rana-mp:
Nur der neugierde halber, kann man sagen, wie gross der Geschwindigkeitsunterschied zwischen diesen Varianten ist?

Hab ich nicht untersucht, aber ich würde sagen gegenüber anderen Optimierungsmöglichkeiten eines Scripts vernachlässigbar,
die erste Variante ist zur Dokumentation besser geeignet.

Gruß
LotPings
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Windows Powershell - Nutzen?
Frage von DerBayaBatch & Shell15 Kommentare

Guten Abend miteinander, ich habe mich seit kurzem erst etwas mit der Windows Powershell befasst. Dazu habe ich auf ...

Backup

Robocopy soll Archivbit nicht zurücksetzen

Frage von ReinhardSchwarzBackup9 Kommentare

Hallo, ich möchte mit Robocopy fortlaufend einen Sicherungsdatenbestand auf einen NAS-Server sichern. Dazu benutze ich Robocopy Quelle Ziel /MIR ...

Batch & Shell

Erstellen eines GUI in Powershell und das nutzen vom Funktionen mit Usereingabe

gelöst Frage von IT-Guy77Batch & Shell2 Kommentare

Hallo zusammen, folgendes Problem: Ich arbeite derzeit an einem GUI in Powershell für eine kleine Sammlung von Skripten um ...

Windows Userverwaltung

Powershell: Nutzer einer Lokation auslesen und in AD-Gruppe packen

Frage von cptnkewlWindows Userverwaltung2 Kommentare

Hallo Leute, ich habe die ehrenvolle Aufgabe per Powershell von Nutzern die Lokation auszulesen und diese bei einem bestimmten ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...