Ich möchte einige Integer-Konstanten in PowerShell deklarieren.Unterstützt PowerShell Konstanten?
Gibt es einen guten Weg, das zu tun?
Ich möchte einige Integer-Konstanten in PowerShell deklarieren.Unterstützt PowerShell Konstanten?
Gibt es einen guten Weg, das zu tun?
Verwenden
Set-Variable test -option Constant -value 100
oder
Set-Variable test -option ReadOnly -value 100
Der Unterschied zwischen "Konstante" und "Readonly" ist, dass ein Nur-Lese-Variable entfernt werden kann (und dann wieder erstellt) über
Remove-Variable test -Force
während eine konstante Variable nicht entfernt werden kann (auch nicht mit -Force).
Weitere Informationen finden Sie unter this TechNet article.
Verwenden -option Constant
mit dem Set-Variable
Cmdlets:
Set-Variable myvar -option Constant -value 100
Jetzt $myvar
einen konstanten Wert von 100 und kann nicht geändert werden.
Wow, das ist klobig. Sie müssen Set-Variable verwenden, um es zu tun, nicht wahr? –
Ja, es gibt nicht unclunky Weg, es zu tun :) –
Sie können auch ändern und bestehende Variable entweder mit Set-Variable (aliased zu SV) oder mit Get-Variable (gv) und basteln mit seiner Option -Eigenschaft. – x0n
Hier ist eine Lösung für die Definition einer Konstante ist wie folgt:
const myConst = 42
Lösung von http://poshcode.org/4063 genommen
function Set-Constant {
<#
.SYNOPSIS
Creates constants.
.DESCRIPTION
This function can help you to create constants so easy as it possible.
It works as keyword 'const' as such as in C#.
.EXAMPLE
PS C:\> Set-Constant a = 10
PS C:\> $a += 13
There is a integer constant declaration, so the second line return
error.
.EXAMPLE
PS C:\> const str = "this is a constant string"
You also can use word 'const' for constant declaration. There is a
string constant named '$str' in this example.
.LINK
Set-Variable
About_Functions_Advanced_Parameters
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$true, Position=0)]
[string][ValidateNotNullOrEmpty()]$Name,
[Parameter(Mandatory=$true, Position=1)]
[char][ValidateSet("=")]$Link,
[Parameter(Mandatory=$true, Position=2)]
[object][ValidateNotNullOrEmpty()]$Mean,
[Parameter(Mandatory=$false)]
[string]$Surround = "script"
)
Set-Variable -n $name -val $mean -opt Constant -s $surround
}
Set-Alias const Set-Constant
Um einen bestimmten Typ von Wert zu verwenden, sagen Int64, Sie explizit den Wert werfen können in Set-Variable verwendet.
Zum Beispiel:
set-variable -name test -value ([int64]100) -option Constant
Um zu überprüfen,
Und Sie werden sehen, dass es ein Int64 ist (und nicht Int32, die für den Wert 100 normal wäre).
Powershell v5.0 sollte
[statisch] [int] $ variable = 42
[statisch] [Datetime] $ ThisDay
und dergleichen ermöglichen.
funktioniert nicht auf ps 5.1. Der Typ [statisch] konnte nicht gefunden werden. – ThomasMX
Nicht zu vergessen, Statik ist nicht das Gleiche wie eine Konstante –
Hmm, aber ** wie erzwingen Sie den Datentyp ** bei der Verwendung von' Set-Variable'? Wenn man mit Variablen arbeitet, kann man '[string] $ name = value' verwenden, aber das scheint für Konstanten nicht möglich zu sein. – masi
@masi erzwinge nur den Wert 'Set-Variable test -option Konstanter -Wert [string] 100' – Monso
@Monso Bei der Angabe von type' '([string] 100)' brauchst du Klammern um den Wert. '. Siehe Antworten unten. – Polymorphix