我正在创建一个每分钟调用一次Powershell脚本的Windows服务。 Powershell脚本返回本地系统信息。
function MachineInformation
{
[hashtable]$machine = @{}
$computerSystem = get-wmiobject Win32_ComputerSystem
$machine.machine = $computerSystem.Name
$machine.key = $computerSystem.Manufacturer
[String]$machine.value = Get-WmiObject win32_processor | Measure-Object -property LoadPercentage -Average | Select Average
[DateTime]$machine.timestamp = Get-Date
Return $machine
}
MachineInformation
当我在Powershell ISE中运行时,它可以工作。
我的C#Windows服务然后尝试调用脚本
PowerShell ps = PowerShell.Create();
ps.AddScript("C:\\Scripts\\SystemInfo.ps1");
Collection<PSObject> results = ps.Invoke();
foreach (PSObject result in results)
{
//Do something
}
调试时,结果返回0.这几天前工作正常,现在已经决定停止。它让我疯狂了好几个小时。我做错了什么?
答案 0 :(得分:2)
将构建类型从32位更改为64位,这可以解决您的问题。
答案 1 :(得分:1)
实际上我做了一个项目,并以“任何CPU”模式构建,它工作正常。我的问题是关于“位置”。我想通过尝试从另一个文件夹执行脚本,问题是在C#中我看不到错误消息。
为了解决我的问题,我在调用我的脚本之前插入了“Set-Location”cmdlet,例如:“Set-Location'c:\ myscriptlocation'; c:\ myscriptlocation \ myscript.ps1”。