长话短说,为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++
}
但这是一个限制。