如何解决在多台远程计算机上运行Powershell脚本
美好的一天。
如果这是一个重复的问题,我深表歉意,但是我所做的研究使我更加困惑。我正在尝试运行以下Powershell脚本来删除某些计算机上的文件夹:
$users = get-childitem c:\users
foreach ($user in $users)
{
$folder = "C:\Users\" + $user + "\AppData\Local\Microsoft\OneDrive"
Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue
}
该脚本似乎有效。如何在远程计算机列表上使用此脚本?
谢谢。
解决方法
您可以将Invoke-Command cmdlet与ComputerName参数一起使用。示例:
Invoke-Command { $env:ComputerName } -ComputerName SOMEMACHINE
,
dugas指出,您可以使用Invoke-Command通过-ScriptBlock
和-ComputerName
参数执行远程脚本执行。
# Create script block using surrounding {}
$sb = {
$users = Get-Childitem C:\Users -Directory -Name
foreach ($user in $users) {
$folder = "C:\Users\" + $user + "\AppData\Local\Microsoft\OneDrive"
Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue
}
}
# Create array of computer names since -ComputerName accepts an array
$computers = 'computer1','computer2','computer3'
Invoke-Command -ComputerName $computers -ScriptBlock $sb
有许多遍历远程目录的方法。将Get-ChildItem
与-Directory
和-Name
参数一起使用将仅返回C:\Users
下的文件夹名称。
如果您使用的是Active Directory域,请不要让脱机计算机,笨拙的计算机等困扰,而请SysAdmin使用组策略首选项创建一次运行计划任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。