标签: powershell

Powershell 命令仅在作为脚本运行时失败并显示“无效的命名空间”,而不是在控制台中

以下脚本在最后一行失败Get-WmiObject : Invalid namespace:

$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("domain\user", $password )
Write-Host "Entering PS Session..."
Enter-PSSession -Computer hyperVServer -Credential $cred
Start-Sleep -s 5
$server = "servername"

$query = "SELECT * FROM Msvm_ComputerSystem WHERE ElementName='" + $server + "'"
$VM = get-wmiobject -query $query -namespace "root\virtualization" -computername "."
Run Code Online (Sandbox Code Playgroud)

但是,当我将其一一输入控制台时,它运行没有问题。

Start-Sleep由于一些时间问题,我添加了...... 会话需要几秒钟才能真正打开。任何想法为什么该行仅在作为脚本运行时才会失败?

powershell

4
推荐指数
1
解决办法
2486
查看次数

使用 Powershell,如果最近的事件日志事件超过一小时,则触发操作

我们有一台服务器运行我们的备份软件,该软件有自己的事件日志。我可以使用以下命令检索最新的事件日志条目:

Get-EventLog EventLogName -ComputerName server.example.com -newest 1
Run Code Online (Sandbox Code Playgroud)

这给了我这样的结果:

Index Time          EntryType   Source                InstanceID Message
----- ----          ---------   ------                ---------- -------
64292 Aug 13 15:51  Information BackupSoftware             29593 Transfer of 1096 KB...
Run Code Online (Sandbox Code Playgroud)

如果最近事件的时间戳超过一小时,我想做的是触发一个操作(例如,启动第二个脚本)。

任何帮助,将不胜感激。

windows powershell windows-event-log

4
推荐指数
1
解决办法
1280
查看次数

“OtherAttributes”ADGroup 电子邮件地址的新 ADGroup 参数?

上下文:我正在尝试使用 PowerShell 创建带有电子邮件地址的 Active Directory 组。

问题:“电子邮件”字段对应的属性名称是什么?我在网上搜索过,这似乎是一个不受欢迎的要求。:)

这是我执行命令的方式:

New-ADGroup -SamAccountName $groupAlias `
    -Name $groupName `
    -GroupScope Global `
    -GroupCategory Security `
    -OtherAttributes @{'Email'=$groupEmail} `
    -Path "OU=Distribution List,OU=Groups,DC=SAMPLE,DC=COM"
Run Code Online (Sandbox Code Playgroud)

powershell active-directory

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

使用静态 IP 查找域中的计算机 - PowerShell

首先让我说我根本不擅长编写脚本或对它们进行故障排除,因此我在这里:)

我试图在 Windows 域网络中找到所有使用静态 IP 地址的计算机,我在网上做了一个小研究,发现了这个 PowerShell 脚本,如下所示:

param ( 
    [string]$LDAPFilter = '(name=*)', 
    [switch]$Verbose 
) 
Get-ADComputer -LDAPFilter $LDAPFilter | 
% ` 
{  
    $name = $_.DNSHostName; 
    if ($Verbose.IsPresent) 
      { Write-Host -ForegroundColor Yellow "Connecting to $name..." }  
    $ints = Get-WmiObject -ErrorAction SilentlyContinue -ComputerName $name ` 
      -Query "select IPAddress, DefaultIPGateway from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE and DHCPEnabled=FALSE"; 
    if ($ints -ne $null) 
        { 
            foreach ($int in $ints) 
            { 
                foreach ($addr in $int.IPAddress) 
                { 
                    $ip = $null 
                    if ($addr -match "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}") 
                    { 
                        $ip = …
Run Code Online (Sandbox Code Playgroud)

windows powershell active-directory domain static-ip

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

使用 Powershell 从 DNS 管理器导出所有主机

虽然我对 powerShell v3 比较陌生,但我可以用它做一些事情,但是,我没有想到的一件事是如何拉出我们的 DNS 管理器(Server 2008 R2)中列出的所有主机。我不需要设置或删除任何内容,只需将列表查询到文本文件中即可。令人惊讶的是,我没有找到一种方法来做到这一点。请问有人知道怎么做吗?

domain-name-system powershell export windows-server-2008-r2

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

如何使用 Powershell 对 TrustedInstaller 拥有的文件设置审核控制?

我正在尝试使用以下 Powershell 脚本对ACLsWin.txt位于\%Windows%\System32(例如aaclient.dll)中的多个文件(在 中列出)设置审核控制:

$FileList = Get-Content ".\ACLsWin.txt"
$ACL = New-Object System.Security.AccessControl.FileSecurity

$AccessRule = New-Object System.Security.AccessControl.FileSystemAuditRule("Everyone", "Delete", "Failure")
$ACL.AddAuditRule($AccessRule)
foreach($File in $FileList)
{
    Write-Host "Changing audit on $File"
    $ACL | Set-Acl $File
}
Run Code Online (Sandbox Code Playgroud)

每当我运行脚本时,我都会收到错误PermissionDenied [Set-Acl] UnauthorizedAccessException。

这似乎是因为这些文件的所有者是TrustedInstaller. 我以管理员身份运行这些脚本(即使我使用的是内置管理员帐户),但它仍然失败。我可以使用“安全”选项卡手动设置这些审计控制,但至少有 200 个文件手动设置可能会导致人为错误。

如何TrustedInstaller使用 Powershell绕过并设置这些审计控件?

powershell permissions windows-7 audit

4
推荐指数
1
解决办法
4538
查看次数

通过 Powershell 从 Win 2008R2 服务器或 Win7 添加 DNS A 记录到 Win 2008R2 服务器

我最近发现可以使用一个不错的 cmdlet 简单地自动化 DNS 条目管理:

Import-Module DnsServer
Add-DnsServerResourceRecordA -Name mail2 -IPv4Address 192.168.0.10 -ZoneName powershell.local
Run Code Online (Sandbox Code Playgroud)

我想在 Windows 2008 R2 机器(它在 Web 服务中调用)上运行这个,以更改另一台机器上的 DNS 条目。我看到 Powershell v3 已经支持这一点,但我也无法让它在 Powershell v4 上工作,显然该模块无法导入。这是因为我在 Windows 7 机器上测试过吗?我有一台 Windows 7 开发机器,我想在上面开发和调试它。是否有可能我必须以某种方式重新加载这个模块?如果是,我该怎么做?

我在 MS 页面上看到 Windows Server 2012 支持它,但是我没有 Win2012 系统来测试它以确认和切换生产服务器 2012 目前是不可能的。

非常感谢提前

domain-name-system powershell windows-7 windows-server-2008-r2

4
推荐指数
1
解决办法
7514
查看次数

如何将 AD 密码设置为过期/使用 PowerShell 更改

我需要重置一整套用户密码,然后将它们设置为已过期或“用户下次登录时必须更改密码” 使用 SetADAccountPassword 可以轻松更改密码。

查看 SetADAccountControl cmdlet 说明表明说明中有一个“PasswordExpired”参数,但在文本的其余部分中没有提及该参数。如果我尝试它,它不存在。

理想情况下,我希望有一个相当简单的 Powershell 命令来完成它!我在服务器上没有任何其他脚本语言。

谢谢。

powershell active-directory password-reset

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

用于 Active Directory 清理的 Powershell 帮助

我刚刚签订了一份合同,为一家大公司清理 Active Directory 系统。有人告诉我这将是一项非常繁忙的工作,但在查看系统并看到它是多么的杂乱无章之后,我意识到我将无法充分履行我的职责。本质上,这家公司有太多不活跃但还不能删除的帐户。我想对某些帐户执行“尖叫测试”并稍后删除。如果这只是几千个非活动帐户,那将是一个故事,但不幸的是它有几千个(我还没有得到一个确切的数字,但它超过了 20,000 个)。我很好奇是否有人知道除了使用 Hyena 获取报告然后逐一浏览之外,还有一种方法可以以自动化方式对这些信息进行分类。

powershell active-directory users

4
推荐指数
1
解决办法
2539
查看次数

如何检测Windows中的文件夹中是否添加了任何文件?

是否可以检测文件夹中是否添加了任何文件?包括子文件夹。

例如,检查文件夹 c:\data-files\ 或其子文件夹中是否添加了任何文本文件 *.txt。

该文件夹也可以是另一台机器的共享文件夹。

windows powershell

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