Jump to content

powershell: .net


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

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

 

folgender Code läuft einwandfrei

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

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

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

Link zu diesem Kommentar
Hallo,

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

 

Trifft sich, ich auch ;)

 

 

folgender Code läuft einwandfrei

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

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:

 

$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

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...