0

StartUp タスクがある WorkerRole を持つ Azure プロジェクトがあります。スタートアップ タスクは単純な .cmd ファイル (startup.cmd) であり、powershell スクリプト (PerformanceCounterInstaller.ps1) を呼び出します。.cmd ファイルは正常に実行され、.ps1 ファイルを見つけることができるようです (.ps1 ファイルのパスまたは名前が正しくない場合は、err.out ファイルに記載されています)。ただし、.ps1 ファイルの実際の内容は完全に無視されているようです (Write-Output コマンド、Start-Transcript、パフォーマンス カウンターの作成など)。試行された操作が実行されたことを示すフィードバックやデータは得られません。

err.out と std.out にある唯一のデータは .cmd ファイルからのものであり、トランスクリプト ファイルが見つかりません。

よろしく、マリオ。

関連ファイルの内容は以下で確認できます。

------ ServiceDefinition.csdef の内容 : ------

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzure2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WorkerRole name="MBAzureTestServiceWorkerRole" vmsize="Small">
    <Startup>
      <Task commandLine="StartupTasks\startuptasks.cmd" executionContext="elevated" taskType="simple" />
    </Startup>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WorkerRole>
</ServiceDefinition>

------startuptasks.cmd の内容 : ------

cd %~dp0
echo %date% %time% >>std.out
echo %date% %time% >>err.out
powershell -ExecutionPolicy Unrestricted './PerformanceCounterInstaller.ps1'  >>std.out   2>> err.out
EXIT /B 0

------PerformanceCounterInstaller.ps1 の内容 : ------

$serviceName = "Test Service"

# Write-Output "This is a test of the broadcasting system..."

Start-Transcript -Path startup_transcript.txt 
Stop-Transcript
[more stuff]
4

2 に答える 2

0

問題は、PowerShell の出力を std.out にリダイレクトしているためだと思います。これは PowerShell v2.0 でよく見られるバグであることを覚えています。この行を置き換えてみてください

powershell -ExecutionPolicy Unrestricted './PerformanceCounterInstaller.ps1'  >>std.out   2>> err.out

この行で

powershell -ExecutionPolicy 無制限 './PerformanceCounterInstaller.ps1'

于 2013-02-06T19:36:17.917 に答える
0

問題は、.cmd ファイル内の ps1 ファイル名とパスを一重引用符 (つまり ') で囲んだことです。二重引用符 (つまり ") を使用すると、適切に動作します...

于 2013-02-06T22:16:22.287 に答える