Powershell 捕获动态变量并添加到数组
Powershell catch dynamic variable and add to array
我寻求帮助来弄清楚如何捕获新的动态变量并将它们添加到数组中。
下面是创建变量的示例代码。
foreach ($user in $users) {
New-Variable -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force
}
这将创建几个这样的变量:
$Guest01_pwString
$Guest02_pwString
$Guest03_pwString
如何捕获它创建的每个变量并将它们添加到数组中。
我认为可行的方法:
$secureStrings = @()
foreach ($user in $users) {
$secureStrings += (New-Variable -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force)
}
您需要 -PassThru
开关才能将新创建的变量对象传递到输出流,您可以使用该对象的 .Value
属性 来访问变量的值:
$secureStrings = @()
foreach ($user in $users) {
$secureStrings += (New-Variable -PassThru -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force).Value
}
您可以简化命令如下:
[array] $secureStrings =
foreach ($user in $users) {
(Set-Variable -PassThru -Name "${user}_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10, 4))).Value
}
退一步:与其创建单独的变量,不如考虑使用(有序的)hashtable:
$secureStrings = [ordered] @{}
foreach ($user in $users) {
$secureStrings[$user] = [System.Web.Security.Membership]::GeneratePassword(10, 4)
}
然后您可以使用 $secureStrings.Values
仅提取密码。
我寻求帮助来弄清楚如何捕获新的动态变量并将它们添加到数组中。
下面是创建变量的示例代码。
foreach ($user in $users) {
New-Variable -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force
}
这将创建几个这样的变量:
$Guest01_pwString
$Guest02_pwString
$Guest03_pwString
如何捕获它创建的每个变量并将它们添加到数组中。
我认为可行的方法:
$secureStrings = @()
foreach ($user in $users) {
$secureStrings += (New-Variable -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force)
}
您需要 -PassThru
开关才能将新创建的变量对象传递到输出流,您可以使用该对象的 .Value
属性 来访问变量的值:
$secureStrings = @()
foreach ($user in $users) {
$secureStrings += (New-Variable -PassThru -Name "$($user)_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10,4)) -Force).Value
}
您可以简化命令如下:
[array] $secureStrings =
foreach ($user in $users) {
(Set-Variable -PassThru -Name "${user}_pwString" -Value ([System.Web.Security.Membership]::GeneratePassword(10, 4))).Value
}
退一步:与其创建单独的变量,不如考虑使用(有序的)hashtable:
$secureStrings = [ordered] @{}
foreach ($user in $users) {
$secureStrings[$user] = [System.Web.Security.Membership]::GeneratePassword(10, 4)
}
然后您可以使用 $secureStrings.Values
仅提取密码。