如果脚本在子目录中,如何执行代码块?

时间:2018-05-07 17:08:44

标签: powershell

基本上,我已经获得了一段代码,如果它只在 中执行,如果它在一个子目录中。以下是我一直在玩的代码:

if((Get-Location)-ne" T:\ Content \ WORK *"){         [System.Windows.MessageBox] :: Show("您正试图在T:驱动器的子文件夹外运行该文件。         这将导致错误。         您确定要继续吗?","确认执行"," YesNoCancel","警告")     }

我认为通配符操作符是包容性的:意味着它将包含WORK文件夹和子文件夹,但代码块在" WORK"中执行。文件夹和我执行的任何其他文件夹。

相反,我想要显示此消息,如果我说...只是\内容或C:。如果条件为假,我想继续正常执行。如果我在\ Content \ WORK \ Scripts或任何其他子文件夹中,我通常不希望它显示。

如何以最简单的方式修改此代码,以便在脚本(或当前目录)返回到路径的子目录中时执行?

如果有人对此感兴趣:

    if((Get-Location) -NotLike "T:\Content\WORK*"){ 
$Result=[System.Windows.MessageBox]::Show("You are attempting to run the file outside a subfolder of the T: drive. This could result in errors. Are you sure you wish to continue?","Confirm Execution","YesNoCancel","Warning") switch($Result) { 
"No" {exit} 
"Cancel" {exit} } 
}

1 个答案:

答案 0 :(得分:1)

你很亲密。

你需要改变你的状况

自:

if((Get-Location) -ne "T:\Content\WORK\*"

要:

if((Get-Location).path-like "T:\Content\WORK\*"

EbGreen是正确的:-ne会逐字地评估条件。如果您想使用通配符*进行评估,则需要使用-like。 另外,要获取当前路径,您需要将.path添加到(Get-location)