PowerShell - Komische Ausgabe
Hi,
erstelle ich ein PS-Script mit
am Ende und starte dieses Script direkt aus dem Explorer, dann kommt folgendes als Ausgabe:
Die Shell bleibt dabei wie gewollt geöffnet. Gebe ich nun dort
ein, dann kommt wie erwartet
Wieso funktioniert das nicht, wenn man das über ein Script ausführt?
Edit: Der Witz - mal funktioniert das gleich beim Script-Start und mal nicht. Auf dem selben Rechner. Hintereinander probiert.
E.
erstelle ich ein PS-Script mit
...
Get-Help Get-Item
$host.EnterNestedPrompt()
CommonParameters : True
WorkflowCommonParameters : False
details : @{name=Get-Item; noun=Item; verb=Get}
Syntax : @{syntaxItem=System.Object}
parameters : @{parameter=System.Object}
inputTypes : @{inputType=}
relatedLinks : @{navigationLink=System.Management.Automation.PSObject}
returnValues : @{returnValue=}
aliases : gi
remarks : Die Hilfedateien für dieses Cmdlet können von "Get-Help" auf diesem Computer nicht gefunden
werden. Es wird nur ein Teil der Hilfe angezeigt.
-- Sie können die Hilfedateien für das Modul, das dieses Cmdlet enthält, herunterladen
und installieren, indem Sie "Update-Help" verwenden.
-- Wenn Sie das Hilfethema für dieses Cmdlet online anzeigen möchten, geben Sie
Folgendes ein: "Get-Help Get-Item -Online", oder
gehen Sie zu "https://go.microsoft.com/fwlink/?LinkID=113319".
PSSnapIn :
alertSet :
description :
examples :
Synopsis :
Get-Item [-Path] <string> [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>]
[-Force] [-Credential <pscredential>] [-UseTransaction] [-Stream <string[]>]
[<CommonParameters>]
Get-Item -LiteralPath <string> [-Filter <string>] [-Include <string[]>] [-Exclude
<string[]>] [-Force] [-Credential <pscredential>] [-UseTransaction] [-Stream <string[]>]
[<CommonParameters>]
ModuleName : Microsoft.PowerShell.Management
nonTerminatingErrors :
xmlns:command : http://schemas.microsoft.com/maml/dev/command/2004/10
xmlns:dev : http://schemas.microsoft.com/maml/dev/2004/10
xmlns:maml : http://schemas.microsoft.com/maml/2004/10
Name : Get-Item
Category : Cmdlet
Component :
Role :
Functionality :
Get-Help Get-Item
NAME
Get-Item
SYNTAX
Get-Item [-Path] <string> [<CommonParameters>]
Get-Item [<CommonParameters>]
ALIASE
gi
HINWEISE
Die Hilfedateien für dieses Cmdlet können von "Get-Help" auf diesem Computer nicht gefunden werden. Es wird nur
ein Teil der Hilfe angezeigt.
-- Sie können die Hilfedateien für das Modul, das dieses Cmdlet enthält, herunterladen und installieren, indem
Sie "Update-Help" verwenden.
-- Wenn Sie das Hilfethema für dieses Cmdlet online anzeigen möchten, geben Sie Folgendes ein: "Get-Help
Get-Item -Online", oder
gehen Sie zu "https://go.microsoft.com/fwlink/?LinkID=113319".
Wieso funktioniert das nicht, wenn man das über ein Script ausführt?
Edit: Der Witz - mal funktioniert das gleich beim Script-Start und mal nicht. Auf dem selben Rechner. Hintereinander probiert.
E.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 361601
Url: https://administrator.de/forum/powershell-komische-ausgabe-361601.html
Ausgedruckt am: 31.03.2025 um 14:03 Uhr
3 Kommentare
Neuester Kommentar
Servus,
schau dir mal die Ausgabe von
an. Dort siehst du das das Ergebnis ein Object und kein String ist.
Willst du eine String-Ausgabe nutze
Also wenn du zwingend String-Ausgaben haben möchstest solltest du das der Shell immer auch sagen denn sonst entscheidet die Shell das für dich.
Folgendes geht z.B. nicht (Datei bleibt leer)
Grund: Die ToString() Methode des Objects liefert keinen Text, was uns ein
bestätigt.
Immer dran denken auch wenn in der Shell alles nach Text aussieht sind es in den meisten Fällen Objekte statt einfache Strings.
Grüße Uwe
schau dir mal die Ausgabe von
Get-Help get-item | gm * -Force
TypeName: MamlCommandHelpInfo#Microsoft.PowerShell.Management#Get-Item
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
alertSet NoteProperty MamlCommandHelpInfo#alertSet alertSet=@{alert=System.Management.Automation.PSObject; title=}
Category NoteProperty string Category=Cmdlet
Component NoteProperty object Component=null
description NoteProperty psobject description=System.Management.Automation.PSObject
details NoteProperty MamlCommandHelpInfo#details details=@{verb=Get; noun=Item; name=Get-Item; description=System.Management.Autom...
examples NoteProperty MamlCommandHelpInfo#examples examples=@{example=System.Management.Automation.PSObject}
Functionality NoteProperty object Functionality=null
inputTypes NoteProperty MamlCommandHelpInfo#inputTypes inputTypes=@{inputType=@{type=@{description=System.Management.Automation.PSObj...
ModuleName NoteProperty string ModuleName=Microsoft.PowerShell.Management
Name NoteProperty string Name=Get-Item
nonTerminatingErrors NoteProperty System.String nonTerminatingErrors=
parameters NoteProperty MamlCommandHelpInfo#parameters parameters=@{parameter=System.Management.Automation.PSObject}
PSSnapIn NoteProperty object PSSnapIn=null
relatedLinks NoteProperty MamlCommandHelpInfo#relatedLinks relatedLinks=@{navigationLink=System.Management.Automation.PSObject}
returnValues NoteProperty MamlCommandHelpInfo#returnValues returnValues=@{returnValue=@{type=@{description=System.Management.Automation...
Role NoteProperty object Role=null
Synopsis NoteProperty string Synopsis=Ruft das Element am angegebenen Speicherort ab.
syntax NoteProperty MamlCommandHelpInfo#syntax syntax=@{syntaxItem=System.Management.Automation.PSObject}
terminatingErrors NoteProperty System.String terminatingErrors=
xmlns:command NoteProperty string xmlns:command=http://schemas.microsoft.com/maml/dev/command/2004/10
xmlns:dev NoteProperty string xmlns:dev=http://schemas.microsoft.com/maml/dev/2004/10
xmlns:maml NoteProperty string xmlns:maml=http://schemas.microsoft.com/maml/2004/10
xmlns:MSHelp NoteProperty string xmlns:MSHelp=http://msdn.microsoft.com/mshelp
Willst du eine String-Ausgabe nutze
Get-Help get-item | out-string
Folgendes geht z.B. nicht (Datei bleibt leer)
get-help Get-Item | set-content "C:\datei.txt"
(get-help Get-Item).toString()
Immer dran denken auch wenn in der Shell alles nach Text aussieht sind es in den meisten Fällen Objekte statt einfache Strings.
Grüße Uwe
aber eine Kommandoausgabe (Echo) sollte doch jedesmal gleich sein egal ob am Prompt oder im Script ausgeführt? Zumal es ja mal funktioniert und mal nicht. (Mein konkretes Beispiel)
Nein das kommt drauf an, weil das die Shell wohl je nachdem entscheidet was vor dem Output von get-help ausgegeben wurde.Die Shell schickt solche Objekte meist durch eine Formatting-Engine (Format-CMDLets) für den Output, in deinem Beispiel ist das dann ein format-list Ausgabe.