基本上,我已经获得了一段代码,如果它只在 中执行,如果它在一个子目录中。以下是我一直在玩的代码:
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} }
}
答案 0 :(得分:1)
你很亲密。
你需要改变你的状况
自:
if((Get-Location) -ne "T:\Content\WORK\*"
要:
if((Get-Location).path-like "T:\Content\WORK\*"
EbGreen是正确的:-ne
会逐字地评估条件。如果您想使用通配符*
进行评估,则需要使用-like
。
另外,要获取当前路径,您需要将.path
添加到(Get-location)