创建唯一变量作为foreach的一部分

时间:2018-12-06 10:23:27

标签: powershell

长话短说,为IIS创建迁移脚本。该脚本将深入IIS,找出其中的内容,然后基于该脚本创建一个新的PS1。

我被困在通用的PowerShell函数上,我需要为foreach中找到的每个项目创建一个唯一变量。例如

$servername = $env:computername # Using alias
Get-Website |
    select name, id, state, physicalpath, applicationpool,
        @{n="Bindings";e={($_.bindings | select -expa collection) -join ';'}} ,
        @{n="LogFile";e={ $_.logfile | select -expa directory}}, 
        @{n="attributes";e={($_.attributes | % {$_.name + "=" + $_.value}) -join ';'}} |
    Export-Csv -NoTypeInformation -Path D:\$servername-iis-sites.csv

$csv =  import-csv -Path D:\$servername-iis-sites.csv

foreach ($line in $csv) {
    $Name = $line.Name
    $id = $line.id # Not used, maybe one day it will be loved.
    $Physicalpath  = $line.physicalpath
    $port = $line.Bindings.split(":")[1]
    $apppool = $line.applicationpool
    $header = $line.Bindings.split(":")[-1] -replace 'sslflags=0', ''

对于找到的每个$header,我需要创建一个唯一变量。然后,我可以在脚本的后面部分将其传递给另一个函数。它需要纯粹是上面的格式,只有标头值,没有别的。但是变量必须完全唯一。

这可能吗?

我的同事做了类似的事情

$i = 0
foreach ($dog in $richardshouse) do
{
    $i+1
    $var$i = $dog
    $i++
}

但这是一个限制。

0 个答案:

没有答案