0

我有一个带有 WorkerRole 的 Azure 项目,我有一个 StartUp 任务。启动任务是一个简单的 .cmd 文件 (startup.cmd),它调用了一个 powershell 脚本 (PerformanceCounterInstaller.ps1)。看起来 .cmd 文件执行得很好,它可以找到 .ps1 文件(如果 .ps1 文件的路径或名称不正确,我会在 err.out 文件中看到它的提及)。但是,.ps1 文件的实际内容似乎完全被忽略了(写入输出命令、启动脚本、创建性能计数器,...)。我没有收到任何反馈或任何数据表明已执行任何尝试的操作。

我在 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

问题似乎是在 .cmd 文件内的 ps1 文件名和路径周围使用了单引号(即 ')。使用双引号(即“)使其行为正常......

于 2013-02-06T22:16:22.287 回答
0

我认为问题在于您将 PowerShell 的输出重定向到 std.out。我记得这是 PowerShell v2.0 中的一个流行错误。尝试替换此行

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

用这条线

powershell -ExecutionPolicy Unrestricted './PerformanceCounterInstaller.ps1'

于 2013-02-06T19:36:17.917 回答