我对脚本编写(尤其是PowerShell)和Stack Overflow都很新,因此请原谅我的无知并请耐心等待!我将尽力明确地解释我想要做的事情,并希望有人能详细回答我该做什么来使其有效。
预期的处理/工作流程:一个同事下载了包含所有必要文件的“Install.zip”文件。这个“Install.zip”文件包含“Setup.bat”文件(用于计算机配置), “Fubar.zip”文件,2个powershell脚本和一个自定义powerplan(.pow)文件。一旦下载完成,他们将运行“Setup.bat”文件,它将几乎完成所有工作。在批处理文件内部,它调用2个powershell脚本。1)“Download.ps1”-从Web下载其他文件。 2)“Unzip.ps1” -解压“Fubar.zip”并将内容放入另一个文件夹-C:\ TEST \
问题:我最近熟悉了在批处理文件中使用%〜dp0。我希望确保同事最初下载Install.zip的位置不会影响我的批处理文件。例如..有些人会将.zip文件下载到“Downloads”文件夹,然后将内容提取到正确的目标位置。其他人将在特定文件夹中下载.zip,然后在那个文件夹中解压它。[例如:C:\ Alex \ Install.zip--提取-- C:\ Alex \ Install \((内容))]因此,由于变量,我尝试不预定义文件位置。我已经让%〜dp0在批处理文件中的所有需要使用它的地方正常工作。我的唯一问题是如何使powershell脚本使用与批处理文件相同的工作目录。 *我的批处理文件和powershell脚本将始终位于相同的目录中。(无论路径是什么)
目标:我希望我的powershell脚本(“Unzip.ps1”)在其当前运行的目录中查找“Fubar.zip”文件。 (再次-无论路径是什么)。我基本上想消除可能影响powershell脚本的任何变量。我希望它始终使用其当前工作目录来定位Fubar.zip。我基本上需要powershell使用其当前工作目录或找到一种方法来获取其当前工作目录并使用该目录查找“Fubar.zip”。
我当前的“Unzip.ps1” powershell脚本非常基本。
Unzip.ps1:Expand-Archive -Force c:\ ALEX \ Install.zip \ Fubar.zip -dest c:\ TEST \
调用Unzip.ps1脚本的批处理文件命令:Powershell.exe -executionpolicy remotesigned -File %〜dp0UNZIP.ps1
请记住,我正在学习脚本编写,并且正在自学。我的知识有限,但我已经走到了这一步,这是我卡住的唯一部分。请给出清晰的响应。任何帮助或建议将非常感激!使用PowerShell 5.0
提前感谢您!
Split-Path -Parent $MyInvocation.MyCommand.Path
或者Split-Path -Parent $PSCommandPath
或其他什么? - JosefZ