1

ビルド(msi)をリモートでインストールするために使用しようとしている次のスクリプトがあります。以下を参照してください。

問題はそれが機能していないということですが、不思議なことに、PowerShellコンソールからコマンドを実行すると機能します。

1つのリモートサーバーでインストールを実行することをテストしたところ、正常に機能しました(リターンコード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'

その後、すべてが正常に動作します

したがって、明らかに問題は、変数がどのように展開されるかなどについての私の理解の欠如にあります...

任意のガイダンスをいただければ幸いです

4

3 に答える 3

0

スクリプトが必要な環境で署名されていない可能性があります (つまり、PS モードには「制限付き」実行ポリシーがあります)。ここにあなたを助ける投稿があります。

于 2012-10-11T08:29:43.810 に答える
0

1 つのマイナーなミスコード (明らかにスクリプトの失敗の理由ではありません)、文字列内の変数プロパティを間違った方法で展開しています。

"exit code: $var.ReturnValue"

適切な方法は次のとおりです。

"exit code: $($var.ReturnValue)"
于 2012-10-11T12:15:34.190 に答える
0

ここのブログで詳細を説明しています

本質的に、私は [string]::Format() を使用しましたが、うまくいくようです

于 2012-10-13T16:59:29.797 に答える