我得到了以下脚本,我正在尝试远程安装我的版本(msi),见下文。
问题在于它不起作用,但奇怪的是,如果我从PowerShell控制台运行命令,那么它就可以工作。
我刚刚测试了在一台远程服务器上运行安装并且运行正常(我的返回代码为0,我也检查了远程服务器并安装好了)
所以我的问题是我在这里错过了什么?
为什么命令在从PS控制台运行时可以正常工作,但在使用脚本时却没有?
TIA
param ($serverfile, $targetdir, $domainname, $username, $password,)
if (-not($serverfile) -or -not($targetdir) -or -not($domainname) -or -not($username))
{
echo "error"
exit
}
#default to c:\temp, this needs to be in the server
$dest = "c$\temp\"
#This is really good as it allows us to have some sort of type safety
$srvs = Import-Csv $serverfile
foreach ($item in $srvs)
{
if ($item.Type -eq "App" )
{
$name = $item.Hostname
$path = "\\$name\" + $dest
New-Item -ItemType directory -Path $path -Force
Copy-Item -Path '.\Deployment.msi' -Destination $path -Force
$wmi = "\\" +$name + "\ROOT\CIMV2:Win32_Product"
echo "Start Install Product"
$product = ([WMIClass]$wmi)
$var = $product.Install("c:\temp\Deployment.msi", "TARGETDIR=$targetdir DOMAINNAME=$domainname EMANRESU=$username PASSWORD=$password", $true)
if ($var.ReturnValue -ne 0)
{
echo "Error installing Deployment.msi on $name"
echo "exit code: $var.ReturnValue"
}
echo "Installed Product on $name"
}
编辑:
如果我硬编码服务器的名称,例如:
$path = '\\uk703\c$\temp\'
$wmi = '\\uk703\ROOT\CIMV2:Win32_Product'
然后一切正常
很明显,问题在于我对如何扩展变量等缺乏了解......
任何指导将不胜感激