标签: powershell

在多个 OU 上获取 ADUser 并过滤结果

该脚本应该从多个 OU 中获取用户并将用户分配给一个变量,然后从该变量中获取用户并根据超过 30 天的上次登录日期过滤每个用户。然后它会导出到 CSV 文件,其中包含我想要的一些信息。

问题是,当我到达foreach部分时,它搜索整个目录并且不使用我提供的变量中的用户。

任何批评也非常感谢。

$30days = (get-date).adddays(-30)

$Users1 = Get-ADUser -SearchBase 'OU=Users,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'
$Users2 = Get-ADUser -SearchBase 'OU=Users-Remote,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'
$Users3 = Get-ADUser -SearchBase 'OU=Contractors,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'
$Users4 = Get-ADUser -SearchBase 'OU=Temps,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'
$Users5 = Get-ADUser -SearchBase 'OU=Users,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'
$Users6 = Get-ADUser -SearchBase 'OU=Users,OU=US-Location,OU=Americas,DC=Domain,DC=Domain,DC=com' -LdapFilter '(UserPrincipalName=*)(extensionAttribute9=*)'

$Users = $Users1,$Users2,$Users3,$Users4,$Users5,$Users6 
$useraccountsover30days = foreach ($user in $($Users)){Get-ADUser -filter {lastlogondate -le $30days} -Properties lastlogondate}

$lastlogonreadable = $useraccountsover30days | Select-Object SamAccountName,lastlogondate

    $lastlogonreadable | …
Run Code Online (Sandbox Code Playgroud)

powershell active-directory windows-server-2008-r2 powershell-v3.0

2
推荐指数
1
解决办法
2万
查看次数

如何在 powershell 中等待虚拟机的启动/停止

我有这个 powershell 脚本,我正在调用它来备份我们客户的虚拟机:

# Author: Vladimir Eremin
# Created Date: 3/24/2015
# http://forums.veeam.com/member31097.html
# 

##################################################################
#                   User Defined Variables
##################################################################

# Names of VMs to backup separated by comma (Mandatory). For instance, $VMNames = “VM1”,”VM2”
$VMNames = "ZIMBRA"

# Name of vCenter or standalone host VMs to backup reside on (Mandatory)
$HostName = "TGDALLAS"

# Directory that VM backups should go to (Mandatory; for instance, C:\Backup)
$Directory = "H:\backups"

# Desired compression level (Optional; Possible values: 0 - None, 4 …
Run Code Online (Sandbox Code Playgroud)

powershell hyper-v windows-server-2012-r2

2
推荐指数
1
解决办法
5105
查看次数

powershell计划任务即使完成也总是显示正在运行

我有一个 PowerShell 脚本设置为每天作为计划任务运行,它的设置操作为:运行程序 PowerShell.exe 参数:-executionpolicy bypass -file D:\Scripts\SomeScript.ps1

脚本成功完成,在任务管理器中我可以看到 PowerShell 启动然后关闭,但任务计划程序仍然显示它正在运行。

对于如何解决这个问题,有任何的建议吗?

powershell scheduled-task task-scheduler windows-server-2012-r2

2
推荐指数
1
解决办法
9877
查看次数

如何在远程计算机上查看 Windows 10 的版本?

从 Windows Server 2012 R2 开始,我想查看我网络上的哪些工作站已更新到 Windows 10 版本 1511、1607 等。

澄清一下,1511 和 1607 是我要查找的数字。

我不想登录每个工作站(我可能有 50 个或更多)。我不太关心版本或内部版本号,除非它们可以以某种方式轻松确定版本。

powershell windows-server-2012-r2 windows-10

2
推荐指数
1
解决办法
3万
查看次数

在 unattend.xml 中从服务器运行 PowerShell 脚本

目前,我们正在使用用于基本设置的 unattend.xml 文件部署带有 Windows 部署服务 (WDS) 的 Windows 10 计算机。有时,有些机器不会自动激活窗口(我们使用的是 OEM 许可证)。这似乎只发生在以前没有激活 Windows 的新机器上。

为了“绕过”这个问题,我创建了一个小的 powershell 脚本,它从 bios/uefi 获取 windows 密钥并用这个密钥激活 windows 副本。该脚本运行良好,我想将它添加到 unattend.xml 以在安装后自动运行它。我想将脚本存储在我们的文件服务器上(以避免每次更改脚本时都更改图像)并从那里运行它。我必须在 unattend.xml 文件中的何处进行配置?这甚至可能吗?

我在 serverfault 上找到了一个主题(如何在 WDS 部署的专业传递期间运行 PowerShell 脚本?),他们在那里讨论了这个问题。在评论部分,他们谈论将其添加到 OOBE 和自动登录部分。由于我有点困惑(而且这个话题真的很老),我想问: - 我是否必须使用正确的凭据配置自动登录并在此自动登录用户下运行脚本?如果是这样:这是如何在 unattend.xml 文件中完成的?

powershell unattended wds windows-pe windows-10

2
推荐指数
1
解决办法
3万
查看次数

在计划任务中创建多个触发器

服务器 2012

我有一个现有的计划任务,我想向其中添加多个触发器。

我这样做:

$trigger = New-ScheduledTaskTrigger -At 1PM -Once
Set-ScheduledTask -TaskName "Task Name" -Trigger $trigger
Run Code Online (Sandbox Code Playgroud)

它将覆盖已经存在的触发器。

但是,我想创建多个触发器。

我试试这个:

$trigger = New-JobTrigger -Once -At 1PM 
Add-JobTrigger -Trigger $trigger -Name "Task Name"
Run Code Online (Sandbox Code Playgroud)

和这个:

$trigger = New-ScheduledTaskTrigger -Once -At 1PM
Add-JobTrigger -Trigger $trigger -Name "Task Name"
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都会收到错误消息“找不到名称为任务名称的计划作业定义”(那里有一个名为“任务名称”的任务)

我需要做什么才能简单地向单个任务添加多个触发器?

powershell task-scheduler windows-server-2012

2
推荐指数
1
解决办法
8165
查看次数

Powershell 脚本将运行但屏幕捕获未完成,为什么?

我有一个 powershell 脚本来捕获屏幕截图。如果在 powershell 或 ISE 中运行它,它运行良好,可以毫无问题地进行屏幕截图。当我在 Windows Task Scheduler 上安排任务时,它只会保存一个空白图像而不是屏幕截图。任何想法为什么?

脚本:

$path = "\\somelocation\" 
$fileName = "Test"
$date = Get-Date -Format yyyyMMdd-hhmm
$file = $path + $filename + $date + ".bmp" 
Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing
# Gather Screen resolution information
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
# Create bitmap using the top-left and bottom-right bounds
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
# Create Graphics object
$graphic = [System.Drawing.Graphics]::FromImage($bitmap) …
Run Code Online (Sandbox Code Playgroud)

powershell scheduled-task task-scheduler

2
推荐指数
1
解决办法
1939
查看次数

Start-Service 和 Set-Service -Status Running 有什么区别?

我在一堆服务器上将服务从禁用状态更改为运行状态,启动类型为自动,并且我在网上寻找如何远程执行此操作,并使用 Set-Service 作为远程启动类型工作,但出于某种原因做一个Get-Service | 启动服务给了我一个错误。我找到了一个网站,上面说您需要执行 Set-Service -Status Running 操作,并且确实有效,但这真的启动了服务吗?那样做和在本地做启动服务有区别吗?

这是我的最终命令,因为该站点还让我了解了如何执行 1-liner:

Get-Service -ComputerName SERVER -Name "SERVICE*" | Set-Service -StartupType Automatic -PassThru | Set-Service -Status Running
Run Code Online (Sandbox Code Playgroud)

我喜欢这样,但似乎需要几秒钟才能使用 Start-Service 命令启动的服务会立即设置为使用 Set-Service 命令运行,这意味着它可能实际上并未启动服务。

我确定没问题,但我很偏执,想确定一下。

windows powershell service windows-server-2012-r2

2
推荐指数
1
解决办法
1158
查看次数

为什么此 PowerShell AD 查询中缺少“域用户”组?

我运行以下 PowerShell 脚本来比较组列表....

$dasMem = Get-ADUser -Server "<some-srv>" -Identity "<some-usr>" -Properties MemberOf | Select MemberOf
$blahx = $dasMem.MemberOf | % { $_ -replace "^CN=", "" } | % { $_ -replace ",.*$", "" } | sort
$blahx
Run Code Online (Sandbox Code Playgroud)

当我得到列表时,我最终得到了一个缺失的组,Domain users我认为这是一个标准的默认组。当我提取脚本时,它是否有任何原因丢失?

需要明确的是,我能够在 中看到该组Active Directory Users and Computers,但无法从上面的脚本中看到。

powershell active-directory groups

2
推荐指数
1
解决办法
2084
查看次数

如何让 DNS 服务器 cmdlet 在 Windows 10 中的 PowerShell 上工作?

当我尝试使用 DNS cmdlet 时,出现“无法识别”错误...

PS C:\Users\josh\Documents\GitHub\GoDaddy> get-dnsserverresourcerecord
get-dnsserverresourcerecord : The term 'get-dnsserverresourcerecord' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that 
the path is correct and try again.
At line:1 char:1
+ get-dnsserverresourcerecord
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (get-dnsserverresourcerecord:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)

如何将这些功能导入 Windows 10?

powershell

2
推荐指数
2
解决办法
9753
查看次数