node.js - 如何使用nodejs执行使每个离线磁盘在线的powershell脚本
问题描述
直接在powershell中写入以下内容,将使系统中找到的每个离线磁盘都在线
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
但是,问题是当我尝试将其作为 onlinedisktest.ps1 的脚本时,我将收到以下错误消息。
Where-Object : A positional parameter cannot be found that accepts argument 'False'.
At C:\Users\me\Desktop\project-main\new\scripts\onlinedisktest.ps1:1 char:12
+ Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WhereObjectCommand
我的代码
static async run(executable, args, opts = {}) {
return new Promise((resolve, reject) => {
const child = spawn(executable, args, {
shell: true,
stdio: ["pipe", process.stdout, process.stderr],
...opts,
});
child.on("error", reject);
child.on("exit", (code) => {
if (code === 0) {
resolve(code);
} else {
const e = new Error('Process exited with error code ' + code);
e.code = code;
reject(e);
}
});
});
}
static async exeOnlineDisk () {
try {
const code = await this.run('powershell', ["-executionpolicy", "unrestricted", "-file", __dirname + "\\scripts\\onlinedisktest.ps1"]);
if (code == 0) {
//success
}
} catch (e) {
console.error(e);
process.exit(e.code || 1);
}
}
解决方案
推荐阅读
- css - React - 其他弹出窗口顶部的弹出位置
- javascript - 在 div reactJS 中禁用点击功能?
- python - 使用rapidapi api制作json文件
- python - 打破两个循环和两个 if 语句 - Python
- arduino - 从 C++ 函数返回对象引用
- c# - 如果在 c# wpf 应用程序中存在,则单击按钮删除数据库返回错误
- jquery - Laravel 7.24-Jquery 和 Ajax -单击提交按钮无法正常工作
- java - 在单元测试中测试私有方法
- sql - 包含两个 VARCHAR2 值时如何忽略空格
- vba - 如何获取插入记录的ID