如何正确获取变量名并使用powershell将其导入任务调度?

如何正确获取变量名并使用powershell将其导入任务调度?,powershell,powershell-4.0,Powershell,Powershell 4.0,我对这行代码有一些问题。目前,我能够循环文件夹中的所有xml文件名。但是如何使用该变量并将其放在C:\Windows\System32\Tasks\Job\之后呢?当前,powershell始终将其检测为文本 $fileDirectory=“C:\Windows\System32\Tasks\Job\*.xml”; foreach($Get ChildItem$fileDirectory中的文件) { $file.name 注册ScheduledTask-xml(获取内容“C:\Windows\

我对这行代码有一些问题。目前,我能够循环文件夹中的所有xml文件名。但是如何使用该变量并将其放在C:\Windows\System32\Tasks\Job\之后呢?当前,powershell始终将其检测为文本

$fileDirectory=“C:\Windows\System32\Tasks\Job\*.xml”;
foreach($Get ChildItem$fileDirectory中的文件)
{
$file.name
注册ScheduledTask-xml(获取内容“C:\Windows\System32\Tasks\Job\$file.name”|输出字符串)-TaskName$file.name-TaskPath“\Job”-用户“MyAccount”-强制
}

您需要在
“C:\Windows\System32\Tasks\Job\$file.name”
中的
$file.name
周围加上,否则它只是试图替换
$file
部分

比较一下:

PS>$file=获取项目“c:\temp\temp.txt”
PS>“C:\Windows\System32\Tasks\Job\$file.name”
C:\Windows\System32\Tasks\Job\C:\temp\temp.txt.name
为此:

PS>$file=获取项目“c:\temp\temp.txt”
PS>“C:\Windows\System32\Tasks\Job\$($file.name)”
C:\Windows\System32\Tasks\Job\temp.txt
第一个示例将
$file
(这是一个对象)计算为
C:\temp\temp.txt
,并仅替换字符串中的
$file
,将尾部的
.name
保留为文本

第二个示例将
$($file.name)
计算为
temp.txt
(它是一个字符串),并替换整个
$($file.name)
子表达式

但更简单的是,在您的情况下,您可以使用
$file.FullName
,它提供了完整的路径:

PS>$file=获取项目“c:\temp\temp.txt”
PS>$file.FullName
c:\temp\temp.txt

您需要在
“C:\Windows\System32\Tasks\Job\$file.name”
中的
$file.name
周围加上,否则它只是试图替换
$file
部分

比较一下:

PS>$file=获取项目“c:\temp\temp.txt”
PS>“C:\Windows\System32\Tasks\Job\$file.name”
C:\Windows\System32\Tasks\Job\C:\temp\temp.txt.name
为此:

PS>$file=获取项目“c:\temp\temp.txt”
PS>“C:\Windows\System32\Tasks\Job\$($file.name)”
C:\Windows\System32\Tasks\Job\temp.txt
第一个示例将
$file
(这是一个对象)计算为
C:\temp\temp.txt
,并仅替换字符串中的
$file
,将尾部的
.name
保留为文本

第二个示例将
$($file.name)
计算为
temp.txt
(它是一个字符串),并替换整个
$($file.name)
子表达式

但更简单的是,在您的情况下,您可以使用
$file.FullName
,它提供了完整的路径:

PS>$file=获取项目“c:\temp\temp.txt”
PS>$file.FullName
c:\temp\temp.txt

另一个选项是使用f格式运算符

$fileDirectory = "C:\Windows\System32\Tasks\Job\*.xml";
foreach($file in Get-ChildItem $fileDirectory)
{
    $file.name
Register-ScheduledTask -xml (Get-Content "C:\Windows\System32\Tasks\Job\{0}" -f $file.name | Out-String) -TaskName $file.name -TaskPath "\Job" -User "MyAccount" –Force
}

另一个选项是使用f格式运算符

$fileDirectory = "C:\Windows\System32\Tasks\Job\*.xml";
foreach($file in Get-ChildItem $fileDirectory)
{
    $file.name
Register-ScheduledTask -xml (Get-Content "C:\Windows\System32\Tasks\Job\{0}" -f $file.name | Out-String) -TaskName $file.name -TaskPath "\Job" -User "MyAccount" –Force
}
执行
“C:\Windows\System32\Tasks\Job\$($file.Name)”
(连接路径-Path'C:\Windows\System32\Tasks\Job'-ChildPath$file.Name)
执行
“C:\Windows\System32\Tasks\Job\$($file.Name)”
(连接路径-Path'C:\Windows\System32\Tasks\Job'-ChildPath$file.Name)