Powershell:不要刷新存储在变量中的"获取日期"



这可能很简单,但我无法理解。

我正在获取系统日期并将其存储到一个变量中,然后单击按钮在当天进行减1。问题是,cmdlet在每次单击时都会刷新,并且不会继续递减。所以如果今天是21号,点击按钮会输出20,如果我再次点击,它会输出19,但它总是输出20。

[int] $myDD = (Get-Date -Format dd)
button1_click= { 
$myDD = $myDD - 1
write-host $myDD
}

全代码

[int] $myDD = (Get-Date -Format dd)
function Create-Form {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$form1 = New-Object System.Windows.Forms.Form
$button4 = New-Object System.Windows.Forms.Button 
#################################
#             CLICKS            #
#################################
$button4_Click= {
$myDD = $myDD - 1
write-host $myDD
}
$OnLoadForm_StateCorrection={
$form1.WindowState = $InitialFormWindowState
}
#################################
#             FORM              #
#################################
$form1.Text = "Test"
$form1.Name = "form1"
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 280
$System_Drawing_Size.Height = 100
$form1.ClientSize = $System_Drawing_Size
#################################
#            BUTTONS            #
#################################
#button4
$button4.TabIndex = 4
$button4.Name = "button4"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 20
$System_Drawing_Size.Height = 15
$button4.Size = $System_Drawing_Size
$button4.UseVisualStyleBackColor = $True
$button4.Text = "<<"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 245
$System_Drawing_Point.Y = 10
$button4.Location = $System_Drawing_Point
$button4.DataBindings.DefaultDataSourceUpdateMode = 0
$button4.Font = New-Object System.Drawing.Font("Lucida Console",12)
$button4.TextAlign.ContentAlignment.TopLeft
$button4.add_Click($button4_Click)
$form1.Controls.Add($button4)
<#-------------------------------#>
$InitialFormWindowState = $form1.WindowState
$form1.add_Load($OnLoadForm_StateCorrection)
$form1.ShowDialog()| Out-Null
}
Create-Form

显示完整的代码后,看起来可以执行以下操作:

button1_click= {
$script:myDD--
write-host $myDD
}

这会减少Script范围内的变量。您可以查看about_scopes以了解更多信息。

注意:这里的最佳做法是使用$script:myDD--脚本级别范围,因为变量是在正在运行的脚本的范围中定义的。即使在脚本运行后,使用全局作用域也会产生挥之不去的副作用,因此在使用此作用域级别时要小心。

最新更新