【问题标题】:Running powershell script on network machine在网络机器上运行 powershell 脚本
【发布时间】:2014-07-18 04:25:13
【问题描述】:

我正在从 bat 文件运行 Powershell 脚本。这两个文件放在网络服务器上,我试图通过访问网络服务器文件夹从我的机器上运行这些文件。我收到以下错误:

CMD 不支持将 UNC 路径作为当前目录。

当我执行 bat 文件时,它会尝试从路径中读取脚本文件

C:\Windows\System32

不是来自 bat 文件中设置的当前目录。

当我在本地机器上运行时,这个脚本和 bat 文件可以正常工作。

我尝试在 Google 上找到这个,可能的解决方案需要更改网络服务器上的一些设置,这在我的情况下是不可能的。

对此有什么可能的解决方案?
我正在使用 PowerShell 2.0
这是我运行 Powershell 脚本的 bat 文件

setlocal & pushd .

:getting current directory  
 cd /d %~dp0

Powershell.exe Set-ExecutionPolicy -ExecutionPolicy RemoteSigned  
Powershell.exe . '%CD%\Hotfix-Automation-Installer.ps1' crpt    
exit /B

【问题讨论】:

    标签: batch-file cmd powershell-2.0


    【解决方案1】:

    就像消息说:CMD 不支持 UNC 路径作为当前目录,因此在使用 UNC 路径时不应使用 %CD%.

    但是,实际上阻止运行 PowerShell 脚本的是路径周围的单引号:

    Powershell.exe . '%CD%\Hotfix-Automation-Installer.ps1' crpt
    

    单引号在 CMD 中不是有效的引号字符,因此您的脚本实际上是在尝试从当前目录中的子文件夹 ' 运行 PowerShell 脚本。哪个不存在。

    将你的脚本改成这样,它应该可以正常工作:

    @echo off
    
    powershell -ExecutionPolicy ByPass -File "%~dp0Hotfix-Automation-Installer.ps1" crpt
    

    【讨论】:

    • "-ExecutionPolicy Bypass" 将起作用,但我更喜欢“RemoteSigned”,然后将特定的 UNC 路径添加到 Intranet 区域,以便从这些位置运行未签名的脚本。请参阅此处的选项 #2:setspn.blogspot.com/2011/05/…
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多