Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 26.12.2007, 23:49   #1
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
powershell: .net

Hallo,
Ich experimentiere momentan mit der Powershell 1.0 und komm nicht weiter .

folgender Code läuft einwandfrei
Code:
PS C:\mytest> $path="C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path )
Ausgabe:
ProductVersion FileVersion FileName
-------------- ----------- --------
5.2.3790.3959 5.2.3790.3959... C:\WINDOWS\system32\aclui.dll

analog dazu will ich mit der Klasse System.IO.FileInfo
z.B. die Eigenschaft "lastaccesstime" eines Files auslesen

mit
Code:
PS C:\mytest> $path="C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> [System.IO.FileInfo]::lastaccesstime($path)
bekomme ich die Ausgabe:
Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'lastaccesstime'.
At line:1 char:37
+ [System.IO.FileInfo]::lastaccesstime( <<<< $path)

Die Methode existiert natürlich bzw. auch andere Methoden liefern diegleiche Ausgabe


Dagegen läuft problemlos
Code:
PS C:\mytest> $path=get-item "C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> write-host $path.LastWriteTime
Ausgabe:
17.02.2007 15:02:40


Was ist an diesem Aufruf falsch?
PS C:\mytest> [System.IO.FileInfo]::lastaccesstime($path)

merci
blub

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 27.12.2007, 16:22   #2
Board Veteran
 
Offline
Registriert seit: 05-2006
Beiträge: 2.054
Zitat von blub
Hallo,
Ich experimentiere momentan mit der Powershell 1.0 und komm nicht weiter .
Trifft sich, ich auch


folgender Code läuft einwandfrei
Code:
PS C:\mytest> $path="C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path )
Ausgabe:
ProductVersion FileVersion FileName
-------------- ----------- --------
5.2.3790.3959 5.2.3790.3959... C:\WINDOWS\system32\aclui.dll
Klar, das geht, weil GetVersionInfo ja auch eine (statische) Funktion ist, der du einen Parameter übergibst. Da sie statisch ist, musst du vorher auch kein Objekt instanziieren.

analog dazu will ich mit der Klasse System.IO.FileInfo
z.B. die Eigenschaft "lastaccesstime" eines Files auslesen

mit
Code:
PS C:\mytest> $path="C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> [System.IO.FileInfo]::lastaccesstime($path)
bekomme ich die Ausgabe:
Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'lastaccesstime'.
At line:1 char:37
+ [System.IO.FileInfo]::lastaccesstime( <<<< $path)

Die Methode existiert natürlich bzw. auch andere Methoden liefern diegleiche Ausgabe
Da liegt das Problem. Die Methode existiert eben nicht. lastaccesstime ist eine Eigenschaft eines Objektes vom Typ FileSystemInfo. Du rufst es aber wie eine Methode auf, daher mault die Powershell auch, dass es diese Methode nicht gibt.

Du müsstest folgendes aufrufen:

Code:
$path="C:\WINDOWS\system32\aclui.dll"
$file = New-Object -TypeName System.IO.FileInfo $path
$file.LastAccessTime
Mit dem new-Object instanziierst du ein Objekt vom Typ FileInfo und übergibst $path an den Konstruktor. Warum da keine Klammer kommt, müsste man mal den Sprachdesigner fragen.
Danach hast du ein Objekt $file, des Eigenschaft du dann in Zeile 3 abfragst.

Du musst übrigens FileInfo und nicht FileSystemInfo nehmen, weil zweiteres eine abstrakte Klasse ist.


Dagegen läuft problemlos
Code:
PS C:\mytest> $path=get-item "C:\WINDOWS\system32\aclui.dll"
PS C:\mytest> write-host $path.LastWriteTime
get-Item macht das gleiche, wie get-Object. Get-Item kann aber nur bestimmte Objekte erzeugen, etwa Filesystem, Registry.


Gruß

woiza
    Mit Zitat antworten
Alt 27.12.2007, 23:18   #3
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
Hallo Woiza,
Vielen Dank für deine SuperErklärung! Da wäre ich wohl alleine nicht drauf gekommen!

Schöne Grüsse
blub

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
70-640 powershell rakli MS Zertifizierungen — Prüfungen 2 19.03.2010 15:49
2K8R2 - powershell 1.0 passy73 Windows Server Forum 2 15.08.2009 15:58
Powershell V2 blub Windows Forum — Scripting 0 29.07.2009 21:46
Powershell warbird001 Windows Forum — Scripting 0 01.07.2007 10:41
Vista - PowerShell schaedld Windows Vista Forum 2 30.04.2007 09:26


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:17 Uhr. Seite generiert in 0,031 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang