当下面的代码在 64 位 Windows 上使用 64 位 Powershell 运行时,运行 powershell 脚本时在命令行中作为参数传递的目录列表会正确发生。
param (
[string]$Path = "."
)
Get-ChildItem -Path $Path
但是当我强制它在 64 位 Windows 上作为 32 位 Powershell 运行时,它会给出一个错误,如下所示
param is not recognized as cmdlet
,并且会列出当前目录 .
,而不是作为参数传递的目录。如果我一开始就保留 param
也是同样的行为。
# Check if the script is running in 64-bit PowerShell
if ([Environment]::Is64BitProcess) {
# Path to the 32-bit PowerShell executable
$powershell32 = "$env:windir\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
# Relaunch the script in 32-bit PowerShell
& $powershell32 -ExecutionPolicy Bypass -File $PSCommandPath
exit
} else {
# Running in 32-bit PowerShell, continue executing the script
Write-Host "Script is running in 32-bit PowerShell."
}
param (
[string]$Path = "."
)
Get-ChildItem -Path $Path
错误:
知道为什么会发生这种情况以及如何解决吗?
错误消息不是很有帮助,但您的问题是
param()
声明必须是脚本或函数中的 first 语句才能被识别为这样;唯一的例外是它之前只能有评论或using
声明。