Powershell 从单个参数解析文件名和目录

Powershell 从单个参数解析文件名和目录,powershell,Powershell,我正在编写一个脚本,该脚本将创建一个用于进一步自动化的XML文档。除此之外,dropDir和fileName应该是参数。但由于这两个都是必需的,而且文件将始终位于dropDir中 我想知道是否有一种方法可以将这两个参数组合成一个参数,然后从单个字符串中解析出文件 例如,用户将调用脚本: \iAmAScript.ps1-路径C:\prodfiles\settings.xml 在iAmAScript内部,它将按逻辑执行以下操作: If (![System.IO.File]::Exists($path

我正在编写一个脚本,该脚本将创建一个用于进一步自动化的XML文档。除此之外,
dropDir
fileName
应该是参数。但由于这两个都是必需的,而且文件将始终位于
dropDir

我想知道是否有一种方法可以将这两个参数组合成一个参数,然后从单个字符串中解析出文件

例如,用户将调用脚本:

\iAmAScript.ps1-路径C:\prodfiles\settings.xml

在iAmAScript内部,它将按逻辑执行以下操作:

If (![System.IO.File]::Exists($path)){
    New-Item $path -type file
    $dropLoc = $path.<some method returning C:\prodfiles\>
    $fileName = $path.<some method returning settings.xml>
}
如果(![System.IO.File]::存在($path)){
新项$path-type文件
$dropLoc=$path。
$fileName=$path。
}
我只是不太确定如何在Powershell的上下文中做到这一点,这是尝试找出在Powershell中使用
LastIndexOf
方法截断最后\?

左侧所有内容的最佳方法,您可以使用它来获取这些组件:

$file = $path | Split-Path -Leaf
$dir = $path | Split-Path -Parent
.NET方法如下所示:

$file = [System.IO.Path]::GetFileName($path)
$dir = [System.IO.Path]::GetDirectoryName($path)
您还可以获取项目并使用其属性:

$item = Get-Item -Path $path
$item.Name           # the file
$item.DirectoryName  #the directory

此对象可以传递给大多数接受文件参数的cmdlet,并公开其他方法。但要做到这一点,文件必须先存在,因此您必须先创建它,然后获取项目,但这在以后的脚本中可能会很有用。

天哪,这太简单了。