1

特定の dotnet バージョンを確認し、リモート マシンに見つからない場合はインストールするバッチ ファイルを作成しています。

現在、リモート マシンでコマンドを実行するために、psexec.exe を使用しています。

これを使用して .net バージョンを確認します。reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v バージョン | findstr /i バージョン | ソート /+26 /r

バッチ ファイルを作成し、バージョン dotnet 4.5 がインストールされているかどうかを確認し、見つからない場合はインストールする必要があります

誰かがここで助けてくれますか?

以下のスクリプトを実行しました

リモート マシンで Power Shell を使用して以下のスクリプトを呼び出しています。

$vers = reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i version | sort /+26 
$VC="Version    REG_SZ    4.5.*"
$dotnetInstalled = "False";
foreach ($v in $vers)
{
  if ($v -match $VC)
  {
   $dotnetInstalled  = "True"
  }
}

if($dotnetInstalled -match "False")
{   
  Start-Process 'E:\dotNetFx45_Full_x86_x64.exe' -ArgumentList "/s" -Wait
}

これで、dotNetFx45_Full_x86_x64.exe がタスク バーで実行されていることがわかりますが、プロセスは競合していません。(1時間以上待ちました)

これについて何が問題になる可能性がありますか?

4

3 に答える 3

0

スクリプトの問題は、インストーラーに間違ったスイッチを使用していることです。代わりに「/q /norestart」を使用してください。Windows UAC が有効になっている場合、管理者権限に問題がある可能性があるため、RunAs 動詞を呼び出します。

Start-Process -FilePath "\\fileserver\share\dotNetFx45_Full_x86_x64.exe" -ArgumentList "/q /norestart" -Wait -Verb RunAs

スクリプト全体をリモート サーバーに渡す代わりに、ローカルでコードを実行し、Invoke-Command を使用して .Net バージョンを確認する、インストーラーを生成します。

于 2014-02-18T09:38:55.387 に答える
0

この例では は必要ありません。目的のマシン名psexecに置き換えるだけです。\\machine

CALL :CHECK_NET_VER "2.0.50727.5420"
IF ERRORLEVEL 1 ECHO .NET 2.0.50727.5420 not found!
CALL :CHECK_NET_VER "1.0.00000.0000"
IF ERRORLEVEL 1 ECHO .NET 1.0.00000.0000 not found!
GOTO :EOF

:CHECK_NET_VER
FOR /F "TOKENS=*" %%R IN ('REG QUERY "\\machine\HKLM\Software\Microsoft\NET Framework Setup\NDP"') DO FOR /F "TOKENS=3 SKIP=1" %%V IN ('REG QUERY "%%R" /V VERSION') DO IF "%%V" == "%~1" TYPE NUL&GOTO :EOF
TYPE 2>NUL
GOTO :EOF
于 2013-07-26T10:56:23.667 に答える