我正在整夜工作,现在我觉得我需要帮助:-) 我是Powershell的新手,我已经做了很多研究,但我找不到正确的答案,我希望有人可以帮助我。
我要做的是将IIS应用程序部署到几台服务器。 我设法将应用程序添加到网站,在我的情况下,我使用“默认网站”,其代码如下:
double**
这是servers.txt的内容:
WEB01
WEB02
WEB03
这实际上工作正常。但我想要实现的是其他项目也是动态的:
Get-Content c:\scripts\servers.txt | Foreach { Invoke-Command -ComputerName $_ {Import-Module WebAdministration ; New-WebApplication -Site "Default Web Site" -Name TestRico2 -PhysicalPath C:\inetpub\wwwroot\} }
所以,我想要一个CSV文件,如:
-Site "Default Web Site"
-Name TestRico2
-PhysicalPath C:\inetpub\wwwroot\
我再也不知道了,那里有谁可以提供帮助吗?
答案 0 :(得分:1)
Import-Csv
读取CSV文件,并将每个输入行表示为自定义对象,其属性以CSV列标题命名,其值是相应行的列值。
因此,请使用Import-Csv
代替Get-Content
并访问感兴趣的值作为手头输入对象的属性$_
:
Import-Csv c:\scripts\servers.csv | ForEach-Object {
Invoke-Command ComputerName $_.server {
param($site, $name, $path)
Import-Module WebAdministration;
New-WebApplication -Site $site -Name $name -PhysicalPath $path
} -Args $_.site, $_.name, $_.path
}
注意属性$_.site
,$_.name
,$_.path
如何作为参数传递给传递给Invoke-Command
的脚本块,因为脚本块在目标计算机上执行, local 变量不可用。
在PSv3 +或更高版本中,传递参数的替代方法是使用$using:
范围直接在脚本块内引用局部变量 - 参见
Get-Help about_Remote_Variables