标签: powershell

我可以使用 Powershell 在 windows server 2008 r2 中配置本地组策略设置吗

在 Windows server 2008 r2 中,对于这个手动过程

打开运行>gpedit.msc>计算机配置>windows模板>windows更新>指定内网微软更新服务位置> https://www.10.101.10.10.com

并且还应该启用/禁用状态

我可以知道如何使用 powershell 来做到这一点,比如脚本吗?


这些设置在注册表部分,我在问:

  • 在 GPMC 中,依次展开“计算机配置”、“策略”、“管理模板”、“Windows 组件”,然后单击“Windows 更新”。

  • 在 Windows 更新详细信息窗格中,双击指定 Intranet Microsoft 更新服务位置。

  • 单击“启用”,然后在“设置检测更新的内网更新服务”和“设置内网统计服务器”文本框中的服务器,输入与WSUS服务器相同的URL。例如,在两个框中键入http://XX.XX.XX.XX(其中 servername 是 WSUS 服务器的名称)。

这是否可以从 Powershell 脚本结束?

powershell group-policy windows-server-2008-r2

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

Powershell 脚本计划任务不会结束

我想使用这个Powershell 脚本在 Win7 机器上自动进行一些备份。当从 Powershell 终端手动运行时,脚本按广告运行并在几秒钟后结束(这是一个小备份)。

问题是当我尝试使用任务计划程序自动化该过程时。时机成熟时(或当我手动运行任务时),脚本会运行并正确执行备份。但它并没有回到“就绪”状态,即使我知道它已经结束了。我每次都必须手动停止任务。

现在,我还没有等到任务再次运行时会发生什么,但我认为它不会第二次启动,因为它没有“准备好”。

我该怎么办?

更新1:

我选择的操作是“启动程序”。在“程序/脚本”框中,我有“powershell.exe”,作为参数,我有脚本“*.ps1”文件的路径。

更新1:

我注意到虽然任务没有返回“就绪”,但如果我手动启动它,它会再次运行。

scripting powershell windows-7

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

使用 Powershell 更新用户主目录

我正在尝试将主目录路径更改为一堆用户。

我在 Ppowershell 中编写了一个脚本,它应该像这样更改用户名的路径:

\\serverName\shareName\$_.SamAccountName
Run Code Online (Sandbox Code Playgroud)

问题是我得到了 DistinguishedName 而不是 SamAccountName,如下所示:

\\serverName\shareName\CN=UserName,OU=OuName,DC=domainName,dc=local
Run Code Online (Sandbox Code Playgroud)

这是我写的脚本:

Get-ADUser -Filter * -SearchBase 'ou=XX,dc=domainName,dc=local' | ForEach-Object {
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$_.SamAccountName"
}
Run Code Online (Sandbox Code Playgroud)

谁能看出为什么这不起作用?

powershell windows-server-2012

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

Powershell - 将结果合并到一张表中

我是 PowerShell 的新手。

我正在尝试创建一个报告,显示即将到期的 AD 帐户。

该报告应包括用户名、AccountExpirationDate 和经理。

到目前为止,我有以下几点:

$users = Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object Name,AccountExpirationDate | Sort-Object AccountExpirationDate

$manager = Search-ADAccount -AccountExpiring -TimeSpan "7" | Get-aduser    -Properties Manager | Select-Object @{n="ManagerName";e={(Get-ADUser -Identity $_.Manager -Properties displayName).DisplayName}}
Run Code Online (Sandbox Code Playgroud)

无论如何我可以将结果合并到一张表中吗?

powershell active-directory

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

安装 - 导入 PFX 证书以分离本地帐户的个人存储 - 自动

我一直在思考自动化执行此任务的方法:

我们为客户部署 Windows Server 2008 R2 映像。我们使用 PowerShell(第 2 版)来部署我们的专有软件,并在发货前对系统进行各种其他更改。此 PowerShell 进程在本地管理员帐户下运行,直到它完成并禁用本地管理员帐户。

现在,对于这个问题 - 我正在尝试将 .PFX 客户端证书安装到 SEPARATE 用户的 CurrentUser\My 证书存储中。我们称该用户为“SQL”。

现在证书正在安装在 LocalMachine\My 证书存储下,但我们的一个开发团队担心该位置并希望复制原始设置。

现在,我知道如何通过在我们的部署脚本中添加重新启动步骤并在“SQL”用户下执行此操作来完成这项工作,但我想避免这种情况,因为似乎必须有一种方法可以这是在另一个帐户下完成的。这是我们现在用来将证书安装到 LocalMachine\My 商店的基本代码。假设 $certPath 是 .pfx 的路径,$pfxPass 是 .pfx 的密码。

function Import-PfxCertificate {
param([string] $certPath, [string]$pfxPass)

$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import([string]$certPath, [string]$pfxPass, "Exportable,PersistKeySet")

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.open("MaxAllowed")
$store.add($pfx)
$store.close()
}    
Run Code Online (Sandbox Code Playgroud)

powershell certificate

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

vSphere PowerCLI cmdlet 能否从 PS1 文件执行?

我正在寻找一个管理脚本,它将:

  • 从 vSphere 中删除虚拟机
  • 删除 VM 的 DNS 条目
  • 使用我们的 Windows DHCP 服务器释放 VM 的 IP 地址

我可以通过 vSphere 的 PowerCLI 完成第一项,我可以通过 PowerShell“ Cmdlets”完成最后两项。此外,我可以将这些Cmdlets放在一个*.ps1文件中并从 shell 执行该文件。

初步研究表明,PowerCLI 只是包装/扩展了 PowerShell,并且基本上只是由它自己的以 vSphere 为中心的Cmdlets. 所以我想知道:我可以将 PowerCLI“代码”(Cmdlets等)与其他 PowerShell 代码一起放在 PS1 文件中,并像普通 PS1 一样执行它吗?

domain-name-system dhcp virtualization powershell vmware-esxi

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

无法使用 PowerShell 连接到 Office 365

我想通过powershell连接Office 365,参考教程一个很简单的任务。但显然不适合我。

我想我错过了一个简单但重要的琐事。

一些信息:

  • 许可证是 Office 365 Business Essential
  • Azure AD 正在运行
  • 我可以在其他服务器上使用 powershell 远程处理 (WinRM)
  • 我使用管理员帐户
  • 我使用我的域并尝试了 onmicrosoft.com 域
  • 配置了双因素身份验证(附加安全验证)

我尝试了以下

PS C:\>Import-Module MSOnline
PS C:\>$msolcred = get-credential
PS C:\>connect-msolservice -credential $msolcred
connect-msolservice : The user name or password is incorrect. Verify your user name, and then type your password again.
Run Code Online (Sandbox Code Playgroud)

和

PS C:\> $O365Session = New-PSSession -ConfigurationName Microsoft.Exchange 
    -ConnectionUri https://ps.outlook.com/powershell 
    -Credential $msolcred -Authentication Basic 
    -AllowRedirection
New-PSSession : [ps.outlook.com] Connecting to remote server ps.outlook.com failed with the following error …
Run Code Online (Sandbox Code Playgroud)

powershell azure microsoft-office-365

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

通过 Powershell Remoting 传输文件(如 linux 中的 scp)

在创建一些基于 powershell 的部署脚本的过程中,我非常想念一种通过 Powershell Remoting 将文件快速传输到另一台服务器(通过 Internet)的简单方法,例如 scp for linux。幸运的是,可以通过 Powershell Remoting 激活的东西。我忽略了什么吗?

scripting powershell

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

通过 Invoke-Command 远程执行 Powershell Add-Computer

设想:

在 Azure VM 本地执行时,成功将机器添加到 AD,然后重新启动。

$DomainName = "test.local"
$AdminUserName = "sysadmin"
$Password = <mypass>
$SecurePassword = ConvertTo-SecureString $Password -asplaintext -force
$Credential = New-Object -Typename System.Management.Automation.PSCredential -Argumentlist $AdminUserName, $SecurePassword
$Credential

Add-Computer -DomainName $DomainName -Credential $Credential -Restart -Passthru -Verbose
Run Code Online (Sandbox Code Playgroud)

题:

使用相同的变量,但现在在我的机器上运行脚本,以另一个 Azure VM 作为目标,通过远程 Powershell:

$ScriptBlockContent = { 
Param ($Arg1,$Arg2)
Add-Computer -DomainName $Arg1 -Credential $Arg2 -Restart -Passthru -Verbose}

$Session = New-PSSession -ConnectionUri $Uri -Credential $Credential
Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent -ArgumentList ($DomainName,$Credential)
Run Code Online (Sandbox Code Playgroud)

这在远程执行时失败。为什么 ?

PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent …
Run Code Online (Sandbox Code Playgroud)

powershell active-directory remote

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

如何通过 SID 过滤 Windows 安全事件日志?

我想过滤某个用户的事件日志,但我认为没有按 SAMID 搜索的选项。UserId根据这里,有一个过滤器。在下面的屏幕截图中搜索用户时,以下正确的语法是否正确?

$events = get-winevent -filterhashtable 
  @{ logname='security'; path="Archive-Security-2015-04-14-02-13-02-299.evtx";
  UserId='S-1-5-21-220523388-838170752-839522115-yyyy' }
Run Code Online (Sandbox Code Playgroud)

活动

我收到“未找到符合指定选择标准的事件”。用上面的命令。但是,如果我删除UserId密钥,则会返回一长串列表,因此lognameor应该没有问题path。

powershell windows-event-log powershell-v3.0

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