需要从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路径调用脚本并仍然使验证集工作?感谢。
答案 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并签署您的脚本。