【发布时间】:2021-02-05 19:31:23
【问题描述】:
我使用 node.js 和 Express.js 创建注册应用程序
所以它有名称表单和密码表单和提交按钮。
我想做,当我点击提交按钮时,运行 powershell 脚本。该脚本的意思是,添加本地windows用户并设置密码。
在 PowerShell 中,此脚本运行良好。这个powershell脚本应该以管理员身份运行。
$PASSWORD= ConvertTo-SecureString –AsPlainText -Force -String kamisama123@@
New-LocalUser -Name "gohan" -Description "sleepy" -Password $PASSWORD
执行此命令后,本地用户被创建。
我在我的代码中使用 node-powershell 包。此代码意味着当我提交我的信息并运行 PowerShell 脚本并将信息添加到 mongodb 时
router.post(`/submit`, async function (req, res) {
let name = req.body.name;
let password = req.body.password;
let passwordCheck = req.body.passwordCheck;
let company = req.body.company;
let registerStatus = false;
let executives = req.body.executives;
let registerDate = Date.now();
let ps = new Shell();
let cmd = new PSCommand(`$PASSWORD= ConvertTo-SecureString ?AsPlainText -Force -String ${password}`)
let script = new PSCommand(`New-LocalUser -Name "${name}" -FullName "${name}" -Description "${name}" -PasswordNeverExpires -Password $PASSWORD`)
ps.addCommand(cmd);
ps.addCommand(script);
ㅡㅛ
try {
if (password !== passwordCheck) {
res.redirect('/')
} else {
let encodedPassword = Base64.encode(password);
await User.create({
name,
password: encodedPassword,
company,
registerStatus,
executives,
registerDate
}, (err, result) => {
if (err) throw err;
})
res.redirect(`/success/${name}`)
}
} catch (err) {
throw err;
}
})
但是错误抛出
(node:21596) UnhandledPromiseRejectionWarning: TypeError: Shell is not a constructor
我不知道错误来自哪里。
【问题讨论】:
-
喜欢 DBZ 参考 :)。你可以粘贴整个脚本吗?我们没有看到这里定义的 User 函数。还要确保您正在使用
const Shell = require('node-powershell');加载类型 -
@FoxDeploy 完整代码在我的 github gist 中。 gist.github.com/writingdeveloper/…
-
你有什么理由一定要使用
node-powershell吗?如果没有,你可以使用 Node 内置的child_process。
标签: javascript node.js powershell