使用Powershell创建任务

使用Powershell创建任务,powershell,Powershell,下午好: 我已经写了一个PS脚本,可以在我的本地机器上创建任务;但是,我的目的是让它在列表中的多台机器上配置任务。我似乎找不到一个方法来做这件事。我确实看到了一些关于使用新CimSession的东西,但我不认为这是我想要的 这是我的剧本: foreach ($confighost in (Get-Content -Path "C:\Users\*User*\Documents\Test.txt")) { #Check for existent script in Task Scheduler

下午好:

我已经写了一个PS脚本,可以在我的本地机器上创建任务;但是,我的目的是让它在列表中的多台机器上配置任务。我似乎找不到一个方法来做这件事。我确实看到了一些关于使用新CimSession的东西,但我不认为这是我想要的

这是我的剧本:


foreach ($confighost in (Get-Content -Path "C:\Users\*User*\Documents\Test.txt"))
{
#Check for existent script in Task Scheduler

$taskpath = "\\$confighost\c$\Windows\System32\Tasks\LocalUserCleanUp"
$testtask = Test-Path -path $taskpath

If ($testtask -eq $true)
    {

        #If Task is already present, Do Not Run

        Write-Host "CleanUp Task Listed in Task Scheduler On" $confighost ". Will not Implement Task..."

    }

else
    {

        #If Task Does Not Exist Create Task
        New-CimSession -ComputerName $confighost
        Write-Host "No CleanUp Task Listed in Task Scheduler, Creating Task..."
        $action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument "C:\Users\*Users*\Documents\ProfileCleanup.ps1"
        $trigger = New-ScheduledTaskTrigger -Daily  -At 2am
        $settings = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
        Register-ScheduledTask -Action $action -Trigger $trigger -Principal $settings -TaskName "LocalUserCleanUp" -Description "Checks user accounts nightly to see if they are older than 30 days"

    }
} 
我期待着你的洞察力。再次感谢您的帮助

您可以使用在目标服务器上执行任务创建代码:

$cred = Get-Credential # There are a number of methods to automate reading the credential from a file
Invoke-Command -Credential $cred -ComputerName server01, server02, server0X {
  # Your task creation code here
}
如果在本地会话中定义了远程代码中所需的任何变量,则可以在
Invoke命令中引用这些变量,方法是在本地变量前面加上
$using:
前缀,以便在目标服务器上执行任务创建代码:

$cred = Get-Credential # There are a number of methods to automate reading the credential from a file
Invoke-Command -Credential $cred -ComputerName server01, server02, server0X {
  # Your task creation code here
}

如果您在本地会话中定义了远程代码中所需的任何变量,您可以在
Invoke命令中引用这些变量
通过在本地变量前面加上
$using:

我想您应该将新的CimSession分配给一个变量,并对该变量执行操作hmmm。。。您的意思是要执行类似$PCTask=New CimSession-ComputerName$confighost的操作,然后在Register-ScheduledTask前面执行类似的操作:$PCTask(Register ScheduledTask…)沿着这些路线执行的操作。。。我想我在以下方面遇到了问题…我想您应该将新的CimSession分配给一个变量,并对该变量执行操作HMMM。。。您的意思是要执行类似$PCTask=New CimSession-ComputerName$confighost的操作,然后在Register-ScheduledTask前面执行类似的操作:$PCTask(Register ScheduledTask…)沿着这些路线执行的操作。。。我猜我很难跟上…我现在正在阅读调用命令!如果我继续努力,我会再次发帖。谢谢你们两位的帮助。我一定会在这里发布工作代码作为最终答案!因此,我尝试使用use the Invoke命令,并收到以下错误:
连接到远程服务器PC失败,错误消息如下:WinRM无法完成该操作。验证指定的计算机名是否有效,…+CategoryInfo:OpenError::String)[],PSRemotingTransportException+FullyQualifiedErrorId:WinrOperationTimeout,PSSessionStateBreaked
我的意思,是否有办法提升我在远程主机上的权限,以便我可以通过此脚本远程配置此任务…或者您连接的服务器名称错误,不在DNS中,或者您正在获得防火墙。如果您的环境中启用了UAC,请查看。我现在正在阅读Invoke命令!如果我继续努力,我会再次发帖。谢谢你们两位的帮助。我一定会在这里发布工作代码作为最终答案!因此,我尝试使用use the Invoke命令,并收到以下错误:
连接到远程服务器PC失败,错误消息如下:WinRM无法完成该操作。验证指定的计算机名是否有效,…+CategoryInfo:OpenError::String)[],PSRemotingTransportException+FullyQualifiedErrorId:WinrOperationTimeout,PSSessionStateBreaked
我的意思,是否有方法提升我在远程主机上的权限,以便我可以通过此脚本远程配置此任务…您连接到的服务器名称错误,不在DNS中,或者您正在获得防火墙。如果您的环境中启用了UAC,请查看。