0

我正在为特定客户端编写 PowerShell 脚本。我在我们的几台台式机上测试了该脚本,并在客户端系统上尝试了该脚本。我遇到了以下问题:

问题 #1

作为一个优秀的小蜜蜂,我定义了一堆帮助文本,所以当你运行Get-Help我的脚本时,它会给你详细的帮助。我使用了以下语法:

<#
Get-Help

.SYNOPSIS
  C> FileWatcher.ps1 -FilePath <FileName> -SenderEmail Bob@Foo.com ^
    -ToEmail Joe@Bar.com -SmtpServer smtp.foo.com

.DESCRIPTION
Blah, blah, blah...
#>

在我的机器上,它可以工作,这被认为是评论。但是,在客户端的机器上,一旦它看到C>它认为是重定向的,就会产生一个错误。去掉#>and<##在每行前面加上这个问题就解决了这个问题,给我们带来了问题 #2。

问题 #2

我定义了一堆这样的参数:

Param (
    [ValidateScript({Test-Path $_ -PathType 'Leaf'})]
    [Parameter(
        Position=0,
        HelpMessage="File you want to watch")]
        $FilePath = "\\rke032\QuickCon\wincommlog.000",

    [String]
    [Parameter(
    blah, blah, blah

PowerShell 咳嗽[ValidateScript({Test-Path $_ -PathType 'Leaf'})]说它不是一个有效的类型。

正如我所说,我们在各种 Windows 机器上对此进行了测试。我有一台 Windows XP 机器。它是 PowerShell 版本 # 6.0.6002.1811。在另一台运行 Windows 7 的计算机上,PowerShell 版本为 6.1.7600。

在给我们这些错误的客户端机器(Windows 2008 Server)上,版本是 6.0.6001.18000。

我们通过打开一个 PowerShell 窗口来运行 Powershell 脚本,然后输入脚本的名称。ExecutionPolicy 设置为无限制。该脚本的末尾有一个 *.ps1 后缀。我不敢相信修订版 6.0.6002 和 6.0.6001 之间存在无法识别的语法问题之间的巨大差异。还有其他事情吗?

4

1 回答 1

1

比较输出$PSVersionTable而不是构建版本。特别是该PSVersion属性是有趣的。我猜你在一台机器上有 PS1,在另一台机器上有 PS2。该扩展.ps1与 PowerShell 版本无关。

通过注意到块注释不起作用并且参数属性也不起作用,这种猜测得到了加强。

于 2012-04-19T20:14:22.597 回答