PowerShell Encodings in Funktion einbauen
Hallo Forum.
Ich möchte gerne alle Encodings die PowerShell verwalten kann auslesen und in einer Funktion zur Verfügung stellen. Also die Zeile mit ValidateSet soll automatisch alle verfügbaren Values bekommen. Kann man so etwas irgendwie realisieren?
Gruß
HighSpeed1
Ich möchte gerne alle Encodings die PowerShell verwalten kann auslesen und in einer Funktion zur Verfügung stellen. Also die Zeile mit ValidateSet soll automatisch alle verfügbaren Values bekommen. Kann man so etwas irgendwie realisieren?
function Out-TEST
{
Param (
[Parameter(Mandatory=$true)] [string] $String,
[Parameter(Mandatory=$true)] [string] $FilePath,
[Parameter(Mandatory=$true)] [ValidateSet('UTF7','UTF8')] [string] $Encoding
)
$String | Out-File -FilePath $FilePath -Encoding $Encoding
}
Gruß
HighSpeed1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 669920
Url: https://administrator.de/contentid/669920
Ausgedruckt am: 02.12.2024 um 23:12 Uhr
2 Kommentare
Neuester Kommentar
Indem du den Typ nicht als [String] sondern als [System.Text.Encoding] definierst.
Für Powershell 7
https://tio.run/##lY/BasMwEETv@ool@OBA5Q8I5NSk5BIasG8hB@GsHYMiFWlMbdp@u2 ...
Das gilt für Powershell 7 weil ab da der Type auf "Encoding" steht, für Powershell 5.1 ist der Type bei out-file noch "String" und da gelten die Einschränkungen wie im Manual beschrieben, siehe zu den möglichen Werten die Manpage zu out-file
Für PS 5
Für Powershell 7
function Out-TEST
{
Param (
[Parameter(Mandatory=$true)][string] $String,
[Parameter(Mandatory=$true)][string] $FilePath,
[Parameter(Mandatory=$false)][System.Text.Encoding]$Encoding = [System.Text.Encoding]::Default
)
$String | Out-File -FilePath $FilePath -Encoding $Encoding
}
Out-test -string "Hallo" -FilePath test.txt -Encoding ([System.Text.Encoding]::UTF8)
Das gilt für Powershell 7 weil ab da der Type auf "Encoding" steht, für Powershell 5.1 ist der Type bei out-file noch "String" und da gelten die Einschränkungen wie im Manual beschrieben, siehe zu den möglichen Werten die Manpage zu out-file
Für PS 5
[Parameter(Mandatory=$true)][ValidateSet("ASCII","BigEndianUnicode","Default","OEM","String","Unicode","Unknown","UTF7","UTF8","UTF32")][string]$Encoding
Moin,
das wird nicht so funktionieren, wie du dir das vorstellst. Das "encoding" ist in Powershell nicht konsistent - das heißt nicht jede Funktion beherrscht jedes mögliche encoding.
Mit kannst du dir mal eine Liste ausgeben lassen und dann mal testen.
Zitat von @HighSpeed1:
Ich möchte gerne alle Encodings die PowerShell verwalten kann auslesen und in einer Funktion zur Verfügung stellen. Also die Zeile mit ValidateSet soll automatisch alle verfügbaren Values bekommen. Kann man so etwas irgendwie realisieren?
Ich möchte gerne alle Encodings die PowerShell verwalten kann auslesen und in einer Funktion zur Verfügung stellen. Also die Zeile mit ValidateSet soll automatisch alle verfügbaren Values bekommen. Kann man so etwas irgendwie realisieren?
das wird nicht so funktionieren, wie du dir das vorstellst. Das "encoding" ist in Powershell nicht konsistent - das heißt nicht jede Funktion beherrscht jedes mögliche encoding.
Mit
[System.Text.Encoding]::GetEncodings()