जवाबों:
उपयोग
Set-Variable test -option Constant -value 100
या
Set-Variable test -option ReadOnly -value 100
"कॉन्स्टेंट" और "रीडऑनली" के बीच का अंतर यह है कि केवल पढ़ने योग्य चर को हटाया जा सकता है (और फिर से बनाया गया)
Remove-Variable test -Force
जबकि एक स्थिर चर नहीं हटाया जा सकता है (यहां तक कि -Force के साथ)।
देखें इस TechNet लेख अधिक जानकारी के लिए।
Set-Variable test -option Constant -value [string]100
([string]100)
। नीचे उत्तर देखें।
यहाँ इस तरह एक स्थिरांक को परिभाषित करने के लिए एक समाधान है:
const myConst = 42
Http://poshcode.org/4063 से लिया गया समाधान
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
Set-Constant
एक मॉड्यूल में निहित है। यह मॉड्यूल के दायरे में एक स्थिरांक पैदा करेगा, जहां Set-Constant
निहित है। वर्कअराउंड के रूप में कोई भी पैरामीटर पारित कर सकता है -Surround Global
, लेकिन यह हमेशा नहीं चाहता है। मैं एक समारोह में एक अन्य मॉड्यूल या स्थानीय रूप से एक कंटीन्यू बनाना चाहूंगा।
Cmdlet के -option Constant
साथ प्रयोग करें Set-Variable
:
Set-Variable myvar -option Constant -value 100
अब $myvar
100 का निरंतर मान है और इसे संशोधित नहीं किया जा सकता है।
Set-Variable
? चरों के साथ काम करते समय कोई भी उपयोग कर सकता है [string]$name = value
लेकिन ऐसा लगता है कि स्थिरांक के लिए संभव नहीं है?
set-variable -name test -value ([int64]100) -option Constant
किसी विशिष्ट प्रकार के मान का उपयोग करने के लिए, Int64 कहें, आप सेट-चर में उपयोग किए गए मान को स्पष्ट रूप से डाल सकते हैं।
उदाहरण के लिए:
set-variable -name test -value ([int64]100) -option Constant
जाँच करने के लिए,
$test | gm
और आप देखेंगे कि यह एक Int64 है (Int32 के बजाय, जो मान 100 के लिए सामान्य होगा)।
मुझे वास्तव में सिंटैक्टिक शुगर पसंद है जो लूट का जवाब प्रदान करता है:
const myConst = 42
जब आप Set-Constant
किसी मॉड्यूल में फ़ंक्शन को परिभाषित करते हैं तो दुर्भाग्य से उसका समाधान अपेक्षित रूप से काम नहीं करता है । जब मॉड्यूल के बाहर से कॉल किया जाता है, तो यह कॉलर स्कोप केSet-Constant
बजाय मॉड्यूल स्कोप में एक स्थिरांक बना देगा, जहां परिभाषित किया गया है । यह लगातार कॉल करने वाले को अदृश्य बनाता है।
निम्न संशोधित फ़ंक्शन इस समस्या को हल करता है। समाधान पर आधारित है इस सवाल का जवाब सवाल का "वहाँ एक powershell मॉड्यूल अपने फोन करने वाले का दायरे में लाने के लिए कोई तरीका है?" ।
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()] $Value
)
$var = New-Object System.Management.Automation.PSVariable -ArgumentList @(
$Name, $Value, [System.Management.Automation.ScopedItemOptions]::Constant
)
$PSCmdlet.SessionState.PSVariable.Set( $var )
}
Set-Alias const Set-Constant
टिप्पणियाँ:
Set-Variable -scope 1
काम करना चाहिए), जब मुझे पता चले कि ऐसा कैसे करना है।-Mean
का नाम बदल दिया है ।-Value
Set-Variable
Private
, ReadOnly
और AllScope
झंडे। बस PSVariable
कंस्ट्रक्टर के 3 तर्क में वांछित मान जोड़ें , जिसे उपरोक्त स्क्रिप्ट के माध्यम से कहा जाता है New-Object
।PowerShell v5.0 की अनुमति चाहिए
[स्थिर] [int] $ चर = ४२
[स्थिर] [दिनांक समय] $ इस दिन
और जैसे।
Set-Variable
? चरों के साथ काम करते समय कोई भी उपयोग कर सकता है[string]$name = value
लेकिन ऐसा लगता है कि स्थिरांक के लिए संभव नहीं है?