Scripting 自动选择脚本路径

Scripting 自动选择脚本路径,scripting,path,Scripting,Path,我对脚本和powershell还是相当陌生的。然而,我在脚本中遇到了一个常见的问题。在我的部署环境中,我主要处理Windows7和Windows8。我通过在USB上使用批处理文件部署了几个程序。我知道一切都可以通过网络推送,但我没有这样的权限。现在要使用USB方法,我必须为E:和D:创建一个路径,并希望在插入USB时收到其中一个字母或整个脚本失败 以下是一个例子: Title Installing "Program" Echo (Step # of #) Echo Installing

我对脚本和powershell还是相当陌生的。然而,我在脚本中遇到了一个常见的问题。在我的部署环境中,我主要处理Windows7和Windows8。我通过在USB上使用批处理文件部署了几个程序。我知道一切都可以通过网络推送,但我没有这样的权限。现在要使用USB方法,我必须为E:和D:创建一个路径,并希望在插入USB时收到其中一个字母或整个脚本失败

以下是一个例子:

Title Installing "Program"  
Echo (Step # of #)  
Echo Installing "Program". . .  
Echo Please Wait. . .  
Echo Attempting Install from D:/  
pushd D:\\Path  
Echo Attempting Install from E:/  
pushd E:\\Path  
Echo Complete  
cls

是否有一种方法可以将路径压缩到一行,以拾取D:,E:或另一个驱动器号?这也必须能够用于其他闪存驱动器。是否执行以下操作:.\path work?

这取决于您使用的pWersell版本。较新版本将使用$PSCommandPath为您提供脚本路径,您可以使用$PSCommandPath[0]提取驱动器号

对于旧版本,可以使用$MyInvocation.MyCommand.path获取路径,并使用提取驱动器号

split-path $MyInvocation.MyCommand.Path -Qualifier
我建议使用第二种方法,因为它在可能只有旧版本的不同机器之间更易于移植


如果您是在批处理文件中运行此脚本,而不是在powershell脚本中运行,则%do将为您提供脚本的驱动器。

脚本也在闪存驱动器上吗?是的,脚本和powershell都在。我不确定您所说的命令行脚本是什么意思。你是说批处理文件.bat扩展名吗?抱歉。是的,首先要运行的是一个批处理文件,它调用几个不同的PowerShell。稍后我会将它们压缩为一个PowerShell。