如何正确获取变量名并使用powershell将其导入任务调度?
我对这行代码有一些问题。目前,我能够循环文件夹中的所有xml文件名。但是如何使用该变量并将其放在C:\Windows\System32\Tasks\Job\之后呢?当前,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\
$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)