标签: powershell

PowerShell 计划作业未在启动时运行

我正在尝试创建一个在 Windows Server 2012 R2 Core 上启动时运行的作业。该作业运行连接到网络共享的脚本,然后安装位于该共享上的 VHD。

脚本本身可以工作,当使用-RunNow参数注册时,作业会被触发并按预期运行。使用Start-JobCmdlet运行作业也可以正常工作。

但是,作业不会像触发器中指定的那样在启动时触发。

我为创建工作所做的工作:

$Trigger = New-JobTrigger -AtStartup  
$JobOptions = New-ScheduledJobOption -RunElevated -RequireNetwork  
Register-ScheduledJob -FilePath C:\Scripts\Test.ps1 -Name Test -Trigger $Trigger -ScheduledJobOption $JobOptions -RunNow
Run Code Online (Sandbox Code Playgroud)

这样做后,我可以清楚地看到它的工作结果。但是当重新启动服务器时,结果不存在,但作业说它是在重新启动后不久运行的。

powershell windows-server-2012-r2

5
推荐指数
1
解决办法
1701
查看次数

在 Windows 上创建代码签名证书以签署 PowerShell 脚本

根据本指南,我尝试创建用于签署 PowerShell 脚本的证书:

CD C:\OpenSSL-Win32\bin
REM Create the key for the Certificate Authority.  2048 is the bit encryptiong, you can set it whatever you want
openssl genrsa -out C:\Test\ca.key 2048
openssl req -config C:\OpenSSL-Win32\bin\openssl.cfg -new -x509 -days 1826 -key C:\Test\ca.key -out C:\Test\ca.crt
REM Now I'm creating the private key that will be for the actual code signing cert
openssl genrsa -out C:\Test\codesign.key 2048
openssl req -config C:\OpenSSL-Win32\bin\openssl.cfg -new -key C:\Test\codesign.key -reqexts v3_req -out C:\Test\codesign.csr
openssl x509 -req -days …
Run Code Online (Sandbox Code Playgroud)

windows powershell certificate openssl

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

如何确定远程擦除是否成功?

环境:Office 365 在线版。交换 v15.1.933.16。

我们的一位全球管理员通过交换管理中心在移动设备上执行远程擦除,然后从 EAC 中“删除”了该设备。因此,不再可能在 GUI 中确定擦除是否成功。

任何熟悉用于检查擦除命令状态的 cmdlet 的人吗?到目前为止,我的搜索没有找到任何东西。谢谢

编辑:谢谢 BasitanW,但是我应该更清楚地表明管理员在请求擦除后删除了该设备。Exchange 管理中心中没有设备可见,并且 Get-MobileDevice 命令无法为 PS 中的此邮箱生成结果。

powershell activesync microsoft-office-365 exchange-2013

5
推荐指数
1
解决办法
2987
查看次数

如何在不进行类型转换和拆分的情况下直接使用 powershell 对象属性?

我创建了一个小脚本来将名为 pssfulllocation 的 Active Directory pc 属性值从一台 pc 传输到另一台 pc。

为了实现这一点,我必须使用类型转换+拆分..

这是有效的脚本

$oldpc=read-host "Enter old pc name"
$newpc=read-host "Enter new pc name"
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation 

  $itemcast=[string]$my
  $b = $itemcast.Split("=")[1]    
  $c=$b.Split("}")[0]

Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$c"}
Run Code Online (Sandbox Code Playgroud)

并且输出将很好地完成预期的工作..以这种方式..这是期望的结果..

在此处输入图片说明

但是,如果我不按照以下脚本使用类型转换 + 拆分--

$oldpc=read-host "Enter old pc name"
$newpc=read-host "Enter new pc name"
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation 
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$my"}
Run Code Online (Sandbox Code Playgroud)

输出在下面..这不是我想要的..

在此处输入图片说明

简而言之,如果我不使用类型转换 + 拆分输出将添加为 @{pSSFullLocation=C/BRU/B/0/ADM/1 但它只能添加为 C/BRU/B/0/ADM/1按照这个: …

scripting powershell active-directory

5
推荐指数
1
解决办法
400
查看次数

如果查询解析策略包含客户端子网的 NE 运营商,则 DNS 策略无法正确解析区域范围中的 CNAME

我相当确定我已经发现了一个错误,但我正在尝试理解它并进行完整性检查。

设想

一种策略,如果请求正在查找AND客户端 IP 不在特定子网中的特定CNAME记录,则该策略匹配并生成一条记录,该记录的目标不在策略涵盖范围内且不存在于范围内。

例子:

  • 区域 = example.com
  • example.com默认范围内的记录:
    • testme IN A 10.1.2.3
    • testOther IN A 10.11.11.11
  • 区域范围 = TesterScope
  • 录入TesterScope:
    • testme IN CNAME testOther.example.com.
  • 客户端子网MySubnet包含10.8.8.0/24

QRP 与EQ客户端子网

  • MyQRP使用以下配置查询解析策略:
    • 条件 = And
    • 内容 = TesterScope
    • 标准:
      • FQDN = EQ,testme.example.com.
      • 客户端子网 = EQ,MySubnet

这将产生预期的结果,即:

  • 如果请求进入testme.example.com从IP内MySubnet(应匹配),它会返回正确(和解决)的CNAME记录,即使CNAME必须在默认范围(该QRP特别是当应该只匹配来解决FQDN是testme.example.com不是testOther.example.com)。因此,结果是10.11.11.11,这是正确的。 …

domain-name-system powershell active-directory windows-server-2016 dns-policies

5
推荐指数
1
解决办法
1042
查看次数

如何在 2012r2 上访问/获取 Powershell DNS 服务器模块?

我正在使用 Server 2012R2 服务器。我想使用PowerShellget-dnsserverresourcerecord的dns 服务器模块中的 comdlets 。

它在 ISE 或模块列表中不可用。

我有 PowerShell 4.0 版。我在服务器 2012r2 上运行。我在哪里可以找到这个模块?是否可以下载或启用此模块?我查看了很多文档和帖子,它们的编写方式都表明应该安装模块。

我的计划是使用此服务器对另一台运行 DNS 服务器的 2012r2 服务器执行 DNS 命令。该服务器本身没有安装 DNS 服务器。

谢谢你。

domain-name-system powershell windows-server-2012-r2 powershell-v4.0

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

OpenSSH 的公钥认证 Windows 端口

我一直在尝试在运行 Windows Server 2012 R2 的 VM 上使用OpenSSH的PowerShell 端口进行公钥身份验证。

我忠实地遵循了安装说明,并确保我的文件权限对于.ssh\authorized_keys. (无法在 Win32-OpenSSH wiki 中发布特定说明的链接,因为我太少,无法发布两个以上的链接,请参阅下面的评论)。

我可以使用用户名/密码按预期从 linux 主机登录到 windows 主机。然而,密钥认证不走运。

本地(linux 主机)配置

我的本地 .ssh/config文件包含:

Host remotehostname
    HostName remotehostname
    User remoteuser
    Port 22
    IdentityFile /home/myusername/.ssh/id_dsa
Run Code Online (Sandbox Code Playgroud)

本地.ssh目录中的权限显示正确:

[me@localhost.ssh]$ ls -ltrh
total 56K
-rw------- 1 cengadmin cengadmin 1.6K Sep 11 10:01 known_hosts
-r-------- 1 cengadmin cengadmin  672 Sep 11 10:06 id_dsa
-r-------- 1 cengadmin cengadmin  580 Sep 11 10:13 config
Run Code Online (Sandbox Code Playgroud)

远程(windows 主机)配置 …

powershell ssh known-hosts windows-server-2012-r2

5
推荐指数
1
解决办法
9055
查看次数

未加载指定的模块“MSOnline”,因为在任何模块目录中都找不到有效的模块文件

对于我的一个应用程序,我有一个 Windows 服务(在 Windows Server 2012 R2 x64 上),它的作用是在不同的计划和触发器上执行许多作业。其中之一是在 Office 365 上重置用户密码。运行该服务的服务器安装了 Microsoft Online Services 登录助手和用于 Windows PowerShell 的 Microsoft Azure Active Directory 模块(MSOnline 版本 1.1.166.0)。

从 PowerShell 我可以成功地与我的用户调用以下内容。

$> $cred = Get-Credential
$> Connect-MsolService -Credential $cred
Run Code Online (Sandbox Code Playgroud)

如果我以帐户身份运行 PowerShell,我的服务启动时也能正常运行。从 Windows 服务运行重置密码功能失败并显示以下消息:

The term 'Connect-MsolService' 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. …
Run Code Online (Sandbox Code Playgroud)

powershell .net azure microsoft-office-365 azure-active-directory

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

如何使用挂载点对卷进行碎片整理?

我正在尝试通过优化卷 cmdlet 对卷进行碎片整理。我已经通过了挂载点路径。但它失败如下。

PS C:\Users\Administrator> Optimize-Volume -Path C:\Testvol1\disk
Optimize-Volume : No MSFT_Volume objects found with property 'Path' equal to 'C:\Testvol1\disk'.  Verify the value of the property and retry.
At line:1 char:1
+ Optimize-Volume -Path C:\Testvol1\disk
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Testvol1\disk:String) [Optimize-Volume], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_Path,Optimize-Volume
Run Code Online (Sandbox Code Playgroud)

如何传递Optimize-volume的路径?或者有没有其他方法可以使用可用的 mounthpath 进行碎片整理?

powershell defrag diskmanagement powershell-v3.0

5
推荐指数
1
解决办法
763
查看次数

列出没有远程服务器管理工​​具 (RSAT) 的 Windows 域计算机

我想检索属于我的 Windows 7 工作站所属的 Windows 域的计算机列表。

我想在几乎不需要额外安装的情况下实现这一点,尤其是 Microsoft 提供的 230MB 远程服务器管理工​​具包。

到目前为止,我看到的选项包括 DSQuery 工具(RSAT 包的一部分)和 PowerShell 的 ActiveDirectory 模块(也是 RSAT 包的一部分)。

  • 是否可以选择单独使用 PowerShell 模块(仅限脚本),或者是否真的需要 230MB 工具集的每一点?
  • 我错过了另一个选择吗?

关于将执行查询的用户的权限,我希望能够使用非特权域用户,但如果没有非特权替代方案,管理员也是一个选项。

我还将提到该net view命令显示同一子网中或工作站“附近”的几台计算机,但显然不是域中的所有计算机。另一方面,该命令不net view /domain:<domain_name>显示任何结果,并返回错误 6118(这很奇怪,因为我希望net view也不会显示任何结果)。

windows powershell active-directory domain dsquery

5
推荐指数
1
解决办法
509
查看次数