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
Please also mark the comments that contributed to the solution of the article
Content-ID: 669920
Url: https://administrator.de/forum/powershell-encodings-in-funktion-einbauen-669920.html
Printed on: January 14, 2025 at 05:01 o'clock
3 Comments
Latest comment
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()