windows 如何防止变量的应用?

0ve6wy6x  于 2022-12-24  发布在  Windows
关注(0)|答案(1)|浏览(102)

我知道这可能是一个非常基本的问题,应该存在于PowerShell文档中,但问题是我不知道如何查找这个问题的答案。
问题是:如何防止变量在代码中被请求之前被应用?
示例:

#Variable
$MoveToTest = Move-Item -Path "C:\Test.jpg" -Destination "C:\Test Folder" -force -ea 0

#Code
If (Test-Path C:\*.mp4) {
   $MoveToTest
}

如果-Path中存在任何.mp4文件,则If条件要求移动.jpg文件,但是代码的编写方式是在使用If条件之前应用变量。
对不起,我知道这可能是非常基本的,但由于我自己学习和根据日常需要,我最终错过了一些基本原则。

iszxjhcz

iszxjhcz1#

您可以通过将一段代码 Package 在ScriptBlock {...}中来 * 延迟 * 执行它:

# Variable now contains a scriptblock with code that we can invoke later!
$MoveToTest = { Move-Item -Path "C:\Test.jpg" -Destination "C:\Test Folder" -force -ea 0 }

# Code
If (Test-Path C:\*.mp4) {
    # Use the `&` invocation operator to execute the code now!
    &$MoveToTest
}

这类似于function关键字的工作方式--它只是将脚本块与函数名而不是变量相关联--当然,您也可以定义一个函数:

function Move-TestJpgToTestFolder {
    Move-Item -Path "C:\Test.jpg" -Destination "C:\Test Folder" -force -ea 0
}

# Code
If (Test-Path C:\*.mp4) {
    # We no longer need the `&` invocation operator to execute the code, PowerShell will look up the function name automatically!
    Move-TestJpgToTestFolder
}

相关问题