这个脚本很好用
Get-ADUser -filter * | % { Set-ADUser $_ -HomeDrive "H:" -HomeDirectory ('\\Server \home$\' + $_.SamAccountName) }
但是,如果我添加,如果不是变量,它不工作不确定它出错了什么
ForEach( $User in (Get-ADUser -filter * | Select -ExpandProperty SamAccountName ) ){ if( -not ( HomeDrive "H:" HomeDirectory ('\\server\home$\' + $_.SamAccountName)) | Set-ADUser $_ -HomeDrive "H:" -HomeDirectory('\\HYDAD1\home$\' + $_.SamAccountName)) }
答案 0 :(得分:1)
我认为你只需要一点语法帮助,也许还需要一些结构。如上面的评论中所述,namespace Drupal\mymodule\Access;
use Drupal\Core\Access\AccessCheckInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\node\NodeInterface;
use Symfony\Component\Routing\Route;
/**
* Check the access to a node task based on the node type.
*/
class NodeTypeAccessCheck implements AccessCheckInterface {
/**
* {@inheritdoc}
*/
public function applies(Route $route) {
return NULL;
}
/**
* A custom access check.
*
* @param \Drupal\node\NodeInterface $node
* Run access checks for this node.
*/
public function access(Route $route, NodeInterface $node) {
if ($route->hasRequirement('_node_types')) {
$allowed_node_types = explode(',', $route->getRequirement('_node_types'));
if (in_array($node->getType(), $allowed_node_types)) {
return AccessResult::allowed();
}
}
return AccessResult::forbidden();
}
}
和Home
是用户对象的属性。为了能够访问它们,您不能事先使用HomeDirectory
,因为这只会将用户的别名作为字符串传递给要使用的管道,并且不会包含这些属性。因此,我们首先要删除该位。接下来,您必须通过引用变量Select -Expand samaccountname
正确地将它们作为属性引用。这看起来像$user
和$user.home -ne "H:"
。您会注意到我还在其中添加了$user.HomeDirectory -ne ('\\server\home$\' + $user.SamAccountName)
。这是not-equals的比较运算符。这会稍微清理一下你的语法,现在让我们看一下结构。
不要使用-eq
语句,而是使用If
语句过滤掉需要注意的用户。由于我们以这种方式执行此操作,因此您使用Where
代替$_
,因为我们还没有真正进入$user
循环。所以这看起来像:
ForEach
现在,如果将其合并到脚本中,它看起来像这样:
(Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)})
答案 1 :(得分:0)
好的,我现在可行了
(Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)}) | % { Set-ADUser $_ -HomeDrive "H:" -HomeDirectory ('\\Server \home$\' + $_.SamAccountName) }