使用参数运行位于UNC路径上的Powershell脚本文件

时间:2016-09-26 16:03:40

标签: powershell unc

需要从UNC路径运行PowerShell脚本。即\\ myserver \ folder \ a.ps1。该脚本采用参数。脚本的前几行如下

param(
[Parameter(Mandatory)]
[ValidateSet('DEV','TEST','STAGING')]    
[String]$Server
)

但是当我在计算机上的PowerShell窗口中输入\\ myserver \ folderA \ a.ps1 -S并点击选项卡时,自动完成工作也无法完成验证设置(服务器参数赢了&t; t被绑定到参数路径)。如果我在本地复制脚本并尝试此自动完成和validateset工作。我应该怎么做才能通过UNC路径调用脚本并仍然使验证集工作?感谢。

1 个答案:

答案 0 :(得分:0)

我的测试脚本:

param(
[Parameter(Mandatory)]
[ValidateSet('DEV','TEST','STAGING')]    
[String]$Server
)
echo $server

我的结果:

PS Z:\> \\net-02\shares\test.ps1

cmdlet test.ps1 at command pipeline position 1
Supply values for the following parameters:
Server: server
\\net-02\shares\test.ps1 : Cannot validate argument on parameter 'Server'. The argument "server" does not belong to
the set "DEV,TEST,STAGING" specified by the ValidateSet attribute. Supply an argument that is in the set and then try
the command again.
At line:1 char:1
+ \\net-02\shares\test.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [test.ps1], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,test.ps1

正如您所见,验证工作正常。

PS Z:\> \\net-02\shares\test.ps1

cmdlet test.ps1 at command pipeline position 1
Supply values for the following parameters:
Server: dev
dev

我怀疑你的执行政策有问题,将其设置为不受限制并再次测试。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

确保将其更改回remotesigned并签署您的脚本。