运行 包含 <、' 和 " 的 Windows 10 Powershell 命令出错
Error while running a Windows 10 Powershell command that contains <, ', and "
根据 this Medium post,我正在尝试使用 HTTPS 设置本地 Next.js 开发服务器。
但是当我在 Windows 10 Powershell 中 运行 这个命令时:
openssl req -x509 -out localhost.crt -keyout localhost.key \
-newkey rsa:2048 -nodes -sha256 \
-subj '/CN=localhost' -extensions EXT -config <( \
printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
我收到这个错误 The '<' operator is reserved for future use.
:
At line:1 char:142
+ ... des -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ prin ...
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
我已经尝试了一些方法,但无法使此命令正常工作。
该命令适用于 bash,因此显然它不能在 PowerShell 中 运行。有很多必要的改变
- PowerShell currently doesn't support process substitution (which is that
<(command)
part) 所以你必须将输出保存到文件
- PowerShell 中的 escape character 是
`
而不是 \
因此您必须将所有这些转义字符替换为正确的
所以结果会是这样的
"[dn]`nCN=localhost`n[req]`ndistinguished_name = dn`n[EXT]`nsubjectAltName=DNS:localhost`nkeyUsage=digitalSignature`nextendedKeyUsage=serverAuth" > tmp.conf
openssl req -x509 -out localhost.crt -keyout localhost.key `
-newkey rsa:2048 -nodes -sha256 `
-subj '/CN=localhost' -extensions EXT -config tmp.conf
Remove-Item tmp.conf
但没必要排这么长的队。它应该更好地在多行中更具可读性
@'
[dn]
CN=localhost
[req]
distinguished_name = dn
[EXT]
subjectAltName=DNS:localhost
keyUsage=digitalSignature
extendedKeyUsage=serverAuth
'@ > tmp.conf
openssl req -x509 -out localhost.crt -keyout localhost.key `
-newkey rsa:2048 -nodes -sha256 `
-subj '/CN=localhost' -extensions EXT -config tmp.conf
Remove-Item tmp.conf
根据 this Medium post,我正在尝试使用 HTTPS 设置本地 Next.js 开发服务器。
但是当我在 Windows 10 Powershell 中 运行 这个命令时:
openssl req -x509 -out localhost.crt -keyout localhost.key \
-newkey rsa:2048 -nodes -sha256 \
-subj '/CN=localhost' -extensions EXT -config <( \
printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
我收到这个错误 The '<' operator is reserved for future use.
:
At line:1 char:142
+ ... des -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ prin ...
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
我已经尝试了一些方法,但无法使此命令正常工作。
该命令适用于 bash,因此显然它不能在 PowerShell 中 运行。有很多必要的改变
- PowerShell currently doesn't support process substitution (which is that
<(command)
part) 所以你必须将输出保存到文件 - PowerShell 中的 escape character 是
`
而不是\
因此您必须将所有这些转义字符替换为正确的
所以结果会是这样的
"[dn]`nCN=localhost`n[req]`ndistinguished_name = dn`n[EXT]`nsubjectAltName=DNS:localhost`nkeyUsage=digitalSignature`nextendedKeyUsage=serverAuth" > tmp.conf
openssl req -x509 -out localhost.crt -keyout localhost.key `
-newkey rsa:2048 -nodes -sha256 `
-subj '/CN=localhost' -extensions EXT -config tmp.conf
Remove-Item tmp.conf
但没必要排这么长的队。它应该更好地在多行中更具可读性
@'
[dn]
CN=localhost
[req]
distinguished_name = dn
[EXT]
subjectAltName=DNS:localhost
keyUsage=digitalSignature
extendedKeyUsage=serverAuth
'@ > tmp.conf
openssl req -x509 -out localhost.crt -keyout localhost.key `
-newkey rsa:2048 -nodes -sha256 `
-subj '/CN=localhost' -extensions EXT -config tmp.conf
Remove-Item tmp.conf