我得到了下面的腳本,我試圖用來遠程安裝我們的構建(一個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
你可以發佈你試圖在控制檯上運行的命令以及其他方法嗎? –