我得到了下面的脚本,我试图用来远程安装我们的构建(一个MSI),见下文。powershell命令从控制台工作,但不是从脚本
事情是它不工作,但好奇的是,如果我从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'
然后一切工作正常
所以很明显的问题是直到我对变量如何扩展等缺乏了解......
任何指导,可以理解
我编辑了帖子以包含参数 – ManyRootsofAllEvil
你可以发布你试图在控制台上运行的命令以及其他方法吗? –