Azure模拟器 - 启动任务 - Powershell脚本的内容似乎被忽略

时间:2013-02-06 01:56:06

标签: powershell azure emulation task startup

我有一个带有WorkerRole的Azure项目,我有一个StartUp任务。启动任务是一个简单的.cmd文件(startup.cmd),它调用powershell脚本(PerformanceCounterInstaller.ps1)。看起来.cmd文件执行得很好,它可以找到.ps1文件(如果.ps1文件的路径或名称不正确,我在err.out文件中看到它的提及)。但是,.ps1文件的实际内容似乎完全被忽略(写入 - 输出命令,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]

2 个答案:

答案 0 :(得分:0)

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

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

这一行

  

powershell -ExecutionPolicy不受限制   ” ./PerformanceCounterInstaller.ps1'

答案 1 :(得分:0)

问题似乎是在.cmd文件中围绕ps1文件名和路径使用单引号(即')。使用双引号(即“)”使其表现正常......