param 在 64 位上按预期工作,但在 32 位 PowerShell 上则不然

问题描述 投票:0回答:1

当下面的代码在 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 

错误:

enter image description here

知道为什么会发生这种情况以及如何解决吗?

powershell parameter-passing
1个回答
0
投票

错误消息不是很有帮助,但您的问题是

param()
声明必须是脚本或函数中的 first 语句才能被识别为这样;唯一的例外是它之前只能有评论
using
声明。

© www.soinside.com 2019 - 2024. All rights reserved.