当我尝试执行以下 PowerShell 命令时,出现错误。
命令 :
*PS 证书:\currentuser\authroot> gci | where 主题-like “ UTN ”*
错误如下:
Where-Object : 无法绑定参数“FilterScript”。无法将“System.String”类型的“subject”值转换为“System.Management.Automation.ScriptBlock”类型。在行:1 字符:12 + gci | 其中 <<<< 主题 -类似“ UTN ”+ CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException +fullyQualifiedErrorId :CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand
我正在使用 Windows PowerShell ISE。
高度赞赏可行的解决方案
有没有一种方法可以在运行特定应用程序时将窗口透明地设置为大写。对于奖励积分,当应用程序终止时,我应该能够恢复正常(非大写锁定模式)。
我用谷歌搜索并浏览了 SO/SF,但我什至不知道从哪里开始找到答案。
谢谢
我想创建一个维护脚本,该脚本将在我们的每台服务器上运行以清除常见的 drop/archive 目录。脚本最好将参考文件用于文件夹路径和所需的时效限制。然后脚本将清除超过老化限制的文件路径。输入参考文件如下所示:
c:\logs\iis\siteA\ 30
c:\logs\job1\ 60
e:\archive\clientA\ 90
Run Code Online (Sandbox Code Playgroud)
第一个组件是文件路径;第二个是文件应该保留的天数,用空格隔开。
现在对于脚本,我有以下内容;然而,我尴尬地缺乏脚本经验。(我更注重网络)
#Attempted loop
Foreach ($ParentDir = Get-Content .\paths.txt $arg1, $arg2)
{$limit = (Get-Date).AddDays(-$arg2)
$path = $ParentDir
# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force}
Run Code Online (Sandbox Code Playgroud)
我觉得逻辑很接近,但我的语法关闭了。我的方法可行吗?有没有更好的办法?你能帮忙解释一下语法吗?使用 poweshell v3。
我是 AD 和 Powershell 的新手,所以如果我使用了错误的术语,请原谅我。
我有一系列名为“ABC-something”的 50 多个 Active Directory 组。每个活跃用户都需要完全属于一个组。用户也是用于不同目的的其他组的成员,不应影响此练习。
由于我们正处于重大举措之中,我的人口是一个不断变化的目标。我正在处理大约 1000 个用户,因此导出所有用户的所有成员资格并不理想。
我希望能够编写一个脚本,该脚本将返回属于多个 ABC* 组的每个用户的用户 ID(或 samAccountName),我可以按需运行。(我假设编写一个脚本来查找不在组中的活动 AD 用户是一个完全不同的问题。)
戴上我的数据库帽子,我看到的逻辑如下:
1) 遍历所有名为 ABC* 的组。对于每个人,捕获所有组成员。我应该在内存中得到一个表或对象看起来像
Group1 PersonA
Group1 PersonB
Group2 PersonB
2)找到一种方法来对这个列表进行分组、计数或迭代。
这就是我卡住的地方,因为到目前为止我看到的 Powershell 示例在导出或显示数据之前并没有对数据进行太多操作。
您能否建议一个示例脚本来帮助我入门,或者至少指向有关在 Powershell 中操作数据的在线资源?
我对格式列表有一个奇怪的行为。当我将以下代码直接粘贴到 shell 中时 - 一切都像魅力一样:
@("Administrator","SomeUser","SomeOtherUser") |% {
$uname = $_;
$u = gwmi win32_useraccount |? { $_.Name –eq $uname }
if (-not $u) {
write-host ("[-] "+ $uname + " does not exist!")
} else {
write-host ("[+] "+ $uname + ":")
$u
}
}
@("Administrator","SomeUser","SomeOtherUser") |% {
$uname = $_;
gwmi win32_groupuser -computer . | select GroupComponent,PartComponent |? { $_.PartComponent -match ",Name=`""+$uname+"`""} | fl *
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将相同的代码放入一个函数中时,比如说 test 并调用 test,PowerShell 会抛出一个关于 format-list 的错误。我不知道为什么 - 也许我一直在寻找错误的一端,但我没有找到任何东西。
function test { …Run Code Online (Sandbox Code Playgroud) 我已经多次使用 Get-ADUser 和 Get-ADComputer 来帮助解决系统中的问题。
我已经看到了通过注册表、PsLoggedon.exe和其他脚本来识别哪个用户登录到特定机器的几种方法,但由于我不是真正的网络管理员,我经常被拒绝访问。这很好,因为我对挖掘那么深并不感兴趣。
我所需要的只是以某种方式确定哪些用户在一台机器上有一个帐户(配置文件)(或哪些机器有一个用户帐户),这样我就可以联系他们并在他们的 IP 地址出现异常时帮助他们。
这两个开箱即用的对象之间绝对没有关系吗?
我的职业是 Linux 系统管理员,但我不得不做一些 powershelling。我的问题是这样的:
我使用以下命令从 AD 获取活动用户列表:
$allusers= get-aduser -Filter {Enabled -eq $true} | FT samAccountName
Run Code Online (Sandbox Code Playgroud)
我的意图是 $allusers 变成一个数组,其中填充了 get-aduser 命令的输出行。在填充数组后立即弹出此块似乎确认确实如此。
for ($i; $i -le $allusers.length; $i++) {
$allusers[$i]
}
Run Code Online (Sandbox Code Playgroud)
伟大的!所以现在我想检查给定的用户名是否存在于该数组中。我看到数组包含一个非常方便的“Contains()”函数,看起来它应该符合我的目的。
echo $allusers.Contains("joeq")
Run Code Online (Sandbox Code Playgroud)
可惜!我收到此错误:
Method invocation failed because [System.Object[]] doesn't contain a method named 'contains'.
Run Code Online (Sandbox Code Playgroud)
在 C:\Users\dylanh\jirauserpurge.ps1:33 char:24 + echo $allusers.contains <<<< ("joeq") + CategoryInfo : InvalidOperation: (contains:String) [], RuntimeException +fullyQualifiedErrorId : MethodNotFound
嗯...好吧,让我们去“老skool”
for ($i; $i -le $allusers.length; $i++) {
if ($allusers[$i] -eq "joeq") {
echo "joeq present"
} …Run Code Online (Sandbox Code Playgroud) 我可以覆盖这个命令吗?我想在 Powershell 中执行“Get-ChildItem”命令时做我自己的工作。
如何查看由 Get-ADUser在后台执行的 LDAP 查询,即。这个命令
Get-ADUser -Filter * -Properties * | Where { $_.Enabled -eq $True } | Where { $_.PasswordNeverExpires -eq $False } | Where { $_.PasswordExpired -eq $False }
Run Code Online (Sandbox Code Playgroud)
我想知道发送到 Active Directory 服务器的确切 LDAP 查询。
编辑:我正在尝试将一些 Powershell 脚本转换为 Python,因此我需要可以提供给 python-ldap 的原始 LDAP 查询。
Edit2:Active Directory 管理中心有很好的学习 LDAP 查询的功能。在全局搜索中,您可以使用关键字和勾选复选框来构建查询,然后单击Convert to LDAP。享受漂亮而复杂的 LDAP 查询。

我有一个脚本将虚拟机从一个数据存储移动到另一个。我还有其他逻辑来保护存储后端和结构免于过度订阅并等待在特定时间提交新请求(业务要求)。我只移动数据存储而不是主机。我在 Move-VM 周围有一个 try catch 块,因为我想处理故障。我运行脚本的前两三次只发生了一些错误,并且按我的预期进行了处理。最近 5 次移动返回错误,但虚拟机移动请求成功,如我在 vCenter 中看到的任务所示。这项工作也顺利完成。Move-VM 没有使用 RunAsync 开关。什么会导致 Move-VM 返回错误但成功提交移动请求。
$VMs = Get-VM -Name $ComputerName
$CurrentDataStores = Get-Datastore
foreach ($VM in $VMs){
foreach ($store in $CurrentDataStores){
if ($store.name -eq "$Datastore"){
$rawDatastore = $store
}
if ($store.id -Match $VM.DatastoreIdList){
$VMDatastore = $store.name
}
}
if ($VMDatastore -eq "$Datastore"){
Write-Output "$VM : is already on requested Datastore"
}
else{
try {
Move-VM -VM $VM -Datastore $rawDatastore -ErrorAction Stop
}
catch {
Write-OutPut "$VM : Unable to move …Run Code Online (Sandbox Code Playgroud) powershell vmware-esx vmware-vcenter vmware-vsphere powercli
powershell ×10
windows ×2
batch ×1
filesystems ×1
powercli ×1
scripting ×1
vmware-esx ×1
windows-7 ×1